Skip to content
← All projects

Battle for Dhaka — 3D Multiplayer Shooter Game

A 3D survival shooter that runs in the browser, set on the streets of Dhaka. You can play it solo or online with up to 10 friends. Built with React Three Fiber, TypeScript and a Node.js WebSocket server.

Company
Personal Project
Battle for Dhaka — 3D Multiplayer Shooter Game screenshot 1 of 9
01 / 09

Overview

Battle for Dhaka is a wave-based 3D survival shooter that runs entirely in the browser. Night falls over Dhaka and the hollows pour into the streets. Players hold the city with six guns, grenades and upgrades from an in-game shop, and survive as many waves as they can. Every fifth wave brings a Hollow Warlord boss, and on Hard an attack helicopter joins the fight. There are two maps: a detailed Dhaka City with a metro line, river, railway and Bangla signboards, and a smaller village called Hollowmere. Multiplayer. Up to 10 players can join a room with an invite link or a five-letter code and play co-op, deathmatch or team matches. A Node.js server runs the same game engine as the browser at 60 steps per second and has the final say on hits, damage and purchases. The client predicts your own movement and shooting, so firing feels instant. Other players are interpolated so they move smoothly even on a weaker connection. Engineering highlights The game simulation is plain TypeScript, kept separate from rendering, so the browser and server share the same code and it can be unit-tested with Vitest. GPU instancing and geometry batching keep large crowds of enemies and a dense city map running smoothly on desktop and mobile. Input never triggers React re-renders. Only HUD values that change are pushed to the Zustand store. All music and sound effects are generated with the Web Audio API, and the music changes between calm, combat and boss tracks. It can be installed as a PWA and played offline after the first visit. Playability. Keyboard and mouse, gamepad and touch controls; third-person, first-person and top-down cameras; English and Bangla; missions, saved runs you can continue later, and a local high-score history.

What I did

  1. 01I designed and built Battle for Dhaka on my own, from the game engine to the multiplayer server and deployment.

Stack

React 19TypeScriptThree.jsReact Three FiberZustandNode.jsWebSocket (ws)Web Audio APIViteVitestPWA

Next project

চাকরি প্রস্তুতি