Effort sours the harvests I have grown, yet it must be met on the journey to nurture them. What a bore.
From where I left off last time, I added a node chain that forcefully reopens my level upon victory. This will absolutely change once basic menu mechanics have been discovered and created. For now, this system will have to do.
This odd dream will never end.
For most of the development part, the game is dead silent. Devoid of vocal atmosphere. I can start with giving my player footstep noises when traversing the wooden cubes in the middle of some vast ocean. Sound effects like these are so common (in several service websites), one can afford to be more nitpick-y regarding the topic.
In an animation keyframe is a notify system for setting up and synchronizing events like sound or particle effects to animation sequences. What creators need to do is place notifies at keyframe moments they want dazzling with special effects. Once you have added a sound notify, head to the Anim Notify tab on the right. Pick any sound file you want to play, preferably WAV, and your first sound effect will be implemented successfully.
There are other tools that can implement realism into your game's sound effect system. One of them is the sound attenuation component, which allows creators to control how sound behaves as the player moves around in the game world, providing a potentially more immersive and realistic audio experience. In the context of stepping on game materials, running on a floor of wood would realistically place some noise, but not on other materials or midair.
Assuming my platforms are made of virtual solid gold, my player walking over them would make entirely different sounds than on wood. Here is where the sound attenuation comes in: it restricts the areas where the notifies linked to my wood footstep WAVs can play. While I have to manually add and position these spots, the limited space of a platform game makes it a trivial task to remember at most efficient.
While play-testing my game, I ran an itty-bitty animation gimmick with animated commands. After implementing a jump montage into my player, one session of spamming the jump button rapidly reset the animation while midair. Quite an inappropriate immersion killer.
The solution to this undesirable is very simple: connect a Do Once node to your input action node, place animation and jumping nodes after it, and set the conditions for resetting the one-way gate to "a short delay after landing from jumping." A short 0.5 seconds is just enough for me.
For the finishing touches, I choose some 'close enough' sound effects from my starter content package to go with the player animations. You can pick any WAV files to play every animation; no need to follow my example 100%.
On the technical side of sound nodes, for me to decide whether Spawn Sound at Location or Play Sound 2D should be used, here is a short list describing their characteristics:
Spawn Sound at Location
Spawns a sound at a specific location in the 3D space of your game.
Returns a reference to the audio component, allowing you to manipulate it later on.
Has a self-destruct "auto destroy" Boolean parameter. If set to false, the audio component will not be destroyed and can be reactivated if needed. If it is not checked, Audio Component will remain and you can destroy it via the DestroyComponent function.
Used when you want more control over the sound, such as changing its properties over time or stopping it manually.
Play Sound 2D:
Plays a 2D sound that does not have a position in the world and will be heard equally from all directions.
Is a ‘fire and forget’ method, meaning it plays the sound and does not provide any reference to the sound after it has been played.
Little bit cheaper in terms of performance compared to Spawn Sound at Location.
Used when you simply want to play a sound without needing to control it after it is started.
If you need more control over the sound, Spawn Sound at Location would be more suitable. If you just need to play a sound without further manipulation, Play Sound 2D would be the better choice.
Additional testing reveals that my player could still move after reaching the level-resetting trigger volume. How can I stop it from moving entirely without actor deletion? Cut it off from its controller.
As I have written before, node sequences start from event nodes. To fulfill the above purpose, in my player blueprint, I start with an ActorBeginsOverlap event node casting the widget screen trigger volume. After that comes a Disable Input node linked to the fetch player controller node and that is about it.
More features to come if I feel like re-exploring the third-person tempalate!