Debugging & Cheats

Console commands, hotkey bindings and log filtering โ€” all stripped from Shipping builds.

๐Ÿ›14 commands
โฑ๏ธ5 min read
๐Ÿ”‘Hotkeys
USKCheatManager ยท ASKPlayerController

A set of console commands for testing, wired up on the player controller and available in the editor and in development builds. They are stripped from Shipping builds, so there is nothing to remove before you ship.

Open the console with the tilde key and type any command below. Most take an optional argument.

Player

CommandEffect
SKAddLife [count]Grants lives. Defaults to 1.
SKRemoveLife [count]Removes lives without killing the player โ€” for testing the HUD's life row in isolation.
SKKillPlayerKills the player through the real death path, so the whole life-loss and respawn chain runs.
SKDamagePlayer [amount]Applies real damage, including hit flash and invulnerability. Defaults to 25.
SKHealPlayer [amount]Heals the player. Defaults to 25.
SKRefillAmmoRefills every ammo-costed weapon.
SKGodModeToggles damage immunity.
Remove Life and Kill Player are deliberately different. One tests the UI, the other tests the game. Reaching for the wrong one is the usual reason a death bug "won't reproduce".

Waves

CommandEffect
SKSkipWaveJumps to the next wave โ€” skip to the boss without playing the level.
SKSetWave [index]Jumps to a specific wave.
SKSkipStepAdvances one step within the current wave.
SKSetStep [index]Jumps to a specific step.

High scores

CommandEffect
SKSubmitScore [score]Files a score without playing a run. Defaults to 100000.
SKDumpHighScoresPrints the table to the log.
SKClearHighScoresWipes the table โ€” the quickest way to test a first-run empty state.

Hotkeys

Commands can be bound to keys through DebugExecBindings in your project's input configuration, which is far quicker than typing during play. Add a line per binding:

; DefaultInput.ini +DebugExecBindings=(Key=K, Command="SKKillPlayer") +DebugExecBindings=(Key=J, Command="SKDamagePlayer 25") +DebugExecBindings=(Key=Equals, Command="SKAddLife")

Adding your own

The cheat manager is a normal class you can extend. Add an exec-marked function to a subclass, point the player controller at it, and optionally add a hotkey binding. Commands added this way are stripped from Shipping alongside the built-in ones.

Cheats need to be enabled to work, which they are in the editor and in development builds. If a command reports as unrecognised, check the game mode's Player Controller Class is still the kit's controller โ€” that is what installs the cheat manager.

Reading the log

Everything the kit prints uses its own log category, LogShmupKit, rather than the engine's catch-all. Filter the Output Log by it to see only ShmupKit messages, and grep for it in packaged logs.

The kit warns rather than failing silently when something is misconfigured โ€” a weapon mount with no data, a spawner with no camera director, a select screen with no catalogue. Those warnings name the setting to fix.

Where next

Progression

Lives, score and high scores.

Read โ†’

Spawning & Waves

What the wave commands drive.

Read โ†’

Getting Started

Back to setup.

Read โ†’