I wanted to update you with the current progress, on the last blog post I talked about Saving & Loading. I’ve come to realise just how important it is for the project, which sounds silly…but If the demo is intended as a technical demonstration of Underhell running in a newer engine, then I need to ensure the world and the systems I have built is not just a house of cards waiting to collapse. The framework that I’m building needs to ensure that it won’t come crumbling down whenever we attempt to expand and develop it further in future. Saving and Loading is an important part of this and it’s been taking up a lot of time integrating it with some of the existing code. I really need to do this now before the project gets any bigger.
The demo is not intending to be any kind of visual spectacle or as a “wow look how much better it is in a newer engine, source could never do this” – it is a technical demo intended to show that yes – Underhell is in a different engine. Although the first two points will be answered in any future updates, it is not something that I can build all at once. We will put the bells and whistles on later.
So how’s is the Save & Load system going?
I’m really enjoying the challenge. It has given me a new perspective on game lifecycles and forced me to come up with some unique and clever solutions to solve some issues. It’s allowed me to start working smarter and this is very good because it makes newer systems easier to plan out. I know that to some expert game developer I probably sound pretty stupid for not considering the affects of how saving & loading would affect some of the code I had already developed – but we all have to start somewhere I guess. I also honestly (and stupidly) really thought I could probably get away without a save game system for now.
So my time has still been rather limited, but I’m basically spending my time in debug maps and various parts of the demo as I find, develop and fix issues with Saving & Loading.
For example, I have to ensure that doors will save & load their states correctly, ensuring that everything they need to function within the game is saved correctly and loaded back into the right state.
It sounds trivial, but for doors that need keys to open them, you want to ensure they retain their states, otherwise if you would have game logic issues.
For example, when you unlock the Butchery using the Butchery Key – you are transported to the other side of the door and a small cutscene plays. If you do not handle saving and loading for this door and the locked component of the door – then you would be able to constantly re-trigger this event every single time you launched the game to resume from your save. This is likely to cause bugs, get you stuck or maybe (if I’m naughty – crash)
Other examples include ensuring that things such as timers, keycodes and items are all saved and restored correctly – otherwise the code to the wardens safe would always be different during saves and you could keep retriggering the High Security block alarm constantly. The same applies to items, if you constantly reload your save, then existing items you have already picked up are not removed and you end up with huge loot piles throughout the world.
My biggest challenges are now tackling AI and scripted scenes & sequences. I need to ensure that when saving during important events, such as the Hermit talking about his precious card deck, that we don’t re-load the game and the scene never resumes the scene. If the scene does not resume, then AI never continues to move or re-run their previously saved action – which is important and can break gameplay completely!
As a test, lets make an NPC walk backwards and forwards on command, then test that we can save the game at any point, reload and see that they continue their path! Otherwise you could get stuck if the game logic required an NPC to walk to a door and unlock it for you.
We need to track and manage resuming all of Hermit’s speeches correctly, otherwise he stands there like a mute and doesn’t let you leave!
So all of this is basically just taking up a lot of my time. It’s a lot of testing, repeating and coming up with creative solutions to support some of the complex and integrated systems of Underhell UE4.
I know its disappointing for another update to pass by with no download link and I do wish I had better news for you. I think to try and force myself to park all my progress so far, and jump back to the last playable build (which was early March!) would be difficult as I cannot possibly try to maintain making changes to two different branches by myself.
I am therefore asking once again for you to give me some more time so that I can finish the new version with these changes.
Thank you for reading and I hope that you are well.