- Install Everest if you haven't already.
- (Recommended) Use the 1-click installer here. (Alternatively) Download the latest autobuild and put it in the game_path/mods folder.
- Enable the mod in the in-game mod options.
- Open
Celeste Studio.exe
, our input editor. It should be in your main Celeste directory, if not please extract it from theMods/CelesteTAS.zip
yourself. (Note that Studio only works on Windows) Studio documentation can be found here. - If on Linux or macOS, try running celeste studio via wine, here is the tutorial for installing wine. If celeste studio not work, check the working TAS file path in the
Mod Options -> Enabled
menu item, edit it with your favorite text editor, and enableInfo HUD
to show the auxiliary information. - You can find the most up-to-date input files here.
The input file is a text file with tas
as a suffix, e.g. 1A - Forsaken City.tas
.
Format for the input file is (Frames),(Actions)
e.g. 123,R,J (For 123 frames, hold Right and Jump)
- R = Right
- L = Left
- U = Up
- D = Down
- J = Jump / Confirm
- K = Jump Bind 2
- X = Dash / Talk / Cancel
- C = Dash Bind 2 / Cancel Bind 2
- Z = Crouch Dash
- V = Crouch Dash Bind 2
- G = Grab
- H = Grab Bind 2
- S = Pause
- Q = Quick Restart
- F = Feather Aim
Format: F, angle, optional upper limit of single axis (default value is 1, range is 0.26 to 1, works in all analog modes) - O = Confirm Bind 2
- N = Journal / Talk Bind 2
- A = Dash Only Directional Modifier (generally used to manipulate camera with binocular control storage. eg: 15,R,X,ALU)
- M = Move Only Directional Modifier (eg: 15,X,AL,MR)
- P = Custom Button Press Modifier (used to press inputs added by mods after binding them using the Set command, e.g. 15,R,X,PA after binding A to a custom input)
While in game or in Studio:
- Start/Stop Playback: RightControl
- Restart Playback: Equals
- Fast Forward / Frame Advance Continuously: RightShift or Controller Right Analog Stick
- Fast Forward to Next Comment: RightAlt + RightShift
- Slow Forward: \
- Pause / Frame Advance: [
- Pause / Resume: ]
- Toggle Hitboxes: LeftControl + B
- Toggle Simplified Graphics: LeftControl + N
- Toggle Center Camera: LeftControl + M
- Save State: RightAlt + Minus
- Clear State: RightAlt + Back
- Info HUD:
- Holding info hud hotkey and left-click to drag & drop the HUD
- Double press the info hud hotkey to toggle HUD
- Holding info hud hotkey then left-click on entity to watch the entity
- These can be rebound in Mod Options
- You will have to rebind some of these if you are on a non-US keyboard layout.
- Binding multiple keys to a control will cause those keys to act as a keycombo.
- You can create a breakpoint in the input file by typing
***
by itself on a single line - The program when played back from the start will fast forward until it reaches that line and then go into frame stepping mode
***S
will make a savestate, which can reduce TAS playback time.- You can specify the speed with
***X
, whereX
is the speedup factor. e.g.***10
will go at 10x speed,***0.5
will go at half speed.
- Various commands exist to facilitate TAS playback. Documentation can be found here.
- Savestates require the SpeedrunTool mod.
- Reliable in vanilla maps.
- Savestates may not work properly in custom maps that use code mods. Placing a savestate right before leaving a room can help with this.
- Currently cannot savestate when paused.
- Crashes due to running out of memory are possible, although uncommon.
When center camera is enabled, free camera hotkey + holding mouse right button or free camera hotkey + arrow move canvas, when zooming out holding mouse right button or info hud hotkey + arrow move camera.
When center camera is enabled, scroll wheel or free camera hotkey + home/end zoom camera.
When center camera is enabled, double press mouse right button or double press free camera hotkey reset camera.
Holding info hud hotkey and mouse right down to select a rectangle. Copies the position of the top left and bottom right corners when the mouse button is released. It helps to define checkpoints for featherline.
Enable Info HUD
, holding info hud hotkey then left-click to add the entity to be watched, while holding watch trigger hotkey to watch trigger, right-click to clear the watching entities. Supports exporting watching entities info via
the StartExportGameInfo
command.
The contents of the curly brackets will be converted to actual data, here are some examples:
{EntityName.field...}
Find all entities. e.g.{Strawberry.Position}
{EntityName[entityId].field...}
Find the entity with the specified entityId. e.g.{Strawberry[1:12].Position}
means 1A gold berry. You can get the entityId by opening the console and left-clicking on the entity.{EntityName@AssemblyName.field...}
Add the assembly name, if the simple name exists in multiple helpers and you want to specify the helper. e.g.{CustomSpinner@FrostTempleHelper.Position}
and{CustomSpinner@VivHelper.Position}
. You can get the assembly name by opening the console and left-clicking on the entity.{Level.field...}
Get the value of level field. e.g.Wind: {Level.Wind}
.{Session.field...}
Get the value of session field. e.g.Room: {Session.Level}
.{ClassName.staticField.field...}
Non-entity and non-level types that can get the value of a static field.{Player.Position.Length()}
Invoke method is supported, but must be parameterless and return a non-void type. Be careful not to invoke method that change the game state, as this will cause tas desync.{Player.AutoJumpTimer.toFrame()}
addtoFrame()
to the end can change the float value to frames.{Player.Speed.toPixelPerFrame()}
addtoPixelPerFrame()
to the end can change the float/vector2 speed unit to pixel/frame.{Player.Position:}
add:
or=
to the end will add label before the value. e.g.{Player.Position:}
is the same asPlayer.Position: {Player.Position}
.AutoJump: {Player.AutoJump} ({Player.AutoJumpTimer.toFrame()})
Theo: {TheoCrystal.Position}
TheoCantGrab: {TheoCrystal.Hold.cannotHoldTimer.toFrame()}
KeyCycle: {Key.sprite.CurrentAnimationFrame}
CustomSpinner: {CustomSpinner.Position}
orCustomSpinner: {FrostHelper.CustomSpinner@FrostTempleHelper.Position}
{CrystalStaticSpinner.offset.nextCheck()}
addnextCheck()
after offset to calculate number of frames until next check
- Install Wine: https://wiki.winehq.org/Download
- Install
ttf-mscorefonts-installer
. - Run Studio via command
wine "Celeste Studio.exe"
, agree to install wine-mono. - Run Celeste directly or run the windows version of celeste via wine
wine "Celeste.exe"
. If the errorX Error of failed request: GLXBadFBConfig
is reported when running celeste via wine, then you need to runexport MESA_GL_VERSION_OVERRIDE=4.5
first and then rerun the wine command.
- Featherline: Algorithm for analog feather movement in Celeste.
- Radeline: Chaos monkey that optimizes a Celeste TAS by randomly (or sequentially) changing inputs.
- .kkapture: Record high quality smooth tas video on low end PC, Windows only.
- ldcapture: Record high quality smooth tas video on low end PC, Linux only.
- GhostMod: Used to compare old and new tas.