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 Steam demo

A turn-based 4X strategy game you can complete in an evening — built from scratch with a custom WebGPU engine and eight civilisations. Try the demo on Steam.

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 Steam demo

Forty-two years after I first started programming, I built a 4X strategy game from scratch — a custom WebGPU engine, eight civilisations, and a game you can complete in an evening. Try the demo on Steam.

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