MAY 27 → MAY 30 – 2024

Tasks

Client Meeting

  • Met with our client on Monday to accommodate with his wish to be up-to date every monday.
  • Asked him about the voice overs, it was a difficult conversation as he got quite defensive and did not answer any question other than blaming it on his own client (the museum).

Technical Developments

  • Replaced old voice overs
    • Our client provided us with Dutch voice overs, however their quality was quite lacking and I pointed this out to him. Additionally I found that he replaced the final voiceovers once again, this was one of the last straws as I had replaced the voiceovers numerous times now and was told by him that I had received the final version last week.
  • Implemented SFX
    • I scoured the internet to find public domain sound effects to use in our game for most of the interaction. Picking up paper, collecting trash and various UI sounds. These were then added to the AudioManager and allowed to be called from anywhere.
      (see example code below)
  • Implemented collectables
    • Another ‘problem’ proposed by our client and the team was that we had to be able to ‘collect’ a bracelet in scene four as well as a compass in scene one. For these collectables I wrote a separate script that has an event for when it is clicked and I added an animation to constantly rotate it.
  • Implemented game reset
    • Our client had another request, a way to ‘reset’ and quit the game early. I had not even thought about this anywhere during the development and therefore had to brute force some parts to be able to quit the game.

Double Diamond

In terms of development, the main issue this week was to be able to reset the game, as well as providing a way to collect items.

Discover

I consulted other team members about how they would handle the collection as well as researching other games. For the reset there was no real research to be done other than deep-diving back into my own code to identify areas where issues could arise as well as trying to find a way to add the feature in.

Define

The main issue for the collectable is that it could be difficult to instantiate it in the world itself. As well as it not being easiliy visible for the player.

As for the reset, the main problem would be that my current structure did not perse support a player exiting out of a scene.

Develop

My solution for the collectable issue was to parent the object to an empty object in front of the camera. That way the collectable would always be visible as well as being easy to access in terms of code. Next to that I re-used my ‘Interactable’ script that would work as a base for any other collectable object. I then added a ‘Bracelet’ script which inherits from the former.

The reset was more difficult to develop a solution for, eventually I managed to close off most things that were depending on one another, however even now there was still the issue of voice overs continuing to play. The feature was postponed to next week.

Deliver

I created another release on our GitHub that shows the complete playthrough but uses greyboxes for scenes one, four and five. This was on request of the client.

Plan

Next week I’ll work on the flower pack animation and interaction. I will also take another look at the game reset/pausing.


Research

The research I did this week mainly came from conversing with my fellow team members to identify some areas for improvement and pick their brains about collectables.


Reflection

There were some things about the project that were not so much fun anymore. Mainly our client and the communication with him, as it began to be more and more difficult and tense.

Next to that, I was not too happy with the way I set things up now that I had to figure out how to add a game reset within an existing framework that does not necessarily support it.

Media & code

public class Bracelet : Interactable1

    public void CollectBracelet()
    {
        AudioManager.Instance.Play("Paper1");2

        OnBraceletCollected.Invoke();
    }
}
  1. By inheriting from Interactable, I can easily call the needed method through my InputManager. ↩︎
  2. Line to play the SFX. ↩︎