I have to admit that I wasn`t that hard-working during the last weeks, mostly due to the hot German summer and the soccer world championship. “Deutschland ist Weltmeister!” We were all waiting for this sentence but we won`t hear it during the next 4 years :(. Nevertheless I am honoured because of the way we lost. Nobody started to fight violently, neither on the football field (as Argentina did) nor in the streets (nobody will ever forget what German hooligans did in France). Instead everyone wants our coach, Klinsmann, to stay and improve our team, which is a great contrast to the generally pessimistic attitude in Germany.
But this blog is about BlueWar, so I have to write some lines about it, right? Right!
There were lots of tasks on my ToDo list, for example the pathfinding system. I recognized that there were lots of pointers to the same units in the main update queue, which made the units search for a path multiple times (and “multiple” means a lot, one time I checked, there were 50 duplicates!). This caused severe lags, which are solved now (I hope) by preventing a second pointer to be added. Only one (probably very) big problem is left: the computer player causes lots of “moveto”s and the pathfinding algo wastes too much time to cope with “no path possible” situations. I read an article written by a developer of Age of Empires which also mentioned this problem. They solved it using different approaches which I don`t understand completely, nevertheless I hope to improve the situation in BlueWar by limiting the time spend on pathfinding every frame.
As promised in an earlier post I worked on new PlugIns, especially weapons. PlugIns now have different priorities which influence the order in which they receive commands. This empowers the developer to create special queues like “update_targets”: if this command is executed by the AI plugin, at first the radar updates the object`s “enemiesInSight” list. Then this list can be edited by a enemy-priority plugIn to prefer a special enemy or type. After that, weapons receive the command and choose an appropriate enemy to attack.
There are only 2 weapon types at this moment (missle launcher with different missle types + machine gun) but the code for these weapon plugins is really small and it will be very easy to create new ones in the future. I also want to emphasize how easy it is to plug these weapons into a totally different object with just one xml line! And you are not limited to one weapon, of course! Take the fighter aircraft, for example. It has 2 machine guns in the front under the cockpit and 2 missle launchers (1 under every wing). This works brilliantly 😀
OK, this was a bit too much self-celebration, but I hope you got the idea.
Last, but definately not least: BlueWar is an accepted OpenSource project at sourceforge.net (https://sourceforge.net/projects/bluewar)! I chose an LGPL license which is not as strict as the GPL. Now I (and possibly more people who want to contribute) have access to CVS or SVN (I still have to decide) which will ensure a stable development (I hope).