Chaos monkey that optimizes a Celeste TAS by randomly (or sequentially) changing inputs. Progress for the main game is here (but I've stopped working on it).
Now includes a fully working movement simulator, for brute forcing precise position and/or speed values! Not at all related to the main program cause that's not confusing!
Radeline.zip (13 MB)
- Make sure the inputs in your TAS have a breakpoint on the very last line, a console load (or chapter restart) at the beginning, and end on the chapter complete screen (or a S&Q). The goal is to make the game save to debug.celeste
- Take a look at
settings.yaml
(it's just a text file) and make sure it's configured like you want. The main thing is putting in the path to your TAS file - Be careful with Celeste Studio because it doesn't read Radeline's changes to your TAS and so you could easily accidentally overwrite it. Also make sure "Launch Studio at boot" is enabled in CelesteTAS, in case the game crashes
- Run
run.bat
- After running the last frame of unsimulated input, use Ctrl-Shift-C in Studio to copy your position and speed and edit
config.yaml
accordingly - Make all the other changes to the config you need in order to match your game state, including finding the number of frames to simulate
- "Permutations" refers to the number of inputs to simulate. This increases run time, especially with more frames, but raises your chances of getting better inputs. 500k to 1m is often good. Ignored when using sequential method
- Run
run.bat
, your results will also be saved inresults.txt
- An auto-formatter will be started afterwards which lets you copy some resulting inputs to have them be automatically reformatted in your clipboard to be pastable into Studio, which can also be launched with
run formatter.bat
- (Optional) Add this to your custom info to automate more of init state:
JumpTimer: {Player.varJumpTimer.toFrame()}
AutoJump: {Player.AutoJump}
MaxFall: {Player.maxFall}
Holding: {Player.Holding}
Deaths: {Session.Deaths}
If you need any assistance or additional functionality, DM me on Discord at Kataiser#4640
Because it's a little dumb and almost insulting to real TASers, but dangit if it isn't really cool sometimes (also, Random Madeline). I kind of regret the name and just call it "my optimization script" half the time though. Maybe this repo will be expanded at some point.