← Dev Log
BallOrcs1 min read

First roll: the walking skeleton

The game is now a game: a ball you can steer around a test arena, with rolling, jumping, a chase camera and a goal flag.

In plain words

The game is now a game: a ball you steer around a colourful test arena, with rolling, jumping, a chase camera, and a goal flag that celebrates and restarts when you reach it. It's deliberately ugly — grey-box shapes stand in for real art — because the point of week one is proving the whole chain works end to end: code, physics, camera, controls, win condition, and the automated build that wraps it all up for download.

Under the hood

The W1 "walking skeleton" (backlog epic E1), all in the C++ GDExtension:

  • PlayerBall: torque-driven rolling with camera-relative input, air steering, a ray-checked jump, a speed clamp, and a temporary kill-Z respawn. Rolling a sphere with torque (rather than sliding a capsule) keeps momentum physical — the design pillar is "movement must feel great before anything else ships," and that starts with real angular physics.
  • Follow camera, input map covering keyboard + gamepad with touch stubbed for the eventual Android build, stepped greybox platforms, and a goal flag that wins and reloads the scene.
  • Verified the boring-but-vital way: local linux build green, exported game boots headless with the scene loading and zero script errors — and this was the first build to pass check_pins with no ALLOW_UNPINNED escape hatch.
  • Sibling QoL: a small helper script pulls the newest green CI artifacts into dist/ ready-to-run, deriving the GitLab project from the origin remote so the script stays template-portable.

Next up on the honesty front: the exported game booted headless everywhere, but actually rendering on real machines turned out to be its own adventure — that post is coming.

#gameplay#milestone