v1.0 is out now! (Design Process log)


Hello to every Map Painting Enjoyer out there!

Ages of Conflict, an AI-only Free-for-all game is out now. I would like to use this devlog to discuss the Design Process for the project. If you are interested, please check out the game and provide feedback where possible.


I've always loved history, maps and simulations. I have over 2000 hours in Europa Universalis IV. As such I wanted to try and develop a simulation game. At first I tried ecosystem simulations or village simulations, similar to those by Primer and Sebastian Lague. I had problems developing a concept that would be fun to follow or play and I quickly realized that 3D would be too time consuming to develop.


Ecosystem Simulation v1


Cops VS Zombies


Ecosystem Simulation v2 (Keeps track of population, average size and vision)

Map Simulation

The concept of a free-for-all world map game formed quite quickly. Though initially I planned the game to only have player created nations. While this could have worked fine, it would require the players to "waste" more time creating a setup and get to the fun  part. Few years ago I actually tried to develop a game similar to EU4, but quickly shot it down because I couldn't come up with a solid solution for creating a map which contained data and could be translated to a visible map.


Provinces in Europa Universalis IV

Then came the realization that at least for now the only information I would initially need is if a land tile would be land or water. Basically zeros and ones. I could create an initial black and white texture to form the data. Thanks to CodeMonkey's tutorials I created a grid from a source image and used his heatmap tutorial to create a map mesh.

I wanted the tiles to be independent and not know about each other, and for an external manager to simply get and set information on them. The first hurdle to overcome was to figure out how expansion would work without needing to check every tile every frame to check if it had an empty or enemy neighbour to expand to. For this I created a MonoBehaviour Army class which would get instanciated with the knowledge of where on the grid it is and what nation it belonged to. Then it would periodically send out an "attack-to-random-direction" signal to the Map manager and lose 1 point of health. This way there would be randomization on how well the nation is expanding. Some armies would waste their 4-hit health pool trying to expand to friendly territory and so on. After all their attacks it would destroy itself. Upon expanding the nation would spawn a new army on the new tile. Later in development I made it so at peace the nation would reset all its armies to the border and around its major cities to improve performance and not leave questionable gaps to defence.

Gameplay Loop

Combating the eventual situation where only one remained I created revolts where attacking and annexing nations could result in large areas being seized by rebels. Balancing this continues to be quite hard, as the players obviously want to see nations reach large sizes, but seeing large countries explode is also fun.

Nation View and Statistics were also important to implement as the player might miss the annexation of a nation they followed. Ability to go back to past nations was therefore a must.

Other notes

UI development is hard and I hate it. I've still not decided on the style I want it to be. Do I want it to mimic the pixelated style of the map, or would a more HD style contrast well with it? Too bad I suck at both of them.

Creating colors for the nations was not simple at all. With up to 100 nations on the map, you should be able to see their borders clearly. I didn't manage to create a border line between the pixels so I had to create 100 distinguishable colors, plus another 100 for their "On War"-color. The current solution works, but for some the map might look washed out.

Picking sound effects took some time as well. Since you will hear these sounds constantly, they needed to not be annoying or distracting. I created these sound effects with the BeepBox tool. A trumpet sound seemed fitting for the declaration of war, and the other sounds turned out well too.

I eventually ran into performance issues with the map mesh. I decided that instead of one mesh where the UV changes, I would turn it into one texture that gets updated constantly. No 100k+ vertices mesh needed. This also allowed me to create a shader around the map to separate it better from the water.


Thank you for reading

Too bad itch.io doesn't show the length of play sessions. I would hope to get feedback to be able to improve the gameplay feel and fun factor. Do people enjoy this kind of game? It is pretty niche. Time will tell. I'll still keep developing it where possible. I've listed some features I already have in mind in the front page.

Get Ages of Conflict: World War Simulator

Buy Now$6.99 USD or more

Comments

Log in with itch.io to leave a comment.

hi :

(+1)

Good Job! Well Done, Good Game

(+2)

Awesome. Just read the whole thing :)