← back to projects

lowdragrts

active GitHub →

A real-time strategy engine built from scratch in TypeScript and Three.js — no game engine, no shortcuts, no sanity. Inspired by Total Annihilation. Rendered entirely in the browser.

what it is

This is a hobby project with no deadline and entirely too much ambition, which is exactly how it should be. The goal is a browser-based RTS with procedurally generated voxel terrain, a proper resource economy, unit combat, and an AI that doesn’t immediately walk into walls.

The current branch (main, promoted from state-machine-implementation) is a terrain and rendering branch. It does not yet contain units or combat — those exist in old-main for reference, but the visual engine rebuild came first. Right now it looks incredible and does nothing. Progress.

what’s working

what’s next

Phase 2 is terrain improvement — taller mountains, deeper valleys, more readable geography. Primarily a tuning exercise on GameParameters.ts (HEIGHT_SCALE, PERSISTENCE, NOISE_SCALE) plus potentially a valley carving pass using a low-frequency subtracted noise layer.

Phase 3 brings units back: Unit.ts, UnitManager, click-to-select, right-click-to-move on terrain surface, health bars.

Then combat, then the resource system.

the resource economy

The resource design is already specced:

tech stack

TypeScript (strict), Three.js, Webpack 5, simplex-noise, postprocessing (loaded, not yet wired).

do not touch

TerrainGenerator.ts — the shader injection via onBeforeCompile is fragile by design and the reflection system depends on precise uniform setup. LightingSystem.ts — colour transitions are parameter-driven and carefully tuned. Touch either at your peril.