My third year final team project
This was the big one, this was the project to really show off what we could do. The third year team project was definitely the toughest, but it was also the most enriching. Read below to understand the journey of the project.
The Quick Version
- Producer - handled scheduling and discussion during meetings, managed task board.
- Programmer - designed and produced combat, interface and narrative screen systems, bugfixing.
- Audio Director - scheduled and recorded all voice lines with actors, designed sound effects, composed music.
My roles:
- Player Combat and Animations: I handled the programming and engine work to produce the combat system and integrate all player animations. This was done using C# scripts and Unity's animation controller system.
- Audio Systems: I procured all sound effects for use in-game, using custom C# scripts and Unity's audio system to create immersive soundscapes. The voice actors were scheduled and recorded by me, and the voice lines were mixed and integrated by me.
- Loading and Intro Screens: The loading screen functionality was integrated by me using preliminary work done by Harry, another programmer on our team. The intro screens were sequenced and animated by me.
- UI: The final design used in game was a put forward by me and refiend by our artists. I facilitated the functionality and integration of assets.
- Music System: The music system was designed after dynamic music systems in games. I wrote some scripts to handle the changing of music tracks at run-time. I composed and integrated all music found in-game.
- Trailer: I put together the trailer using recorded in-game clips and following a story board created by our writer.
My Contributions:
The Long Version
Overview
Solar Spark is an action-adventure hack and slash set in a solarpunk world inspired by ancient Egyptian mythology. Playing as the powerful exiled queen Eset, you undertake a journey to rescue your beloved Osiris from the dark clutches of Set. The game features fast-paced combat, exploration and puzzles to provide a balanced game experience.
This project was the largest I had worked on during my time at Falmouth University. The range of tasks I performed was diverse, and I learned a lot during the production of Solar Spark. I had a hand in many aspects of the game as producer, but I only made judgements I was qualified to make, and I trusted each team member's individual capabilities to fulfil their tasks.
- Producer - This was a role I picked up later during development as the team found its footing. I had little experience with a leadership role at the time, so it was an incredible learning experience for me and I was driven to not neglect this essential responsibility.
- Programmer - This is my specialism, so this carried the greatest share of work for me. My primary mechanic focuses were the player combat, the entire audio system and the narrative screens.
- Audio Director - This is a role I was very excited to take on. I carry immense love for audio design and music systems in games so I was happy to be responsible for every single sound, track and voice line within the game.
Summary of roles:
Our main selling points for the game were the combat, the story and the exploration. The combat was difficult to polish as we were constrained by the modelling and animation pipeline and responding to feedback from playtesting given incomplete or missing assets was a difficulty. The system we settled on
Teamwork was critical to the success of our game. We had a team of thirteen people, which was one of the largest within our year group. This led to challenges with management and pipeline, but we found our flow and methods to maintain the vision for the game. I loved the creative collaboration we fostered within our team; our discussions, negotiations and celebrations were among the most valuable learning experiences for me. We integrated our disciplines together very well, as good communication was practiced over the course of production, and weaving the overlaps in our skills together was an intricate and rewarding process.
The game we were left with was one we could be proud of.
My individual contributions to the project:
Player Combat and Animation:
I was one of the main advocates for the combat system we have in the game. I was part of the designing process and was solely responsible for producing the mechanic. It was important for our genre of game that the combat was fluid and flexible. Given that our combat was very animation-heavy, I elected to use Unity's animation controller to work as a finite state machine for player combat
The premise is that the combos are linear and have a pattern, but every attack would lead into another perfectly. You could seamlessly switch from a light attack to a heavy attack. I was happy with this system as it suited the game very well, letting the player mix and match their own combos.
We also had a basic special attack and heal within the game, both of which used the "heat gauge". Heat would build up with every hit the player scored on an enemy, much like soul from Hollow Knight (Team Cherry, 2017). The design motivation behind this was to keep the player engaged in every encounter. The lack of regenerative health would stop the player from being able to endlessly kite enemies around to heal. Building up this resource would allow players to recover health, or get a strong AoE attack to reward skillful play.
Our animation choices were constrained as our player model was delivered very late in development, so I used Adobe Mixamo animations for the player, adjusting them to suit our needs. Animation events controlled much of the mechanic; enabling or disabling variables (hitbox, movement, etc.), controlling timings and playing sounds. I found that animation events made it easy to tailor the macro aspects of each attack. It allowed our designers to tweak elements of the combat and avoid using scripts and having to adjust specific timings relative to the animation.
I actually ended up handling all animations for the player. I was happy to work with the other programmers and their scripts and implement animations with my system to maintain consistency and avoid spaghetti-ing the code. The image below is the primary layer for the player, covering movement and combat actions. The other layers covered damage animations and dash animations, so that the motions didn't interrupt the player's momentum. Mixamo wasn't made with this sort of system in mind. The animations from it were more rigid and seemingly intended to be used "out-of-the-box". The lack of custom animations led to a feeling of stagnation within our attacks. We mitigated it as much as we could, but it wasn't quite perfect.
Audio Systems:
Producing the audio system was enjoyable. I created a selection of functions to play sounds in different ways. I made liberal use of a trick I learned in my first year of uni: using one sound and slightly adjusting its pitch every time it was played added easy variety and prevented it from getting old. I only had a small number of recurring sounds but by implementing that simple functionality made it sound like there were more.
The way most sounds were played was through a single script on each object. This script stored all the sounds and audio sources an object would use. This made it easy to have one script work for multiple different objects, and could handle being played in code and through animation events. Some objects needed more bespoke audio work, but that was handled through inheritance so only minor changes would need to be made. The system was flexible and spending the effort to make it reusable made it significantly faster and easier to implement audio across all required objects.
Some sounds I had made myself by recording and adapting sound clips, turning them into something wildly different. Most sounds, however, were taken from Soundly. The sounds were all adjusted to fit our specific needs, and our game audio sounded diverse and complete. The voice lines were recorded in a studio on campus with Toby Cooper and Ellie Potter as voice actors, Ernest directing the delivery, and me managing all the audio tech. Collaborating with the acting students from the same university was incredibly fun. We had to send out a casting call and audition every candidate together. Scheduling the recording sessions alongside our routine studio working sessions was a time management challenge but we made it work.
Loading and Intro screens:
The loading screens and intro screens taught some new skills about instances and how to prevent leaks of objects duplicating themselves across scenes. The decision to introduce loading screens was pitched by me, because we had a variety of environments but no smooth way of transitioning them. We originally wanted transition levels, but these were out of scope and we still would not have had a smooth way of moving on to another level. The lore information in the loading screens was also my way of conveying details about the world, much like Metro 2033 (2010). We originally wanted a collectible system to encourage exploration, but we decided that it would be out of scope to create a worthwhile system.
I asked our artists to work with our writer to determine the key lore points to convey. Most elements of production took up a lot of my attention, so I encouraged them to take liberties and make the creative decisions themselves for this aspect. I was very impressed by the art they had produced and it made the
Music System:
Producing the music for the game was the most creatively enriching part of development for me. We wanted to reflect the themes and artistic influences within the music. I tried to reflect the character of the game in the instrumentation, rhythm and tonality of the music. It was difficult to settle on a particular key for any given track, some used standard scales, but some used dominant Phrygian scales to really convey the harmony of Egyptian-style music.
When making the tracks for the game, I wanted the character of the music to reflect the in-game situation. I designed the music so that each track had two versions: calm and aggressive. To avoid abrupt cuts and changes in track, I wanted to seamlessly crossfade between the two moods of the same track. While this led to a greater creative challenge when composing the music, it enabled an immersive and compelling experience in-game.
Sobek is the only track which didn't need the smooth change in track, and instead I wanted a powerful piece of music which reflected him. I wanted something along the lines of Toby Fox's Battle Against a True Hero, as that reflected a deadly turmoil and I broadly followed that structure. The track needed to be crunchy and electrifying, and it enhanced the boss battle experience when it was added, and became something of a highlight, like a pretty bow to top it off.
I put myself forward for the responsibility of music early on because I wanted to develop my composition skills. I tried for a long time over the year to produce the music but I had the worst creative block I've ever had. I'd work for several hours making a track to a point where I felt somewhat happy with it, but the next day I'd listen back and delete it. When the deadline was a few months away and time was getting tight, I suddenly had creative clarity. The tutorial and city tracks were my first lot, so they didn't have the same level of polish as the temple and Sobek tracks.
Trailer:
Making the trailer was a tense process as it was left late to focus on polishing the boss battle against Sobek. I put myself forward to make it because it would have been unfair to let my managerial decisions befall someone else with the consequences. It was a fun adventure, though, as stitching together gameplay footage with the voiceover and music over it made the game suddenly more attractive. I made sure to showcase everything the player could do, along with a bit of each of the game's pillars to provide a well-rounded image of the game.
I worked closely with our writer, Ernest, to record lines for the trailer well in advance. We actually had three different versions of the trailer lines: one voiced by Eset, one by Sobek and one by the villainous Set. It actually gave us a good deal of choice where we could have mixed and matched the lines. We settled on only using Eset's lines because she was the main character, and her voice acting was central to the game and the narrative.