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)
- 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.
- 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)
- 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.
- 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
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);
}
- The method used to rotate the wolf’s head towards the player/camera. ↩︎