This month, good progress. Environment art is ongoing, marketing research is complete, and new features are implemented.
The terrain system has been reworked, and the player can now edit individual walls. There is new a query button, which allows the player to mouse over a unit and see basic information. The healthbar has been implemented, with new and old styles to choose from. There’s also a new charge button, which allows the player to order a group of soldiers to launch into melee against the nearest enemy. There have been many other fixes and much refactoring besides.
I have also been consulting with friends who play strategy games, to try and get a feel for how to implement unique factions. How many will there be? How will they be different? What narratives will guide them? These questions have been answered for now, and there will be four playable factions, each with a unique identity and distinct mechanics.
The next deterministic problem to resolve will be replacing Unity’s non-deterministic Raycast system. That will be non-trivial and expensive, but once complete there won’t be too much left for multiplayer to be viable.
A raycaster is an object which creates an imaginary line from A to B, and then checks if this line intersects any triangles (geometry in the game world). This is used to determine if units can see each other, and if projectiles have impacted walls. In principle, not too complex. But the problem is efficiency; the geometry in the game world must be saved so that only the closest objects are accessed. For example, one such design pattern is similar to a tree data structure, and is called binary space partitioning. Doing all that well is non-trivial.