Performance
Nothing is more annoying if you play a game and it freezes in a crucial situation. In some cases it's because the game settings are too high for the computer hardware, in some other cases it's bad optimization.
Because I don't use a prefab engine and built everything from scratch, I encountered many situations where the game started to stutter, even with simple operations, and so I had to implement different performance solutions.
Some of those tweaks are:
- Parallel processing with multithreading (in Boost) and SSE-Intrinsics
- Pre-calculation of random numbers and complex formulas
- Bundling of same objects
- Clipping and exclusion
- Detecting and removing of redundant operations
Instancing is a new solution I tried last week. It is useful if you want to render many identical objects at once like plants, stones, an army of hungry zombies or bullets.
A great help was the article from Jari Komppa about Instancing in OpenGL which also illustrates the performance gain with different methods.
Boss Enemies
As mentioned the game will feature only boss encounters (in general). But because this can be annoying and bosses need to be special, every one gets different and unique mechanics, attacks and visualizations.
Some of those mechanics will be:
- regular collecting or destroying of important items and enemies
- reduced view with cracks, dirt or snow on the imaginary screen
- constant damage, but collecting enemy bullets or destroying certain objects regenerates health
- stings on the screen-borders and wind or attacks pushing you towards them
- damage reflection, upside-down movement, guardians, additional weapons to do damage, light and darkness, teleportation, constant movement, precise shielding against unavoidable damage, and so on ...
There will be 12 boss areas. An area consists of 3 bosses with the third as the major one with additional challenges. These final bosses have also a bonus-phase at the end which can be unlocked through certain conditions and does not count towards the normal fight (e.g. highscore). Success in all 12 bonus-phases will unlock something special.
Every boss has 3 difficulty levels with altered attacks and mechanics and an optional extreme mode where every hostile attack destroys your ship (except for mechanic relevant damage). To make highscore reasonable, the bosses need to act deterministic, so randomness should only be created by the players actions.
Beating all 3 bosses of an area unlocks the arena, where you can fight them one after another, with new challenges but reduced boss-health. I also consider again the idea to add a few enemy-groups before each boss (which will not be present in arena) and adding a general boss-rush at the end with a random order (except for the last boss).
Currently I'm working on the first 3 bosses, which will be more basic than the subsequent ones, to create a more smooth start into the game.
I hope the links in this article are useful for someone out there, and I was able to give a short introduction to the boss-only-concept. There are still some holes left to make it more interesting, but this will be a task for the next year. Because of the Holiday Season the next update will be delayed by 1 week.
Thank you for reading, I wish you all Happy Holidays and lots of bacon!
- Martin