Message log

As the combat side is ready enough to play out simple battles against the AI, I moved on to the strategy scene. One big thing to do here is the strategy AI. It can already expand quite nicely but it assumes there is no one else in the game. While I was planning how to do the whole AI opponent I decided to improve on some small things in the Star Map scene which make it a bit smoother to play.

The object that is currently pointed is now highlighted and the fleets on the star map now go into nice circular formations around the planet they are at. But the biggest thing I implemented was a message system which logs important things that happen and lists them for the player on the right hand side of the screen. These things include discovering new planets and tech and informing that a colony ship could colonize a planet etc. Clicking on the messages changes focus to any corresponding location or panel.

Here you can see a short gameplay video showing these new features. You can also see some other things which I haven’t  shown or explained yet like the AI expanding, different planet types, the planet panel which you use to set what the planet does. At some point I’m going to do videos about these and explain how the production, research, food and population growth mechanics work.

Start of better combat AI

It took some time to design the combat AI so that it can do something else than just to attack enemy ships one by one. Now it, well… attacks enemy ship clusters one by one. While that is already better than the last AI, the more important thing is that now the AI system can be extended to do a lot of other things too. It basically has two state machine layers: the strategy layer and the tactic layer. The strategy layer keeps track of what it would like to achieve (attack, defend, flee) depending on the situation  and how well it is going. The tactic layer then does the commanding of the ships according to the current strategy. Now I can add as many strategies and tactics as I want. I hope this is enough to make a challenging AI for the game. The goal is to make the AI challenging by making it do smart choices and not just by giving it bonuses in resources etc. The strategy layer of the combat AI can also transmit goals from the galaxy map to a single combat. I don’t know if this is done a lot in strategy games but I think it should be an important part of these. This means that the AI should know its goal for the combat – is it a last stand and it should not flee, was it a result of a bluff attack and it should just flee, should it flee to join another army and defend/attack with that, should it try to disable enemy carriers in this combat and then flee or anything like that.

Cluster tracking

More nice looking technical stuff. Here you can see the movement of different clusters and how they are assigned together every step. This is how the AI will keep track of how the enemy moves and if the clusters split up or merge. Currently this does not depend on how the player has set the groups. I didn’t want that to affect the behaviour of the AI because it could have some unwanted effects, like the player having to think how the groups should be set so that the AI reacts poorly. But that info is not going to be hidden from the opponent, I think. I might use it to visualize the enemy army for the human player.

Group aggressive attack

Until now I have had attack commands only for individual ships. But as I now have ships doing everything in groups I had to add logic for group attacking also. Here I demonstrate aggressive attack which means that the ships try to get close and match the velocity of the target group and then just shoot at it and stay in formation without evading or anything like that. The other option will be evasive attack, in which the ships will try to stay in motion and probably break formation more. In evasive mode the ships will have a chance to evade incoming shots but they won’t have so much time to concentrate on shooting at the enemy. How well the evasion works depends on the accuracy of the shooter and the speed of the incoming projectile.

Formations

Now that I have groups, I could finally add the whole formation system for them. The ships fly and stay in their formations and they reorganize in the formation as needed. This happens when formation is changed, a move command is given or ships leave or join the group. There are found kinds of formations now, but that could change. The idea is that there should be formations for different situations, so how they work in real combat have to be tested.

Carriers

Of course there has to be carriers, so I added them now. The ships form queues to dock to the hangars and precisely float in. Once they are in, any number can be undocked. Undocked ships then follow the carrier in formation, so that they are not left behind.

Advanced map generation

I refined the map generation process and isolated some parameters to be chosen freely when making a new game. The first one is naturally the number of civilizations in the game, called “player count” in the video. The next one is the number of star systems in the game. It can be chosen freely but in the end I will probably make it a discrete scale with tiny, small, medium, etc options pointing to some number of stars. Then there is a parameter called “edges leaving a star”, which means how many edges on average there should be connecting to one star. A number of 2 there means that the whole map could in theory be just one line or a chain of stars. The parameter “location balance” means how balanced the starting locations are. A value of zero there means that they are totally random, and one civilization could start in a dead end star system with another civilization blocking it. A value of 1 means that each civilization has almost the same amount of free star systems around them. Finally there is a looseness parameter, which means how big the diameter of the map can be.