A nifty diary #3: generated enemies in their natural habitat and more

Lots of things happened over the last few weeks, none of which are particularly presentable. Since the blog has been quiet for a while, we’re going to present them anyway.

Feature creep
Feature creep is the scourge of humanity, or at least of software development. We have noticed some of the symptoms of feature creep – mainly the steady increase of features and the lack of increase on things like content – and decided to take action. So we defined a set of missing features which are absolutely vital for the game and we are determined to implement only those at least until we have a demo to show (wish us luck). We will post about those features as soon as there is something to show.

Data structures, memory and concurrency
The grid, the core data structure which handles everything contained within a level, has been updated yet again. The current (and hopefully final) version uses a sparse implementation and pointers to the position of an object within the grid. This allows for a delayed and completely concurrent access to every object. With this change we were able to separate steps of the update of objects which had to be executed consecutively before. This finally led to the possibility of a parallel game loop.

Parallel updates
Most CPUs nowadays have more than one core. This is great when you want to do multiple things at once but makes it difficult do utilize the full power of a CPU in one application. This is why even today, a lot of games are not parallelized to the degree necessary to do so. With the latest changes, we made a step into that direction. The logic of the game loop which calculates the behaviour of every game object in every frame is now capable of using multiple cores at once which should lead to an improvement of the framerate on lower end CPUs. Due to the architecture of OpenGL, it won’t be possible to parallelize the draw logic as well, so we won’t be able to use all the computing power which is theoretically available.

Procedural enemies
The enemy generator described in this post is now integrated into the game. While it does currently not unfold its true potential, it is still interesting to watch. We also added a similar but simpler algorithm for generating swarm enemies. The current state of this endeavour is demonstrated in the video below.