Getting Started - EverestAPI/CelesteTAS-EverestInterop GitHub Wiki

Authors: psyGamer

Creating your own TASes

The first thing you'll have to do before starting with TASing is figuring out which level you would like to TAS. It is generally recommended to keep things simple at first, which means to avoid levels with complex mechanics or dashless / core-mode gameplay, however nothing is stopping you if you want to start with that.

The easiest way to setup a .tas file is by regularly entering your desired level in-game and creating a new file in Studio (File -> New File). This should yield you a file similar to the following:

RecordCount: 1

console load 1
   1

#Start
  88

#lvl_1

Quite a few things just appeared, so let's go over each one and look at what it does: Feel free to follow the links for a more detailed explanation.

  • RecordCount: 1: A simple statistic which automatically tracks how often you've tweaked the TAS file
  • console load 1: Performs the Debug Console command load 1. This just means that the A-Side of the level with ID 1 (Forsaken City) should be immediately loaded. For modded levels a unique name is used instead of a numeric ID. It is quite useful as it avoids any menuing and works reliably, no matter where the TAS is started from.
  • 1: Loading a level always requires a single frame wait, which is why ever console load command is followed by it.
  • #Start: Indicates the true start of the TAS. When running a full category it is used to skip over any setup related commands, such as the console load. In case other commands are required to bring the level into the same state as if it were loaded from the overworld / lobby, then those should also be placed before the #Start label.
  • 88: Levels usually have an intro animation before you have control, such as the jump at the beginning of Forsaken City. The actual amount can vary a lot between different levels. In case the level doesn't have an intro animation (or it couldn't be detected), this might be missing.
  • #lvl_1: A Room Label which indicates the start of a gameplay room. It should be placed before the first frame of movement in any room. You can simply use the Insert current Room Name option in Studio (Ctrl+R by default) to insert one quickly.

Now before you continue further, it is important to check if the generated intro animation time is actually correct. If it's a simple vanilla animation, it's usually correct, but in the case of modded animations or cutscenes, it might not always be accurate. The easiest way to check is by inserting a single action after the room label, such as a jump (1,J). Make sure to avoid holding the input for multiple frames as otherwise the action might be buffered. If you now reduce the intro animation wait by one frame and the action stops working, you're all set. (But don't forget to increment to again!)

For the case of skippable cutscenes, the following snippet usually tends to work just fine:

#Start
 110
   1,S
   1,D,O
  34

#lvl_1

Now that everything is set up, you're ready to start actually writing the inputs to control the character!

Unlike how some other games are TASed, where you play the game by yourself with slowdown and savestates, CelesteTAS instead requires every input to be written out explicitly. This might seem tedious at first, but with the way the format designed, you'll actually be able to move relativity quickly once you're a bit used to it.

Each input line in a TAS file follows the format of (Frames),(Actions) where specified actions are held down for the amount of frames. Note that individual lines don't indicate separate button presses on their own, as the frame count is simply a way to avoid having to repeat oneself with the same inputs. For a more detailed information on how the file format works, as well as other useful inputs, such as Breakpoints or Commands, refer to the explanation here.

Once you're done you're done with the level, you can insert a ChapterTime: command at the very end of the file. It will automatically be filled in with your final time once the timer stops. The last thing to do would be making sure the last input of the TAS is on the same frame as the timer stops and turns green.

If you now want to share your TAS, simply send others the .tas file for them to run or record a video of it and share that alongside your inputs. The easiest way to record a video is by installing the TAS Recorder mod and goto File -> Record TAS... inside Studio. Refer to the linked GameBanana page on how to use it and for input snippets to properly fade out the recording.

Helping on improving existing TASes

[!note] This section is not yet finished.

For improving TASes, you will likely already have a TAS and a section of that TAS in mind you want to improve.
So open the file in celeste studio and start the tas (default is right control) and let it play up to the start of the section you want to improve. Alternatively you can search the file for the room label.
Once you have found the place you want to start changing / improving, place a breakpoint [´***´] at the start of the room or longer section you want to improve. Then, if you restart the TAS (either by pressing the restart hotkey or the start hotkey (default right-control) twice), the TAS will fast forward to that room.

