JUNE 10 → JUNE 13 – 2024

Tasks

Client Communication

  • Met with our client on Monday, however this time around it was not really a meeting. In the end we had to terminate all communication with the client. More on this in my personal reflection document.

Technical Developments

  • Improving game reset
    • As planned I started working on improving the game reset through adding eventHandlers which would help the script find where we were when quitting and would in turn help to quit more cleanly. However this did not provide me with the results I desired and so I decided to scrap the idea.
  • Added wolf head rotation towards player
    • To work on making the scene more immersive, I implemented rotation on the wolf in scene three. I also included a clamp, meaning the head is restricted in how far it can turn. This added some much needed responsiveness to the scene.
      (see example below)
  • Added grandma ‘animation’
    • I used my previously written CharacterTextureReplacing script to ‘animate’ the grandma. Valeria (character artist) had made more frames for the grandma which I then toggled between dependent on the voice over and set parameters. This creates the illusion of animation while simply replacing the texture with a new sprite every x seconds. (see example below)
  • Added compass interaction
    • In scene one, the player is asked to collect the compass. For this I used the same collectable setup as I did with the bracelet.
      (see example below)
  • Added book functionality
    • While I have had the paper ready for a while, the book in scene two was not yet implemented. This week however, Alejandra finished the model and animation which allowed me to implement it in the game. (see example below)
  • Added Dutch voice overs
    • As the Dutch voice overs were finally available I added them to the AudioManager, I had set it up in a way that I could easily use the correct language by adding a language formatter to the name. (see example below)

Double Diamond

Most of this week was spent creating content using the tools I had setup previously. This meant that there were no real new developments persé, but instead I finally profited from the work I had put in weeks ago.

Define

My main points this week were adding solid-looking animations as well as properly implementing the book and other interactions.

Develop

I added the wolf head rotation quite quickly as Emma, the artist responsible for the wolf, had set up the rig in an easy to understand way. This meant I could simply write a new script that would rotate the right bone towards the camera.

To add the grandma’s animation, I simply used the tool I had written before. The only time-costly part was having to listen to the voice over multiple times to get the timing right.

The compass interaction was a simple reuse of the bracelet interaction, which I had set up in a flexible manner to accommodate other interactables like the compass too.

Finally the book interaction was not too hard to implement either, Alejandra had done a superb job on the animation and all I had to do was place the pieces of paper in the book in a correct way.

Deliver

As communication with our client was terminated I did not have any deliverables this week, I did however keep my team members updated by showing them gifs/videos of my progress.

Plan

Next week I’ll work on implementing a major UI object made by Joris as well as all other animations for the characters.


Research

No real research was conducted this week.


Reflection

As the meeting on Monday had been quite a difficult one, I and other members of the team had lost most motivation. This led to this week being more difficult than others but it did unite us more than we had been before.

As far as implementing content goes, I am still very satisfied with everything I got done this week. Especially knowing about the mess our client caused. In the face of adversity we still pushed through and kept working at a steady pace.

Another big plus this week was that I finally was able to see how valuable it is to set up a project like this in a flexible and scalable manner. I was able to do more in less time because I used systems I created a few weeks ago. This felt very rewarding.

Media & code

The wolf rotating it’s head towards the player/camera.
The grandma being animated through replacing the material’s texture.
The compass using the same implementation as the bracelet.
Implemented book interaction with animation and flying papers.
The script in detail. You can set a name, delay to next frame, texture and add a description.
The CharacterTextureReplacing on the grandma.
The audio added to the AudioManager. Allows for setting a type and Localization ID.
protected void FixedUpdate()1
    {
        // Determine which direction to rotate towards
        Vector3 targetDirection = Camera.main.transform.position - head.position;

        // The step size is equal to speed times frame time.
        float singleStep = speed * Time.deltaTime;

        // Rotate the forward vector towards the target direction by one step
        Vector3 newDirection = Vector3.RotateTowards(head.forward, targetDirection, singleStep, 0.0f);

        // Draw a ray pointing at our target
        Debug.DrawRay(head.position, newDirection, Color.red);

        // Calculate a rotation a step closer to the target and apply rotation to this object
        head.rotation = Quaternion.LookRotation(newDirection);

        // Clamp the rotation to prevent full 360-degree rotation and excessive looking up/down
        float minHorizontalAngle = -140f; // minimum angle to rotate left from the initial forward direction
        float maxHorizontalAngle = 0f;  // maximum angle to rotate right from the initial forward direction
        float minVerticalAngle = 30f;   // minimum angle to look down
        float maxVerticalAngle = 100f;    // maximum angle to look up
        head.rotation = ClampRotation(head.rotation, minHorizontalAngle, maxHorizontalAngle, minVerticalAngle, maxVerticalAngle);
    }
  1. The method used to rotate the wolf’s head towards the player/camera. ↩︎