Mohamadhosein Moazennia
All work

Razmak

3D strategy in the browser

Role
Solo: game design and engineering
Stack
TypeScript, three.js, WebGL 2, Bun, Preact, Electron
Link
razmk.ir

Why I built it

Real-time strategy games usually need a large download, a strong PC, and a store account. I wanted the full genre (bases, economy, armies, aircraft) in a browser tab that opens in seconds, on an ordinary laptop, in Persian or English.

What I built

Razmak is a complete RTS. You build a base, collect supplies, train an army, and destroy the enemy. You play against an AI with three difficulty levels, or against other people online.

  • A 3D battlefield rendered with three.js and WebGL 2
  • 15 units and 13 buildings: infantry, vehicles, gunships, bombers, and drone swarms
  • An AI opponent that plans its economy, builds an army, and attacks in waves
  • Online multiplayer with rooms and lobbies, plus saves and replays
  • A guided first mission for players who are new to strategy games
  • A full Persian interface with right-to-left text, and an English interface
  • A small macOS desktop app that opens the same game

The hard part

A match that cannot cheat or drift

The simulation is deterministic and separate from the graphics: it has no three.js code and no browser code. The same input always gives the same result. That makes replays exact and lets the server run the real match. Each player sees only what their units can see, so hidden enemy data never reaches the browser.

One game, two places

Live matches run on the server; saves and replays run the same simulation in the browser. Both use one presentation layer, so a replay looks exactly like the match did.

Where it stands

Razmak is in active development, with more than 2,200 commits so far. You can play it now at razmk.ir. The source code is private.

Let's talk

Email me about a project, a problem, or an idea: hello@moazennia.ir. I read every message myself and reply. My CV is available on request.