Now it is a matter of placing new inputs to replace the old ones. Check out how inputs are written.

After you have a majority of your changes written into the .tas file you will want to find a point, where your new movement can flow into the old movement, so the TAS can finish without you having to rewrite everything from the point you are improving. So you need to find a point, where that is easy to do, like bubbles, screen transitions, landing on a ledge or stopping all your speed at a wall.

Keep in mind that as long as you don't delete your old inputs, you can always comment out your new inputs (control+K by default) and check what the old version was doing. This allows you to check for points the TASes can merge again. It also allows you to time strats by timing when the old version gets to a point and when the new version gets to that same point. You can paste the current time with control+t by default. After you have merged them, you can comment out the old movement upto the point you determined and see, if the TAS does what it is supposed to do and if it is faster.

If it does not, you need to see why it does not (is it trying to jump when there is nothing to jump off of, is it dashing, whilst there is still cooldown on the dash, is it buffering actions?) and change your inputs (sometimes the later inputs as well) to make it work. If it does run to the end, it will update the ChapterTime: to reflect the time you saved.

Now to prepare for posting the file, you will want to remove the old movement you commented out, remove the breakpoints you placed (control+P) and clean up your movement (check out the style guide)

Then you want to share the TAS file with others.

[!note] If you want to post it to the CelesteTAS-Imrpovement tracker bot, you will want to add to your message: the file, and a format like:
{the time you saved in frames, like -6f} {level name} {The previous time} -> {The time after your improvement} as well as a description with what you changed.
Example: -46f D5A (4:46.620(16860) -> 4:45.838(16814))
If the bot gets mad at you, don't panic and just do what it says. It can be pretty mean sometimes

Watching a TAS

If you just want to watch a TAS of a single level, it's usually enough to just download the respective .tas file and open it in Studio (File -> Open File) or copy-paste it directly into the current file.

If you however want to watch a TAS of an entire category that contains overworld or lobby movement, you'll need to make sure to get all the .tas files for project. If the TAS files are hosted on GitHub, you can usually just hit the big green Code button on the page of the project and then Download ZIP. Then simply un-zip the downloaded archive and open the respective .tas for the category with Studio (they usually follow the format 0 - abc.tas however that is not always the case).

[!note] Just downloading a .zip file of the project from GitHub might sometimes not work due to the way the project is structured. In this case you'll want to use something like GitHub Desktop:

  1. Download GitHub Desktop
  2. Open it an either log into your GitHub account or skip the login
  3. Enter any identity. This information doesn't have to be real and isn't relevant if you only want to download a repository
  4. Select Clone a repository from the Internet... (or select File -> Clone Repository if you don't have that option)
  5. Switch to the URL tab
  6. Copy-paste the URL of the repository from your browser into the selected field (the URL should look like https://github.com/UserName/ProjectName with nothing else after that)
  7. Clone the repository
  8. Remember the file path you cloned it to or select Repository -> Show in your File Manager...
  9. Open the appropriate category .tas file with Studio like described above

Look at the top of the file for comments (any line starting with # ) indicating special instructions on how to properly run it. In case you see a console load ... near the top, you've probably got the wrong file. If there isn't anything noteworthy, it's usual for project to require you to prepare a new save file with the Begin button being actively selected.

Now you're ready sit back and start the TAS by just pressing Right Control by default. Use the same hotkey the abort the TAS from continuing further. You can pause / resume the TAS at any time by pressing ] by default.

All controls can be changed in the Mod Settings, see here for more information.

If the TAS loads into the wrong level campaign or starts performing nonsensical movement such as repeatedly dying to certain hazards, make sure that all mods are up-to-date and that only required mods are enabled.

If the issue persists after checking both mentioned fixes, try asking in the project discussion space (such as their Discord server) or ask in the Celeste Discord in the #tas_general channel.