Movement: Hex-based
Hexagonal-based movement is a more complex movement system that is often used in war games and occasionally in strategy games.
Here’s a screenshot from Heroes of Might and Magic to show what a hexagonal map looks like:
As you can see each tile has 6 neighbours (provided its not on the edge of the map). This means a hexagonal map has a slightly greater degree of freedom of movement than a grid-based orthogonal system (4 neighbours) and slightly less than a grid-based diagonal system (8 neighbours).
After reading up on how to implement a hexagonal map I realised this actually comes down to the number of axes along which a unit can move:
- Grid-orthogonal: 2-axes
- Hex: 3-axes
- Grid-diagonal: 4-axes
So although it has high complexity to implement because it’s not based on the simple Euclidean geometry we know from high school, it’s actually the medium complexity option from a gameplay perspective.
ECS Design
With grid-based movement I had a lot of experience to draw on, but I have never implemented a hex-based map. So instead of spouting a bunch of bad advice on how to implement one, I would instead recommend you go read up using this excellent post from Red Blob Games.
Understanding the algorithms presented there and fitting them into an ECS architecture shouldn’t be too hard… the systems would be the same, it’s just the data structures that would differ to account for the different coordinate systems used.