Hi, I love game jams.
So during the holidays I decided to try to do a little project
The goal was to create a shippable game in as less time as possible and to also not use much C++ and do the bulk of it in Blueprint using Unreal Engine 5. ( The project ended up having 2 main C++ lines and that's it )
The objective of using BP as much as possible was to showcase that a game can be created and released using Blueprint, even if the game requires procedural instancing of levels or other complex topics.
So I decided to create a Horror Game inspired by PT, The Exit 8 and I'm on Observation duty type of games. A "spot the differences" horror game.
This is the game if you are curious:
https://store.steampowered.com/app/2760600/Escape_Floor_Zero/
Main technical challenges:
- Level geometry that changes depending on your choices, so a little bit of procedural level instancing is required
- Random anomalies that can modify the level and are very varied
- Very constrained time resource, so everything needs to be iterated fast
- Solo Developer so I had to do everything
What went well
Blueprint
Blueprint is incredibly powerful and I would not have been able to finish the game if I had the iteration time of C++ and needing to compile every time. Being able to try things fast and throw what did not work away allowed for ultra fast prototyping of both the core gameplay as well as each of the game anomalies.
Level Instancing
Using Unreal Level Instances I have been able to create the pieces of the map once, and then start instancing them with the transforms as needed. The only things here is that getting which actor was in which level instance required those two lines of C++ as that functionality was not exposed to Blueprint. At the same time, due to shadowmap setup, when a level instance is spawned there is a performance hitch, so I still have to work on that.
Steam Publishing
Publishing and integrating with steam has been pretty painless and specially integrating achievements with steam and unreal can be done in literally 30mins. Once you have the setup then you can connect as many achievements as you need.
Using Lyra as a starting point
This would not have been required at all, but has been helpful specially for the settings menu. That being said I should re-skin the settings menu to better fit the game, but right now have not had time to do so.
Learnings
The Noodle Bowl
The game being full blueprint, if you do not prepare well, things can get out of hand quickly.
In my case prototyping and production were one and the same, so a lot of code ended up being placed in the Game Mode and now it's a big spaghetti plate that is difficult to maintain.
If I were to do things again I would separate things more or even create a specific actor/subsystem to manage the level stitching.
Do Builds Early
Fortunately I did builds quite early from the start and this allowed me to test out controller support, performance, steam integration, etc.
But if you don't build early and often you might find out too late problems that will take much more of your time than if you have found them out earlier.
Initial Design Is Important as a Solo Dev
Had I chose to go with a more character oriented game like a third person hack an slash ( which I'm working on in the future ) this project would not have been finished in this timeframe. The amount of work that having animated characters requires and the kind of interactions they have is incredibly big.
Asset Creation
For this game I chose to do a first person game that required as little as characters as possible.
For the assets I used Quixel Bridge which is integrated in unreal and some marketplace assets that Epic has been giving out free each month.
As a solo dev you have to move fast, so what I did was take the assets and modify them to my needs. ( change color, combine pieces, etc ). For instance, one of the monsters is a scaled up chicken combined with a scaled out wolf + some cables instanced multiple times and rotated. Of course this will not work with all genres of games, so that is why the previous point is also important.
Stick to the Vision
When you are developing a game with no constraints it can be easy to let your imagination go and start adding features that no longer meet the initial vision of the game. It is fine to prototype, but once you have a clear vision, stick to that and finish it. If not it will be difficult to be able to finish the project and instead you'll probably end up with tons of cool features but no game. ( That being said I could not resist adding some secrets for the players to discover )
Conclusion
All in all, this has been a great experience to see what can be accomplished in such a little span of time. Right now what remains is polishing and to get people to see that the game exists. As I'm not very experienced in marketing and this topics I will need to research quite a bit in ways to get the game seen by the players who might enjoy it.
I hope this helps you out if you are trying to create a game as well as a solo dev and if you have any questions feel free to ping me.