As detailed in our last blog post, I now have a grown up job which means I cannot spend all day sat at home playing Rocket League and occasionally working on Undead Blackout. Naturally, this has lead to something of a slow down in terms of updates to the game however patch 1.3 (which is live now!) is special as it is less of a patch and more of a complete reboot. To be honest this should be Undead Blackout 2.0 but then that just sounds like a sequel so I will stick with 1.3.
So what brought about this raft of changes? Firstly, the previous version of the game had all manner of issues with performance thanks to me being an idiot and not building it properly. Since April, when our last update came out, I have made huge efforts to understand where I went wrong and fix those issues. The remainder of this post will be highlighting what has changed, why I changed it and how it affects the game as a whole.
The core of the game has not altered much, this is not suddenly Undead Karting (oh my god I have just had a great idea), you still run around shooting zombies and collecting keys. There have been lots of tweaks under the hood to improve the gameplay as well as bigger changes to the design of the levels in order to streamline the action.
What comes next though? Well I am still working on the Xbox One version, in fact a lot of these changes have come about as a result of porting the game to console. Steam achievements are pencilled in for 1.4 as well as some aesthetic changes to the doors to make it more obvious which needs keys and which do not. There will also be further optimisation efforts across the board. Lots to crack on with then.
So without further delay, to the changes!
I’m Gonna Level With You
First, a confession – I built all the old level’s wrong. Not necessarily in their layout, but the actual materials used to build them. You see I used a lovely and very useful Unreal Engine Marketplace pack called SuperGrid Starter Pack which is brilliant for planning out your levels, what you are not supposed to do is actually ship your game with them as they are more expensive than basic static meshes. I am sure at this point you can guess what I did.
But it has been remedied now. Every single SuperGrid instance has been replaced with a much cheaper static mesh that I build using my own two hands (well, my mouse) in Blender. The Docks have remained largely the same in terms of the layout while The Sewers, Jarvis Prison and Redfield Manor have kept many of the original elements in place but the (renamed) Shoreside Hotel and Bunker have been massively re-designed.
The Frames Per Second (FPS) look to have doubled across some of the busier levels so there has been a marked improvement in performance.
Don’t Go Upstairs!
Idiot people in horror films always go upstairs instead of heading for the front door and running in a straight line. That doesn’t have much to do with our game but it does annoy me. Anyway, the whole upstairs element of the game has been problematic from the very early days of Undead Blackout. Having to create levels with enormously high ceilings to accommodate the top down camera meant really, long annoying staircases.
I tried to make it so the top level would disappear while downstairs but this caused so many bugs and issues with zombies appearing and disappearing in thin air that I gave up on it. Plus fighting on stairs was crap. So the obvious solution was to simply get rid of upstairs and that is what I have done, some stairs still remain purely for aesthetic purposes but they have been blocked off by debris.
The Big Picture
The lack of stairs means that I can zoom the camera out some more and that is what I have done, meaning the player can see a larger area and therefore anticipate zombie attacks and navigate the world in an easier manner than previously.
Torch The Place
The extended field of vision led me to decide to also increase the length of the torch light, again to aid with navigating the levels. I have also given it a slight blue tint as it just looks cooler than before.
The AI for the zombies was previously written entirely in BluePrint code, that is to say I did not make use of Unreal Engine’s Behaviour Tree functionality, mostly because it looked really complicated and scary.
But I got over that fear and learnt how to make use of it as (apparently) it is a much cheaper way of getting your zombies to run about the place which means it should have resulted in an improvement in performance. And I think it did! Can’t say that I did any super scientific testing but it looked to increase the FPS by maybe 10-15 on most levels.
The other thing I have done is to actually simplify the zombie behaviour, previously once they lost sight of you they would investigate the place they last saw you and then if they cannot find you, would wander around.
Now while that is realistic it actually meant the amount of action decreased as the player sprinted around the level losing zombies. Zombies will now follow you once they spot you, less realistic yes but it is a zombie game so not exactly aiming for realism here. It is more fun, you get to shoot more of them and that really is what the game is about.
Spawned From Hell Itself
Zombies spawn into the world in specific areas based on the number of zombies that are currently in the level. As soon as you kill one, a new one will appear somewhere in the level in one of the spawn areas the player is not standing in.
In order to increase the action/fun levels, I have applied a bit more logic to this so that now the zombies will also not spawn too far away from the player, some of the levels are quite big so a zombie spawning all the way at the other end means you are unlikely to ever see it and blow it’s brains out.
Also, I have set some spawn areas to not activate until the player has made a certain amount of progress through the level. This also helps to keep the zombies vaguely clustered around the player.
Don’t Wander Too Far Now
Another element of keeping the zombies near the player without simply just telling them all to go to the players location is that I have now set zombies to destroy themselves should the wander too far away from the player. They will then respawn based on the logic previously discussed.
Burn Baby Burn, Zombie Inferno
In a couple of the levels there is a “Burned To A Crisp Zombie” which was actually quite hard to see in the darkness, so to help with that (and also because it looks awesome) the “Burned To A Crisp Zombie” is now the “Currently On Fire Zombie”. Yes, they are an undead source of light.
The Collision Box that surrounds the zombie and tells them when they are close enough to the player to attack them has been slightly increased in order to make the zombies a little bit tougher. It seemed to me like they had become a little too easy to fight.
The logic I used previously for deciding what footstep noise the players and zombies should use was terrible. It was a load of trigger volumes and if I wanted to alter a sound I would have to go and alter it on every single trigger which was terrible. These triggers have been replaced with a BluePrint version which now tells the player/zombie which footstep audio file they should use and it means I can make one change which will filter down to all levels instantly.
To B Or Not To B
Sprinting was previously mapped to the L trigger on an Xbox pad but this has now been moved to the B button (right hand side button of the four) while Reload have been moved to X (left hand side) and Toggle Torch has moved to Y (top button).
These minor tweaks make it somewhat easier to control the game plus there was a weird thing where the player would sometimes not sprint when using the L button, perhaps that was just two of my controllers but whatever, it is done now.
Fixed an issue where the ‘Danger’ music in The Docks was completely wrong and didn’t match up with the main track. No idea how I missed that one but there you go.
The Toggle Window function in the Options didn’t actually work properly it turns out. Now it does though! Toggles between fullscreen and a much smaller windowed screen should you want to play in the corner of your monitor or move it to a different screen. I assume the latter is the main use case but I mean, maybe someone only has one screen and also wants to keep an eye on Twitter or something.
That’s your lot for now, chat soon.