Top-down arena shooter demo for the Asobi game backend, built with Defold and the asobi-defold SDK.
New here? Follow GETTING_STARTED.md for full step-by-step setup on Windows, Linux, and macOS. The short version:
- Start the backend:
asobi dev(needs the asobi CLI + Docker). The full arena game logic (boons, modifiers, voting, bots) is bundled inlua/, so this one command serves it onhttp://localhost:8084. - Add the SDK: clone
asobi-defoldand copy itsasobi/folder into this repo (the folder is git-ignored). Copying works on every OS with no admin rights; see the guide for the symlink alternative. - Run it: open
game.projectin the Defold editor, Project -> Fetch Libraries, then press F5. This is identical on every OS.
The bob.jar CLI build (with per-OS platform strings) is in the
getting-started appendix.
On launch you choose which server to connect to:
- LOCAL —
localhost:8084(the bundledlua/arena, run withasobi dev) - PLAY ONLINE —
play.asobi.dev(production server)
- Server Select — Choose local or online server
- Login — Register or log in with username and password
- Lobby — Connect via WebSocket, queue for matchmaking
- Countdown — 3-2-1 before arena starts
- Arena — 90-second rounds, shoot enemies, collect kills
- Boon Pick — Top 3 players choose an upgrade
- Voting — All players vote on next round's modifier
- Results — Standings, leaderboard, auto-queue for next match
| Input | Action |
|---|---|
| W / A / S / D | Move up / left / down / right |
| Mouse | Aim |
| Left Click | Shoot |
| Tab | Switch input field (login) |
| Enter | Confirm (login) |
Single collection with a controller script managing game state transitions. GUI screens (server select, login, lobby, countdown, arena, boon pick, voting, results) are toggled via enable/disable. The arena renders ship sprites and cannonball projectiles using textures from the ships atlas.
Server-authoritative: the client sends inputs at 60fps, the server responds with game state at 10Hz. All collision, damage, and kill logic runs server-side.
| File | Purpose |
|---|---|
main/controller.script |
State machine, input routing, WebSocket callbacks |
main/game_config.lua |
Shared config, colors, cross-GUI data |
arena/arena.gui_script |
Arena rendering (ships, projectiles, HUD) |
boon/boon.gui_script |
Boon card selection UI |
vote/vote.gui_script |
Modifier voting with live tallies |
server/server.gui_script |
Server selection (local/online) |
asobi/ |
SDK source — HTTP client, WebSocket, API modules (see "Install the SDK" above) |
| File | Description |
|---|---|
assets/player.png |
Player ship sprite (52x53) |
assets/enemy.png |
Enemy ship sprite (52x53) |
assets/cannonball.png |
Projectile sprite (8x8) |
assets/ship_player.png |
Player sprite sheet (3x4 grid) |
assets/ship_enemy.png |
Enemy sprite sheet (3x4 grid) |
assets/ships.atlas |
Defold atlas combining all sprites |