In the past week, this time around I completed a set of sounds for the Heresy level following a similar process to last week’s effect-based sounds. In addition to this, I also finished scoring the Treachery and Heresy themes, as well as started mixing the sound balances for each of the tracks.
The work breakdown for the week was as follows:
|Task||Time Spent (hours)|
|Sound-related tasks||Planning what kinds of noise should be expected of each sound for the Greed boss.||1.5h|
|Sourcing royalty-free effects to mix into original sounds for the game. Appropriate baby sounds for the Greed boss were particularly challenging to find.||2h|
|Making showcase video for Greed sounds.||1h|
|Mixing 11 effect based sounds individually.
Includes experimentation time.
|Learning about / experimenting with sound implementation best practice in Unreal (different triggers, pitfalls etc.)||6h|
|Implementing sounds for the Heresy boss in UE4. Can only implement sounds on blueprints that aren’t being modified by other team members.||3h|
This week I accomplished less than the previous 2 weeks, and the tasks that I wasn’t able to focus on were:
- Music related tasks, such as scoring the Greed theme and completing mixing for the Treachery and Heresy theme.
- I had a bit of composer’s block this week, however at the end of the week I managed to record some melodic ideas to flesh out Greed.
- Finding an alternative (high quality) text to speech generator for Lil’ Lucifer.
However with that said, I didn’t have an unproductive week as I finished the set of sounds for Greed, the last of the 3 levels that our team will be developing as part of this year’s project. This means that all important sounds for the game have been implemented, and from here on only the menu and other auxiliary sounds need to be completed. A (rather large) QA will also need to be undertaken for all the sounds I have created; even I acknowledge myself that I would like to improve the quality and balance of some.
With that said, here is the showcase for the sounds that were created this week:
Apart from this, I spent a lot of time experimenting and attempting to learn the best practice for importing sounds into Unreal Engine. Actually getting the sounds in as uasset files is the simple part, but I found that it’s the way you choose to manipulate them in-game which makes a big difference. This is complicated by the fact that Unreal, in all of its comprehensiveness, offers many possible ways to do this.
Naturally the first approach I took was the simple one; in the Heresy Boss blueprint I would input the sound cues directly as events. However, I found that this was a poor approach as it did not give me very much control over the sounds that I implemented in the game; so in order to take a more object oriented approach, if I wanted to give ownership of a sound to any blueprint I would create a “Audio Component” within the blueprint. This is configurable like a proper object, and allows you to set the sound clip that it holds at any time, as well as being able to change this setting during run time. Audio components’ set sounds can share the sound clip with other similar Audio Components in other blueprints, giving you the ability to integrate a sound with a blueprint in the context of that blueprint. The main advantage of this over hardcoding sound cues into a blueprint’s Event Graph is that it exposes key events related to the playing of the sound, and gives you much more control over how sounds are controlled in Unreal.
One pitfall I ran into with this, however, was that when you bind a sound to an blueprint in such a way, if the actor representing that blueprint in game is destroyed then the sound cuts off even if it hasn’t finished playing. The solution to this, especially for projectiles which only play their sound at the point they are destroyed, was to simply disable the actor by making it hidden while disabling collisions and tick for the object. When the sound is activated as the projectile is destroyed, it is picked up by a custom event (which using an audio component allows you to do) that triggers when the sound is finished. This would give me a code path to destroy the object after the sound had finished playing.
Another time sink this week was trying to use trial and error to time the looping of my sounds to match the walking or other looping animations. Bob showed me a much more efficient way to do this by actually attaching a “notify” flag to the animation itself, which could then be set to play a sound. I am a bit disappointed with myself for not finding a solution this effective, but I suppose it is all part of the journey of developing best practice for sound implementation, similar to how I did the same thing with the sound design process for this game.
The tasks for next week are as follows:
- Importing all created sounds
- Implementing the sounds for the player character.
- Tweaking volumes and implementing spatial, 3D sound for the sounds already implemented in Heresy.
- Return to Lil’ Lucifer’s dialogue, make it less pronounced, find best practice generator for raw speech
- Follow the sound design process of Week 1 and Week 2 to design the remaining auxiliary sounds.
- Finish mixing Treachery and Heresy themes.
- Scoring for Greed background music theme.
Next week I will be placing priority on importing Lil’ Death’s sound set, as well as tweaking and implementing spatial sound for the currently implemented sounds in order to achieve a best practice model.