GLADIRESIK

This whole arena was vibe coded — built in conversation with an AI coding agent, from blank folder to multiplayer fights in the browser.

Enter the arena Read the docs

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.

02Stack

Kept deliberately small so one person (plus AI) can hold the whole system in their head.

Node.jsExpress game server
WebSocketsRealtime player sync
Three.js3D arena & characters
CC0 assetsKayKit · Kenney · Quaternius

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.

  1. Open the site → WebSocket connects → pick name & class.
  2. Input is latched so taps aren’t lost between network ticks.
  3. Hits, knockback, i-frames on roll, and fox aggro all resolve on the server.
  4. Chat is a short ring buffer that expires after ~10 minutes (no endless history).
  5. 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.

04What shipped

05Controls

InputAction
WASD / stickMove
Double-tap WASD / C / RollEvade roll
Space / JumpJump
J / AtkLight attack
K / HvyHeavy attack
L / SpcSpecial (full meter)
Shift / GuardBlock
Enter / tap chatChat

06Credits

Gameplay code was vibe-coded here. Character and arena art is CC0 — thank you to the creators:

More: About · Privacy · Contact