Astra is a fast paced PICO-8 platformer. The game features an optional collectible called stardust, sprinkled all throughout every level. Collecting certain amounts of stardust lights up the stars on the constellation at the end of the game, with the whole thing being lit up if all dust is collected, so naturally I wanted to see how much dust could be avoided.

Game objectives

  • Avoid dust at all costs
  • Try to go somewhat fast

Comments

I believe most of the base game mechanics are pretty self explanatory, so I'll only go over the relevant speed stuff.

Slides & Jumps

Sliding is the fastest way to move horizontally, but jumping out of a slide does a shorter jump, one that is too short to make most gaps. After a slide ends, there are still 4 frames where jumping will produce a slide jump rather than a regular one, so at times it's best to cut the slide early and walk for 4 frames before jumping.
While stopping the slide by pressing the slide button instantly puts Astra at walking speed, jumping will gradually cause her speed to decrease. Jumping after landing will produce a regular height jump, but the horizontal speed will keep decreasing at the normal rate, rather than instantly dropping to walking speed. If the terrain allows, jumping is the best way to go from a slide to a regular size jump.

Glide Cancels

The first glide Astra does in a jump will set her vertical speed to a predetermined value (probably 0?). This is useful for cutting jumps short and getting to the ground faster to start sliding again.

Bonk Jumps

Sliding into a wall will cause Astra to bonk and get knocked back. Doing a jump during the knockback from the bonk allows her to gain extra height. This allows for some dev-intended(?) skips and general movement optimizations.

Optimization

This TAS was primarily made to see how low the dust count could go, as well as to learn about the game mechanics. As such, speed wasn't a big concern which can be pretty clearly seen especially during the early levels. I was figuring out tech as I went with intentions of going back later and redoing the some of the levels to be more optimal. Unfortunately as it turns out the game is not very sync friendly, which pretty much destroyed my plans unless I wanted to redo the entire run from scratch. While definitely not perfect, I'm still fairly proud of the optimization I did manage to achieve on my first pass and hope it's good enough to be accepted, though I understand if it's not.

ikuyo: Claiming for judging.
ikuyo: Hey rythin, amazing work! This was really fun to watch and judge. Really smart usage of all your movement options.
Accepting to Alternative.
fsvgm777: Processing. (after Coin Fall)


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15558
Location: 127.0.0.1
CoolHandMike
He/Him
Editor, Judge, Experienced player (894)
Joined: 3/9/2019
Posts: 692
After watching for a bit you are avoiding the little sparkling things in the stages which I guess are stardust. At 2:09 could you slide underneath or jump and land on a falling rock to avoid that spinning stardust? The first stage did look a little off, like that jump around 0:23 for example, as you even said in your notes. How hard would it be hard to go back and improve it? A lot of those later levels looked really fast. Good game choice.
discord: CoolHandMike#0352
rythin
She/Her
Skilled player (1142)
Joined: 11/4/2021
Posts: 47
CoolHandMike wrote:
At 2:09 could you slide underneath or jump and land on a falling rock to avoid that spinning stardust?
Unfortunately touching the rock at all kills you.
CoolHandMike wrote:
How hard would it be hard to go back and improve it?
From my testing pretty much impossible unfortunately :< Any changes I made to level 1 immediately caused desyncs on level 2.
CoolHandMike wrote:
A lot of those later levels looked really fast. Good game choice.
Thank you!
ikuyo
She/Her
Judge, Experienced player (505)
Joined: 7/8/2021
Posts: 101
Just checked sync, and the movie desyncs right away in level 1 Could you check if you have a ~/.lexaloffle/pico-8/config.txt file? in my experience that tends to be the culprit for desyncs on PICO-8 games
rythin
She/Her
Skilled player (1142)
Joined: 11/4/2021
Posts: 47
ikuyo wrote:
Just checked sync, and the movie desyncs right away in level 1 Could you check if you have a ~/.lexaloffle/pico-8/config.txt file? in my experience that tends to be the culprit for desyncs on PICO-8 games
Yep, here's the contents of my config:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Configuration for pico-8
// 
// config.txt is read on startup and saved on exit.
// To generate the default config.txt, delete this file.
// 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - -


// :: Video Settings

window_size 896 896 // window width, height
screen_size 0 0 // screen width, height (stretched to window) 
show_fps 0 // Draw frames per second in the corner


// :: Window Settings

windowed 1 // 1 to start up in windowed mode
window_position -1 -1 // x and y position of window (-1, -1 to let the window manager decide)
frameless 0 // 1 to use a window with no frame
fullscreen_method 1 // 0 maximized window (linux)  1 borderless desktop-sized window  2 hardware fullscreen (warning: erratic behaviour under some drivers)
blit_method 0  // 0 auto  1 software (slower but sometimes more reliable)  2 hardware (can do filtered scaling) 



