The idea for devlogs on our website are to collate all of the work that the team has done over the past week or two. To start things off, we began our TIG forum post which has had a number of updates so far. It is yet to be seen if we will settle there or try some other platforms but it has been good to start documenting the game.
Basic Engine
Some may consider making what is essentially a FPS on a 2D plane as too much of a cutback but I find myself inspired by the simplicity of early games in this genre and the amount of content that can quickly be created for this kind of game. Early shooters of this style evolved quickly as technology advanced and I feel as though there is still a lot of design space that hasn’t yet been explored yet – Gun Godz being one of the few modern examples that interprets the space really well. In some ways it is more like designing a top down shooter except the player’s perspective is altered. It is interesting how even at this stage wall heights can give the perception of large spaces even though the gameplay is 2D.
All of the weapons (both player and enemy) use projectiles as opposed to a hitscan approach in the game to emphasise moving and dodging. Firing projectiles was causing some issues as the default collisions weren’t precise enough and the projectile would sometimes skip over objects if it were moving too fast. A script named collision_line_first (from gmlscripts.com) was extremely useful and is an easy way to check what object is hit first by checking a collision line between the projectile’s current position and its predicted position for the next step. The coordinates of the bullet can then be updated to allow it to stop right on the edge of an object which will be important for hit detection and effects.
The same scene as pictured above but from the view of the level editor. Stages will be created from a top down perspective as the game play is effectively two dimensional.
This image shows a bill boarding sprite test with 16 directions. This was one of the first challenges we faced – mapping a sprite sheet to a camera facing plane that would update the index based on the angle difference between the player and the enemy’s facing direction. While this example doesn’t show it, accounting for animation and different states also brings an extra layer of complexity to the system.
Combat and Enemies
Here is an early combat test with a number of soldiers attacking the player. We want the game to be fast paced and have a focus around small as well as large scale encounters. The AI shown below is for a basic melee enemy that won’t be too much of a challenge on its own but will be deadly in large groups. I will post more about enemy types later but the basic idea is that there won’t be too many varieties in the game but they will stay relevant throughout. This means there won’t be too much power creep in the weapons and even the weak enemies can be dangerous. Different group compositions will provide variety with clear strategies needed to defeat the more advanced opponents. They currently don’t collide with one another – partly because I haven’t coded it but I actually like how it allows them to move in really chaotic swarms. We have decided to forgo traditional health pick ups in favor of a bloodlust mechanic – killing will fill the bloodlust meter and once triggered, the player will increase speed and gain health from both hits and kills. The idea of this is to incentivise an aggressive playstyle where instead of hiding at low health, the player is forced to push forward. This also encourages a fast pace of play as the bloodlust meter depletes if the player hasn’t landed a hit recently (meaning playing passively is a huge disadvantage).
One consequence of this is that newer players may not be accustomed to playing aggressively and will find it hard to survive if they are unable to chain kills. Our way around this is by including civilians in the game. As a ruler of the people, Caesar has no ill will against the innocent and so the player will be faced with the moral question of whether or not to kill civilians to help chain kills, or take the harder path of only entering combat with soldiers. These units will also help to bring the environments to life and make levels feel more situated in real places.
We decided to make two varieties of the civilians so their placement would be a little less repetitive. They will also have some unique reactions to the player as well – some will flee or cower while others will cheer the player on – even after death Caesar had many loyal supporters!
If you would like to follow the development of our game on more platforms you can follow me on tumblr, Ivan or Matt on twitter.