#is this speedruntool+tasmod integration sensible?

10 messages · Page 1 of 1 (latest)

steep ore
#

@lucid herald

when i'm mapping a long room with eg. a touch switch near the start, i can't simply reload the level to test out the part i'm working on (as the switch gates will reset too), and i also can't use a savestate to preserve them (as the level will be reset to the point of the savestate).

a solution that fixes both problems is to store the buttons pressed by the player to get through part of the room as a tas, and fast-forward it when reloading the map.
would the following implementation of this be sensible?

  • there are three states (gameplay, tas playback, tas write)
  • when in the tas write state, gameplay acts normally but all inputs (including setting savestates) are appended live to the tas file
    • when a savestate is loaded (through keypress or death), all inputs after that savestate are "rolled back" (removed from the file)
    • pressing f5 reloads the room as normal, but also fast-forwards to the end of the tas, so position & room state are hopefully preserved; if this fails (eg. player dies), revert somehow (respawn player at spawnpoint?)
vapid wigeon
#

i'm not sure i understand, how is the end result of saving the level in its current state different from replaying the entire level the exact same way so it ends up in the same state?

steep ore
#

if i edit the level after placing the savestate, the savestate stores the older version of the level (before i edited it), but i want to test the new version

#

because savestates store everything, including eg. fgtiles

vapid wigeon
#

ohh

#

alright that makes sense

lucid herald
steep ore
#

additionally i don't think i can set switch gate progress / jelly positions / cassette music position etc. in console

lucid herald
#

if you tas the room from start spawnpoint, you dont need to set the speed, and press ctrl+shift+r in studio can insert the console command including speed
for cassette room need to start the tas outside the room
set command is powerful, you can set Glider.Position x y (all jerryfishes) or set Glider[roomName:id].Position x y (specific jerryfish)