Controls
All keyboard and mouse bindings, as found in the source code.
Movement (during gameplay)
| Key | Alternate | Action | Source |
|---|---|---|---|
| ↑ Arrow | W | Move forward (along facing direction) | Blupi.cpp:171 |
| ↓ Arrow | S | Move backward | Blupi.cpp:172 |
| ← Arrow | Q | Rotate left (turn) | Blupi.cpp:161 |
| → Arrow | E | Rotate right (turn) | Blupi.cpp:162 |
| A | — | Strafe left (move perpendicular, no rotation) | Blupi.cpp:175 |
| D | — | Strafe right | Blupi.cpp:176 |
| Space | — | Jump (only when on ground) | Blupi.cpp:186 |
Game Controls
| Key | Context | Action |
|---|---|---|
| ESC | Init phase | Quit the game |
| ESC | Play phase | Open pause menu |
| ESC | Pause phase | Resume gameplay |
| ESC | Settings | Return to previous screen |
| 1 | Init phase | Select gamer slot 1 |
| 2 | Init phase | Select gamer slot 2 |
| 3 | Init phase | Select gamer slot 3 |
| S | Init / Pause | Open settings screen |
| S | Settings | Toggle sound on/off |
| Space / Enter | Win / Lost | Continue (advance or reset) |
| Mouse left click | Win / Lost | Continue |
| F1 | Any | Toggle debug geometry overlay |
Source Reference
Input is read each frame through Urho3D::Input subsystem:
// Example from Blupi.cpp — movement input
if (input->GetKeyDown(KEY_UP) || input->GetKeyDown(KEY_W))
forwardInput = 1.0f;
if (input->GetKeyDown(KEY_DOWN) || input->GetKeyDown(KEY_S))
forwardInput = -1.0f;
// Jump (one-shot with GetKeyPress, not GetKeyDown)
if (onGround_ && input->GetKeyPress(KEY_SPACE))
vel_.y_ = kJumpSpeed;
Note: GetKeyDown is used for held movement; GetKeyPress is used for one-shot actions like jump and phase transitions.
See Input System for more detail.
Known Limitations
- No gamepad/controller support is implemented. Needs verification from source.
- No touch input is implemented (Android planned but not yet started).
- Key bindings are hardcoded — no runtime remapping.
- Camera orbit via right mouse button and scroll wheel is documented in
NEXT.mdbut implementation needs verification.