- For this stage, I have a week of development, so I want to make a new mechanic for the game, NPCs for the player to interact with.
- My plan for these interactions is to have multiple NPCs milling about the level, some up platforming challenges for the player others just on the ground. When the player approaches one of these NPCs, they will sing 4 notes to them, and then the player must sing these back. They will keep repeating the notes until the player successfully sings the note pattern. After this, so in awe of the players singing talent, they become a follower. For the rest of the level, they will follow the player around and sing their note pattern in a loop. As the player collects more of these followers, each of the patterns start to harmonise into a series of chords as backing music
- My aim with these NPCs is to give the player a challenge to work at and a goal to complete the game and give them more inspiration to sing from. Currently, it's very easy for the player to get stuck singing one note, so I hope having the build-up of the harmony behind them will encourage them to either pick out notes to sing along to or harmonies on top, making the player more actively sing rather than just making noise of certain lengths.
- To start I had to compose the harmony lines each of the NPCs will sing. I did this on Musescore to easily export each line to an MP3 to use in the game. To build up these harmonies I used my a capella arranging experience to just create a melody line, then hum on top until I found harmonies to it that I felt sounded right. The only need for these chords was for them to fit the feel of the level landscape, which would be a bright, happy, open field, so I chose major happy chords. I also added a beat to be the starting sound for the player before any NPCs were collected so they didn't start in silence.
- As I had already made some NPCs for the tutorial, I used the same simple character design for these. I started by making them turn towards the player once they had been triggered, and from that, I created a simple sequence of events for the minigame to follow:
- Greet the player and ask them to copy the notes
- Sing the notes, displaying the letters in the speech bubble
- Wait for the player to attempt each note and display to the player what note they have just sung so they can see how well they are doing.
- Check notes match
- If they don't, repeat from 2
- If they do display a congratulatory message
- The main NPC disappears and reappears as a follower behind the player
- I set up a system so that when the player enters the mini-game, the backing noise will fade out, I did debate matching the notes an NPC sings to the timing of the backing but decided that may be too hard for a player to need to sing the harmony along with the others. Also, it was already a challenge getting all the tracks for the backing harmony to play in time with each other, so it would be hard to get this track playing with the backing each time.
- Setting up the note checking was easy enough as I could use the note recognition system I'd created for the old turning system. Once I'd created the minigame sequence, in trying it out, I found myself getting very frustrated as for some I would often be one semitone out on one note, and I had to keep reattempting until I got it exactly right. So, I decided to add a leeway system. When a player has a leeway, it will be automatically used to let them get away with a single note being a semitone out, so if the pattern was C G A C and the player sang C F# A C#, with 2 leeway, they would successfully complete the mini-game. The notes the system shows to the player if they are a semitone out with a leeway correction are the notes they are being corrected to, so it's not confusing to the player when they are told they've got the note pattern correct, but the note display doesn't match. The amount of leeway a player has is calculated by (amount of attempts) % 2, so they get their first leeway on their 3rd attempt. There's space here to have difficulty levels in the settings to alter how quickly the player gets more leeway.