getting started

How Sky Auto Player Works

Sky Auto Player reads user-provided sheet files, schedules every note against a timing model, and delivers keystrokes through the Windows SendInput API. It never reads game memory, modifies game files, or injects code.

Updated: 2026-08-08

What the software does

Sky Auto Player reads a music sheet file that you provide, schedules every note, chord, and hold against a timing model, and delivers keystrokes to the active window through the Windows SendInput API — the same channel used by any standard keyboard macro. It does not read game memory, inspect game files, modify the game, inject code, or attach a debugger.

The intended workflow is:

  1. Export a sheet from the Sky Music editor as JSON, .skysheet, or JSON-compatible TXT.
  2. Import the file through the desktop Library.
  3. Launch Sky Auto Player, select the song, switch to the game, and press your play hotkey.

The packaged Sky-Auto-Player.exe is the canonical and only supported Tauri desktop GUI. It provides the Library, Song Detail, Player Dock, Diagnostics, Settings, and Update surfaces.

Sky Auto Player sends keystrokes; the game observes them on its own schedule. The timing precision on the game side depends on Windows scheduling, the game’s input sampling rate, and your hardware — not on the player itself.

How note scheduling works

Sky Auto Player does not replay a fixed sequence of delays. Instead, it schedules each note as an event on a timeline that advances against the sheet’s tempo and the FPS you configure inside Sky. The core loop:

  • Contiguous chord batches — all notes in a chord are submitted in one SendInput call to minimise sender-side skew between keys in the same chord.
  • Hold semantics — long notes are held for their full notated duration. A hold note does not get clipped short because the next note is close.
  • Hold-frame alignment — the hold duration is expressed as 1.0, 1.25, or 1.5 game frames at the FPS you select. The default is 1.0 frames.
  • Latency adaptation — the scheduler measures sender-side completion error on the current machine and adjusts its lead time accordingly. This reduces systematic drift; it does not guarantee game-side timing accuracy, which also depends on Windows and the game’s sampling loop.

Architecture overview

The code follows a four-layer design:

Layer Responsibility
Domain Pure timing models, schedules, and profiles. No I/O.
Orchestration Scheduler and coordinator. No wall-clock or SendInput.
Infrastructure Focus tracking, hotkey listener, real-time sleeper, MMCSS registration.
Platform Windows backend: SendInput, waitable timer, MMCSS. Only place Win32 types live.

A Rust timing worker owns compilation, dispatch, focus, SendInput calls, cleanup, and native telemetry. The Tauri/React shell renders the desktop UI and native Rust application services own settings, catalog, playback, diagnostics, updates, and calibration. The production desktop uses the native command router and has no auxiliary process or fallback path.

What Sky Auto Player does not do

  • Read or write game memory
  • Modify, patch, or inspect game files
  • Inject DLLs or attach a debugger to any process
  • Install Windows hooks (SetWindowsHookEx, etc.)
  • Bypass anti-cheat systems
  • Guarantee in-game timing accuracy — sender-side timing is optimised, but the game decides when to register keystrokes

Limitations

  • Windows 10 and 11 (64-bit) only. MMCSS real-time scheduling is a Windows API.
  • Automated playback may conflict with Sky’s Terms of Service. Use responsibly and at your own risk.
  • Sky Auto Player is an unofficial community project, not affiliated with or endorsed by thatgamecompany.
Sky Auto Player processing flowBlock diagram: Sheet File → Parser → Timing Model → Rust Dispatcher → Windows SendInput → Game receives keysSheetFile.json / .skysheet / .txtParserdomain, pureTimingModelpure, unit-testedRustDispatchhigh-res timingSendInputWindows APIProcess boundary — no memory accessGamereceives keys normally
  1. Sheet file — read and parsed by Sky Auto Player
  2. Parser — pure domain, no I/O
  3. Timing model — schedules notes on a frame-aligned timeline
  4. Rust dispatch — high-res dispatch loop, MMCSS, telemetry
  5. Windows SendInput — only input mechanism, no hooks, no injection
  6. Game — receives keys normally via Windows message queue

Ready to try it?

Download Sky Auto Player v4.3.0 and start playing on Windows.