DEV Community

iCe Gaming
iCe Gaming

Posted on

๐Ÿง™โ€โ™‚๏ธ Warlocks: Weekend Journeys

๐Ÿง™โ€โ™‚๏ธ Warlocks: Weekend Journeys

What started as a weekend browser experiment turned into a fully functional multiplayer game โ€” and a deep dive into performance, sync, and game architecture.

๐ŸŽฏ Phase 1 โ€“ Prototype

Movement and fireballs were handled entirely client-side.Sync was "best effort" โ€” enough to demo, but chaotic under pressure.

๐Ÿ”ฅ Phase 2 โ€“ Load Testing Reality Check

The Node.js backend capped out at ~300 players.Sync issues, message storms, and heavy desync.Started rewriting the backend in Rust.

๐Ÿงฑ Phase 3 โ€“ Rust Rewrite + Server Authority

Moved the entire game loop to Rust.Fireball collisions, HP, knockback โ€” all centralized.Clients only send inputs; the server owns the world state.Stress-tested up to 3,000 concurrent players with 0 visible lag.

โš”๏ธ Phase 4 โ€“ Cleanup & Core Mechanics

Fixed movement prediction & "infinite knockback" bugs

Added fireball cooldowns + visual indicators

Health bars, player names, 8-player custom lobbies

Implemented win conditions and match lifecycle

๐Ÿ•น๏ธ Phase 5 โ€“ Real Game

You can now play a full match, win, return to the menu, and rejoin.Everything is synced. Everything just works.All in the browser.

๐Ÿ—๏ธ Next Step โ€“ Standalone Game

Currently building a native Bevy (Rust) version.What I enjoy most is learning through building!

๐Ÿ‘‰ Play the browser version here: https://warlockjs.pages.dev(You might not find an opponent since this is a share, but feel free to open a second tab to try it out.)

Top comments (0)