Skip to main content
The StartPos tab is Akron’s player position and room-state restore workflow. These rows are meant for room-lab routing and are marked as Cheat when used in submitted clean attempts.

Required state contract

A StartPos is an exact gameplay-state snapshot. Loading it must restore every captured entity, component, reference, position, speed, timer, state machine, animation, coroutine, random-number state, and registered helper state to the captured frame. Akron stores this state in a local v11 snapshot file so it survives closing and restarting Celeste. Set and Load hold the room state until Celeste renders the restored frame. Set holds the requested gameplay frame until outer update hooks have finished. If the room, player, or save profile changes before capture starts, Akron cancels the request. The console command reports the active map’s status after completion or cancellation; it does not switch back to the abandoned map’s slot catalog. An ordinary Load keeps the captured player animation and frame. Explicit spawn options can change that pose; Load does not otherwise recalculate it. Captured coroutine state includes removed components still held by a running routine, such as a CrushBlock’s sound after its delayed removal. Those components restore as detached objects, without adding them back to the room. Reconstruction follows captured object ownership and identity, including typed managed grids, records, pooled effects, helper-owned UI, backdrop particles, and removed objects still referenced by their owners. Running coroutines keep references to their owning room. A helper does not need a map-specific exception for these shapes. Process-owned caches stay attached to the running engine. Mutable blend settings are copied as managed values, without copying GPU handles. Room-owned dust styles are saved with the room so their controller references remain consistent across repeated loads. Callbacks created by a component’s constructor can also restore captured sibling components. Named component fields preserve identity when an entity swaps which component is attached; removed callbacks must still belong to their entity, not borrow another entity’s state. The v11 snapshot adds required room-registry state. Set existing v10 StartPos slots again, then export any StartPos packs again. Positions, spawn settings, and keybinds are unchanged; the older saved room state cannot be loaded exactly. A successful first Load prepares the other slots in the active chapter within the machine’s memory budget. Later Loads reuse those room states. Restoring the saved render-buffer pixels must not add a GPU readback to each Load; pixel comparisons belong in the QA capture checks. When Wait for input after load is enabled, Akron keeps gameplay paused after the restored frame until a fresh gameplay input arrives. Controls held before the Load do not release the pause. Backdrops and respawn wipes keep moving while Akron waits. Akron does not replace the whole save file. A local StartPos captures the active map’s collected berry IDs and berry count, then restores that active-map progress to the Set state. Berry progress for other maps stays unchanged. Imported StartPos packs replace the author’s captured berry field with the recipient’s current active-map berry progress before the snapshot is installed. Akron keeps the greater current or captured value for session time, session deaths, room deaths, save-file time and deaths, and area time and deaths. These statistics do not rewind. Room simulation clocks restore to the Set frame because room objects and visuals use them. Akron must reject capture or load when it cannot represent required gameplay state exactly. This includes unregistered native handles, such as a running Lua interpreter, that a managed snapshot cannot recreate. Akron reports a refusal instead of substituting a player-only or session-only room reload. Manual capture and load are blocked while paused, dead, transitioning, or in a cutscene. There is one named exception to that contract. Akron does not capture the playback tutorial ghost, Celeste’s playbackTutorial entity, or the trail it draws. A room that has one keeps the ghost the fresh room load built, so after a Load the ghost is about a second before the start of its demonstration instead of where it was at the Set frame, and its footstep and dash sounds restart with it. The ghost has a collider, but nothing in Celeste checks against it, nothing tracks it, and no code reads it, so nothing else in the room is affected. This exception exists because Akron cannot prove that the saved ghost and the fresh room’s ghost are the same object, and accepting that edge unproven would risk a wrong restore that reports success. It covers this one entity type, and only the ghosts a map places in a room. Playback figures a cutscene owns, such as Farewell’s wave-dash tutorial, are captured and restored exactly as before. Use Disable Playback if you would rather the ghost were not there at all. Akron does not load old selected-field room snapshots. A v11 snapshot contains the complete managed room graph, registered helper state, audio state, room registry state, and render-buffer pixels required by the Set frame. Akron refuses the load if the file is missing, damaged, uses another snapshot format, or belongs to another map or save file. Snapshot versions change when required captured state or reconstruction assumptions change. Older slots must be set again; Akron does not guess the missing state. Imported StartPos packs bind their snapshots to the active save-file slot without importing the author’s progress or module save data. The same map and object-providing mods must remain installed because an exact snapshot cannot recreate types that no longer exist. Akron does not require CelesteTAS, Speedrun Tool, or another savestate mod.

Option menus

Rows with a triangle expose the controls listed below. Right-click a bindable button or checkbox in an options popup to open its Bind input and Clear binding actions. On the main StartPos row, right-click or Shift-click Set, Load, or Clear to start binding that action directly.

Placement editor

Selecting Place StartPos opens the frozen free-camera placement editor. It contains these controls:

Editing existing spawn settings

Changing a captured slot’s Dashes, Stamina %, Facing, Idle speed, or Spawn grabbing updates that slot’s spawn metadata without recapturing its room snapshot. Edits remain across repeated loads and restarts. Changing one field preserves the other fields on that slot, even when the configured defaults differ. An empty selected slot changes only the defaults. If the restart copy is still being created, edits are retained on that pending capture and saved when it finishes. If committed metadata cannot be saved, the slot keeps its previous in-memory configuration and shows a failure message.