Sprint journal

This journal documents the progress of my work on Norsevar regarding narration and room generation on a sprint-by-sprint basis.

Tags: Collaborative Project, GD4, Norsevar, Red Axes

Sprint 18 - T-CA4 Deliverable

For this sprint, I worked on weaving the story in the game.

First, I asked some friends to record voice lines for the dialogues I wrote. At this point in time, it still wasn't sure whether the dialogues would be voiced or not, since reserves were expressed about the feasibility of this task given what little time was left. However, I figured I'd rather have the audio files in case I could fit it in.

Then, I took a little bit of time to learn the ropes of the dialogue system we were using. After some fiddling, I got to the real deal of implementing the dialogues in the game. Whilst working on that, I realised I could simply play an audio file behind it, as there is an OnExecute method called when a line of dialogue appears.

Once all dialogues were in the game files, I took it upon myself to add an auditory dimension. After tweaking some of the audio files in FMOD (namely Heimdall and Loki's, giving them some reverb to make it feel more like gods communicating with a mortal through telepathy), I added events and functions to play those audio files. Surprisingly enough, it worked perfectly.

As of 18/04, the only thing left is to setup the dialogue triggers in the game.

Update (28/04) : I was able to implement random voice lines playing when combat starts, when combat ends, and when the player dies. I, however, was not able to implement the exchange between Heimdall and Erik upon the player's first resurrection, nor the taunts Loki would throw at the player upon subsequent resurrections, as there is no roguelite gameplay loop in the game, therefore the player is unable to respawn.

Sprint 17 - Improvements made on Team Feedback

For this sprint, I worked on upgrading the already implemented dialogue system to add voice lines to the main three characters. Due to poor time management and other assignments, I couldn't work on it as much as I wanted to.

Following my lacking performance in T-CA3, I decided to work on implementing as well as "artefacts" the player can encounter and interact with to tell a small part of the story.

Sprint 16 - T-CA3 Deliverable

During this sprint, due to personal issues, I didn't work on the game at all

Sprint 15 - Player Feedback and Level Creation

For this sprint, I had to figure out a backstory for Heimdall and the blacksmith, but in my opinion, it would make the plot way too bloated given the scope of the game and too time-consuming to round either of those characters.

Sprint 14 - Testing

During this sprint, I refactored the level generation code to its final state. This concludes level generation as a feature of the game. The only parts that will be changed moving forward are the various room types and their odds of apparition.

I also took the plot I started writing during the previous sprint and elaborated on it.

"Erik Einarsson, proud Viking member of the Wulfing clan, was chosen to venture into the forest for the final trial of the clan games: Hauldsvegr, the Hero’s Journey. He has to venture and try to find Freyrglade, a mystical clearing that was blessed by the Gods, according to the legends. Once he starts going deeper in the forests, he finds himself attacked by wolves and snakes. In spite of his will and axe, he ends up succumbing to his wounds, or does he…

He wakes up at the outskirts of the forest, a giant figure clad in gold stands before him, sword in hand, his eyes as deep and dark as the night. The man introduces himself as Heimdall, the foreknowing God who keeps watch for invaders. In a deep, booming voice, he explains that Loki, the chaotic trickster God and his eternal rival, cast their magic on the forest and possessed its inhabitants for the sole purpose of messing with Erik. However, as Heimdall swore to oppose them, he decided to protect Erik and undo any of Loki’s actions that would lead to the Viking’s death, until the trickster God would give up and leave him be, although that wouldn’t happen until he would leave the forest.

After hearing Heimdall’s warning and pondering his choices, Erik decides to head back in. No hero ever backed down from a challenge, let alone coming from a God."

Sprint 13 - T-CA2 Deliverable

For this sprint, I finished implementing the dynamic weight system, which included restructuring the Weight Information class and updating the story, as the scope of the game was narrowed.

The new plot would involve clan games with the final challenge involves sending a warrior to a sacred place in the woods. The protagonist was chosen, and would quickly realise that wolves and snakes are attacking them, which isn't their normal behaviour. The player would then realise they are caught in the never-ending conflict between Loki, the God of mischief, and Heimdall, the foreknowing God who keeps watch.

I then came up with a short version of the plot, as viewed by the protagonist, now named Erik Einarsson. This could serve as the background narration for a trailer, but the team would need to agree to it.

“It started like every other winter. The clan games are a beloved tradition, and the Hero’s Journey is the most important of them all. A warrior is chosen to venture into the forest and try to find Freyrglade, a mystical clearing that was blessed by the Gods. This year, it was my turn. I knew something was up when the wolves started attacking me, but I didn’t expect to get roped in a conflict between two gods. Now, I could just walk back and give up. But that would be disrespectful of both my clan and the Gods. The only way is forward, and no tricks are going to prevent me from reaching Freyrglade.”

Sprint 12 - Playable Game

During this sprint, I added a more complex weight system, which now supports dynamic evolution. The three options are

  • Constant weight - The weight stays the same no matter what happens
  • Linear evolution - The longer a room is able to spawn, the more likely it will spawn
  • Linear evolution with presence reset - The longer a room has not spawned, the more likely it will spawn

I also added a persistence system, which I go over in detail on my Level Generation page.

Sprint 11 - Refining Gameplay Systems

During this sprint, I cleaned up and reformatted the code for level generation, the weight picker and the Unity Editor code.

Sprint 10 - Christmas Sprint

For this sprint, I added the weight system so that not all room types have the same odds of being picked. At the moment, it only allows for a constant weight, but this will evolve later to support more complex weight evolution methods.

I also implemented Unity Editor code to make the Room Generation parameters more intuitive.

Sprint 9 - Gameplay Refinement and Play testing

For this sprint, I cleaned up my code for level generation.