// :: System Settings

foreground_sleep_ms 5 // number of milliseconds to sleep each frame. Try 10 to conserve battery power

background_sleep_ms 20 // number of milliseconds to sleep each frame when running in the background

sessions 20 // number of times program has been run

// (scancode) hold this key down and left-click to simulate right-click
rmb_key 0 // 0 for none  226 for LALT

// Desktop for saving screenshots etc. Defaults to $HOME/Desktop
desktop_path 

// 1 to allow controller input even when application is in background
read_controllers_in_background 0



// :: Audio Settings (use "volume" for PICO-8)

sound_volume 256 // 0..256
music_volume 256 // 0..256


// :: usually 1024. Try 2048 if you get choppy sound

mix_buffer_size 1024


// :: map scancodes. Format: 44=47,80=89,..  (scancode a, scancode b -- when press a, generates b)
// run the program with -scancodes to determine which scancodes to use
map_scancodes 


// :: pico-8 

version 0.2.5e

// audio volume: 0..256 
volume 256


// Location of pico-8's root folder
root_path /home/user/.lexaloffle/pico-8/carts/


// Location of cartridge save data
cdata_path /home/user/.lexaloffle/pico-8/cdata/


// Specify which player index joystick control begins at (0..7)
joystick_index 0


// Custom keyboard scancodes for buttons. player0 0..6, player1 0..5
button_keys 0 0 0 0 0 0 0 0 0 0 0 0 0 

// Play notes as they are plotted in frequency mode
live_notes 0

// iff 1: when using keyboard cursor, snap to closest pixel / map cel
cursor_snap 0

// 0 default  1 dark blue background in code editor  2 black background in code editor   3 gray background in code editor   
gui_theme 0

// scale of screenshots and gifs // 2 means 256x256
screenshot_scale 3
gif_scale 2

// maximum gif length in seconds (0..120; 0 means no gif recording)
gif_len 8

// when 1, reset the recording when pressing ctrl-9 (useful for creating a non-overlapping sequence)
gif_reset_mode 0

// 0 for off. 1 for auto. 2 to allow control of a cart's framerate due to host machine's cpu capacity
host_framerate_control 1

// filter splore cartridges
// 0 off   1 on (exclude cartridge tagged as 'mature' by community)
splore_filter 0

// tab display width (1 ~ 4 spaces)
tab_width 1

// 0 off 1 on: draw tab characters as small vertical lines
draw_tabs 0

// 0 off 1 on: record the current cartridge and editor view every 3 seconds (see [appdata]/activity.log.txt)
record_activity_log 1

// 0 off 1 on: allow F6..F9 (alternative: ctrl 6..9)
allow_function_keys 1

// 0 off 1 on: automatically check for a newer version of a BBS cart each time it is run.
check_for_cart_updates 1

// hide mouse cursor for n seconds when typing.
auto_hide_mouse_cursor 5

// 0 off 1 on: backup with a new timestamped filename on every run
// normally not needed -- was used for debugging crash-on-run
aggressive_backups 0

// back up cartridge in editor every n minutes when not idle (0 for no periodic backups)
periodic_backups 20

// global screen transformations:
//  129 flip horizontally
//  130 flip vertically
//  133 rotate CW 90 degrees
//  134 rotate CW 180 degrees
//  135 rotate CW 270 degrees
transform_screen 0

// 0 off  > 1: colour to draw pixel grid in the gfx editor at zoom:8 and zoom:4 (16 for black)
gfx_grid_lines 0

I only ever changed the window size so I assumed it'd sync fine on whatever's default, hope this helps anyway.
ikuyo
She/Her
Judge, Experienced player (505)
Joined: 7/8/2021
Posts: 101
Yup, as suspected, foreground_sleep_ms is causing trouble as usual!Apparently the default changed between releases, and it causes some problems when set to 5 for some movies (as personal examples, Star Anise and PICOHOT). This change should be enough to make it sync, thanks!
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1213
Location: Luxembourg
Of note that the in-game timer needs to be enabled in the game's options, otherwise, it will desync in Level 8 even with the PICO-8 config file provided by the author.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
rythin
She/Her
Skilled player (1142)
Joined: 11/4/2021
Posts: 47
Oh, my bad. I never even checked if the movie syncs without the timer, figured it wouldn't affect anything. How strange.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15558
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [5426] PICO8 Astra and the New Constellation "minimum stardust" by rythin in 09:53.47