Unreal // C++ & Blueprint // Mechanics Design // Prototyping // Scripting
Unreal // C++ & Blueprint // Mechanics Design // Prototyping // Scripting
Sustain is an isometric tower defence game, where you must extract resources from an alien planet, while defending yourself from the local wildlife, all in service to the enigmatic, obviously very ethical, "Sustainable Mining Company".
Sustain is a university project, developed by me and my team, Jaggy Beams Studios. It was created for Abertay's professional project course, following a brief given to us by Modern Wolf.
As a technical designer for the team, I had a wide variety of tasks helping with various aspects of development, including:
Isometric Camera: Designing, implementing and tuning an isometric camera controller, with panning, fixed degree rotation and zooming.
Turret System: Including individual turret states, a turret manager, targeting behaviour etc.
Enemy Types: A scalable system for easily creating and tweaking different enemy types, including various stats , likelihood to spawn etc.
Upgrade System: A scalable system for easily creating and tweaking upgrade tiers for gameplay elements like turrets, ship and shield.
UI Implementation: Helped to implement the games HUD and Menus as designed by our designer, helping to see their designs and ideas in-engine.
During development of Sustain, myself and the team's games designer would collaborate on the design. I would design the mechanics and the designer would test and change values to balance the game. An example of this was with the enemy system:
The values for each enemy are contained in a EnemyType struct, and organised together in a map that altogether stores a small, medium and large EnemyType.
Schools are the number of each enemy that spawn per wave, using their key in the EnemyTypes map to spawn that particular variant x amount of times.
By exposing the different EnemyType structs and the EnemySchool arrays in Unreal, the game designer can test different values and tune the game's balance without having any Blueprint or C++ experience.
Sustain has been a blast to work on, allowing me the opportunity to learn C++, Blueprint and Unreal Engine and further develop my mechanics design skills.
Additionally, working with multiple programmers on very interconnected systems, and especially with Blueprint, also exposed me to best practices with Git version control, which previously I had struggled with.
However, my initial lack of experience with Blueprint and C++ led to some architectural problems. The greatest of these was putting multiple interconnected but different systems inside one "controller" Blueprint, which grew and grew as development continued, becoming cumbersome and especially difficult when it came to merging changes between branches.
The fast paced and short timespan nature of the project means mistakes like these are hard to address, as more pressing gameplay features required development time. If development of Sustain continues past the scope of the University project however, I would like to refactor the structure of the project to be more scalable for future development.