01The vibe-code story
GLADIRESIK started as a simple idea: a realtime 3D arena where anyone with a link
can jump in and scrap. Instead of writing every line alone, I pair-programmed with
Cursor — describing features in plain language, reviewing what the agent built,
and steering the next change.
That loop — prompt, playtest, fix, ship — is what people call vibe coding.
The agent handled scaffolding, networking, animations, mobile touch pads, chat, collisions,
and deploy configs. I decided the direction: feel of the fights, what stayed in, what got cut.
Honest take: vibe coding isn’t “no thinking.” It’s shipping faster while staying
responsible for design choices, play feel, and what goes live.
The result is a full browser game: WebSocket multiplayer, Three.js rendering, class-based combat,
fox NPCs, roll evade, chat bubbles, and a layout that works on phones.
03How it works
The server is authoritative. Clients send input (move, attack, roll, chat).
The server simulates physics, combat, collisions, and NPCs, then broadcasts a world snapshot
many times per second. The browser interpolates poses and plays skeletal animations.
- Open the site → WebSocket connects → pick name & class.
- Input is latched so taps aren’t lost between network ticks.
- Hits, knockback, i-frames on roll, and fox aggro all resolve on the server.
- Chat is a short ring buffer that expires after ~10 minutes (no endless history).
- Deploy anywhere Node runs — local tunnel, Render, Fly, or Docker. See
DEPLOY.md in the repo.
On mobile, a virtual stick and a compact action pad replace the keyboard. Chat opens by tapping
the chat log — no extra button cluttering the thumb zone.