I added the bug fix thing as if it was a simple thing, but it's actually a huge change in the way the generator works internally. Added case notes to WD Gaster (Undertale).Fixed the character encoding problems with characters out of the UTF-8 range (more about that in the note).Added an "apply" button to the case note warning.Added "Closed eyes" and all the pirate hat variations to Rouxls Kaard.Added the missing sprite "Pissed 2" to Susie (Deltarune).Added the 32 new Chapter 2 sprites to Noelle (Deltarune).Updated Noelle's (Deltarune) sprites from Chapter 1.Added the Dark Prince sprites to Ralsei (disguised) as "Cloak" and "Cloak, sweating".Added the new Chaos King sprites from Chapter 2.Added new sprites for Berdly based on his Dark World expressions.Only the rebels and clover are missing, since they use a new kind of icons that replace the asterisk instead of talksprites. We're almost there! All of the chapter 2 characters, the new expressions, and the missing characters from chapter 1 have been added to Deltarune. The default sprite for Undyne (Deltarune) is no longer missing from the list.Added colored sprites for Susie, Noelle and Berdly.Fixed the bug that duplicated the "none" option in the universe list and made it not work after selecting it a second time.This meant extending outside of my usual scope into programming, graphic design, UI design, and even some sprite art, but I am very pleased with the end result.You can follow the development status on Trello. So with this, I set out to follow the pipeline entirely on my own, from initial recording to functional executable. I knew I would become much more confident in my various isolated skills if I could see them all come together. Working like this, I became increasingly aware of the murky gaps in-between where the work became "someone else's job." The "Random" and "Default" buttons allow for quick adjustments.īefore taking on this project, I'd only ever worked in isolated pieces of the game audio pipeline. The higher the speed, the smaller the delay.Įach NPC is assigned values for each of these parameters, either through hard code, in the Inspector window for that character, or using the live GUI sliders when running.
Instead, it is used in the module's code to determine the delay between phonemes. Speed - This is the only parameter not directly used by Wwise. In a game, effects like these could be rapidly added and tweaked as needed. Tone - Here I used Wwise's Tremolo effect to add a toothy edge to the voice. Eventually, I decided to record a second set of phonemes using a girl's voice and create a Blend Container in Wwise to morph between the two. At first, I tried to imply gendered voices by filtering between formant frequencies, but Wwise lacked a reliable way to do this. Gender - This one was trickier to implement than I'd originally planned. Volume - While volume could be used to create a distinctly loud or quiet character, this parameter is best used within the code's Enunciate method, which makes a sentence louder if it ends in an exclamation point!
I also used pitch to imply questions and randomized all pitches slightly to create natural variation. Pitch - One of the simplest ways to change a voice also proved to be one of the most effective.
I chose to define each character's voice through five core parameters: The engine then manipulates these phonemes in real time and plays them back in quick succession, creating the illusion of speech.
To do this, I determined which basic phonemes were most vital for recognizable English speech, and recorded them. For the generated dialogue, I wanted to achieve stylized gibberish in the vein of Animal Crossing, but slightly more legible.