Ok, I am already on version 0.10. Time flies! I will try to bring you up to speed on what has been going on and where the development is going.
I am starting to get familiar with the game memory. There are 3 main areas of interest:
- Player data
- Town data
- Hero data
Player data is where your basic information is stored. If you ever played multiplayer, your multiplayer name can be found here. It also lists the heroes in your party, the next two heroes you can buy from the tavern and the towns you control, along with your resources and gold. There is space for a maximum of 8 players.
Town data is where the game places information on all the towns on the current map. Here you can see the town type, the owner, whether it has been upgraded today, the garrison and visiting heroes, the town name*, the town state (the type of each building) and the spells in the Mage’s Guild. There is space for a maximum of 23 towns per map .
*note: the name is not actually stored here, actually the 4-byte address of where you can find the name in memory is stored here. That was a bit tricky of the developers!
Hero data is where the game stores information on the state of each hero, whether they are in the current game or not. Here you can find the hero class, specialty, stats, level, spell points, XP, secondary skills, the creatures in their army, the artifacts in their possession and the spells they know. There are 156 heroes.
I started the software from a “Herocentric” view. First looking at the Hero data, reading values and finally overwriting values.
Now it seems more obvious to look from a “Playercentric” view. This seems logical since Players own Heroes. Also Heroes themselves do not own resources, gold and towns, the Player does.
This inevitably means that I will need to re-architecture the GUI to show the Player data in the first instance, and from there show the Hero and Town data that is selected.
The other alternative is a “Mapcentric” view. The Map has the towns and the Players own town on the map. From the map point of you, you could list all the Towns and Players on the map. Then finally all the Heroes in the possession of Players or in a Player’s town. I was considering this as a secondary view: as a kind of a “Spy mode” similar to when you visit the Thieves’ Guild. Here you could drill down through the Map > Player > Hero hierarchy until you can see exactly which creatures you opponent sitting so stoically on his horse just outside your town possess (and perhaps take away a few of his stronger creatures by overwritting them).
For now I will transition the software to a “Playercentric” view and reflect on whether that feels the most practical.