Overview
Oniro Battlegrounds is a mobile-first, real-time battlefield game where you deploy an army of hand-drawn doodle units, hold a line, and clash with an opponent for control of territory. It is the flagship title in the "Oniro" universe — a shared world of stick-figure and doodle characters that runs across several of my game projects.
The design goal is a game that reads instantly on a phone screen: chunky sprites, clear factions, and matches that resolve in a couple of minutes. Everything about the art and pacing is built around that mobile-first constraint rather than being ported down from a desktop concept.
How it works
The client is built in Godot 4 with GDScript. Units are simple state machines — spawn, advance, engage, resolve — and the battlefield is a lane-and-territory system where controlling ground matters more than raw unit count.
Multiplayer runs on Nakama, an open-source game server I host myself rather than renting a managed realtime service. The whole backend is containerized: a docker-compose stack brings up Nakama, a Postgres database, and an Nginx reverse proxy in front. That keeps the server reproducible on any host and keeps running costs close to zero.
Why self-hosted multiplayer
The obvious shortcut for realtime multiplayer is a hosted backend-as-a-service. I went the other way and stood up Nakama on my own infrastructure. It is more setup work up front — Docker, Nginx, deploy scripts — but it means no per-seat pricing, full control over matchmaking and authority, and no vendor lock-in if the game grows.
The repo is deliberately structured so the game logic and the server infrastructure evolve together: the same stack (Godot client, Nakama server, Docker, Nginx) also backs the Oniro Army spin-off, so improvements to matchmaking or deployment carry across both titles.
Status
Oniro Battlegrounds is in active development. The core loop — deploy, advance, contest territory — is playable, and the server stack deploys cleanly. Next up is polishing faction and territory warfare, expanding the doodle unit roster, and hardening the netcode for real-world mobile connections.