James Randall Musings on software development, business and technology.
Empire of Asphalt: Selecting ranges and creating zones
Annhexation gameplay — a hex-based 4X strategy map
Annhexation Early access

A turn-based 4X strategy game I built from scratch — custom WebGPU engine, eight civilisations, no install. Play it in your browser right now.

Things have been going quite smoothly so far and over the last couple of evenings I’ve added the ability to drag select ranges and create zones (though haven’t accounted for flats yet).

This all happens in the landscape shader which is passed the corners of the range and information about each tile encoded inside a vector and passed into the shader as an attribute buffer. When the zone is added I update the buffer in the appropriate landscape chunks.

In any case it all works rather nicely.

Next up are roads and then buildings. I’ve got some time off coming up and I’m hoping to spend some of that working on that and getting a basic feedback loop running across the three zone types. Might be a bit ambitious for the time off I have. We’ll see.

All the code is in the usual place.

https://github.com/JamesRandall/empireOfAsphalt

Annhexation gameplay — a hex-based 4X strategy map
Annhexation Early access

Forty-two years after I first started programming, I built a browser-native 4X from scratch — a custom WebGPU engine, eight civilisations, and an AI opponent I'm still teaching to play. No install, no sign-up. Play it right now.

Built by James Randall — tool-maker, system builder, and occasional cyclist. Walking the hills with my four-legged friend when I'm not building worlds.
© 2025