- Install Everest if you haven't already.
- (Recommended) Use the 1-click installer here. (Alternatively) Download the latest auto-build.
- Make sure the mod is enabled in the in-game mod options.
- Enable the mod-setting
Celeste TAS > More Options > Launch Studio at Boot
. Celeste Studio, our input editor, should now automatically launch. (You can find the Studio documentation here) - Alternatively, you can start Celeste Studio directly. It'll be installed in the
CelesteStudio
directory inside your Celeste install. - 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.tas
.
Format for the input file is (Frames),(Actions)
e.g. 123,R,J
(For 123
frames, hold Right
and Jump
)
R
= RightL
= LeftU
= UpD
= DownJ
= Jump / ConfirmK
= Jump Bind 2X
= Dash / Talk / CancelC
= Dash Bind 2 / Cancel Bind 2Z
= Crouch DashV
= Crouch Dash Bind 2G
= GrabH
= Grab Bind 2S
= PauseQ
= Quick RestartF
= 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 2N
= Journal / Talk Bind 2A
= 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
orController 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:
- While holding the Info HUD hotkey, left-click to move the HUD around
- Double press the Info HUD hotkey to toggle it
- While Holding the Info HUD hotkey, 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 key-combo.
- You can create a breakpoint in the input file by typing
***
by itself on a single line - The TAS, when played back from the start will fast-forward until it reaches that line and will then pause the TAS
***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 0.5x 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.
Hold the Info HUD hotkey and the mouse right down to select a rectangle. Copies the position of the top left and bottom right corners when the mouse button is released. This 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.{[email protected]...}
Add the assembly name, if the simple name exists in multiple helpers and you want to specify the helper. e.g.{[email protected]}
and{[email protected]}
. 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: {[email protected]}
The contents wrapped in double center brackets will be executed as lua code, check here for how to write lua. Be careful not to change the game state, as this will cause tas desync. Here are some examples:
[[return player.Position]]
[[return player.Position, player.Speed]]
Return multiple results.
- TAS Recorder: High quality fixed framerate TAS encoder, cross-platform (use this instead of .kkapture or ldcapture)
- GhostMod: Compare new TASes with old ones.
- Radeline: Chaos monkey that optimizes a Celeste TAS by randomly (or sequentially) changing inputs.
- Lobby Router: Helps find the fastest route for a collab lobby
- Featherline: Algorithm for analog feather movement in Celeste. (built-in into Studio)
- .kkapture: High quality fixed framerate TAS encoder, Windows only.
- ldcapture: High quality fixed framerate TAS encoder, Linux only.