The Experiment
Engine: Unreal Engine 5 Developed: Solo Language: C++
A first-person survival shooter game with endless waves of twisted monsters known as “The Experiments”. The aim of this project was to familiarise myself with the process of developing and releasing a game from start to finish. This includes packaging, optimisation and more.
This project is a first-person shooter with my own ability system coded in C++. The game includes two weapon types which the player can swap between, 2 basic abilities, 1 ultimate ability, a points system, interactable objects, randomly spawning enemies, enemy AI and more.
Throughout this project I learnt many things, one of which was the importance of planning. I had started this project with a list of features I wanted to implement, however I did not take the time to plan out and design the classes necessary. This resulted in me having to refactor a lot of code. From this point onwards I have decided for all of my future projects to start with not only a list of requirements, but also the design of classes to allow reuse of code through the use of inheritance and interfaces.
This was also my first time tackling GPU profiling and performance optimisation. This led me to learn about the rendering pipeline, draw calls as well as how certain graphical settings increase the number of draw calls. Noticing that shadows had a great effect on performance, I added a set of shadow quality settings in the menu for the player to choose whichever suited their computer.
After releasing the game on itch.io, I very quickly received feedback on certain aspects which I have overlooked. Firstly, there is no description of the abilities anywhere within the game, and while the abilities have visual cues, it’s unclear as to what they actually do. To resolve this, in my future projects I aim to provide a brief description of the abilities when the player holds down a specific key. A second key issue which I overlooked was the lack of a mouse sensitivity slider. In my own playtesting during development, I had gotten used to the mouse sensitivity and therefore did not need the feature, however upon having others playtest the game, this was the most asked for feature. This has taught me to also keep accessibility in my mind whilst designing my projects.