Assignment 5 - Report



Introduction / Overview

Many people are unable to welcome a furry friend into their homes for reasons outside their control. Take care of your own virtual cat in this interactive simulation built specifically for VR. 

Design Revisions:

  • Addition of a mood system
  • Addition of a hunger system
  • Addition of animations

Technical Development 

Expanding on the prototype, we’ve developed various scripts to make the cat’s behaviour more complex, such as by adding a mood system, an audio system, and modifications to existing scripts to work with these new systems.

Cat Audio Manager:

  • Script that manages the idle noises the cat makes depending on the cat’s mood.
  • Reads the cat’s mood from the appropriate script and plays sounds from a random selection of clips depending on the mood.

Cat Behaviour:

  • Script that contains code that makes the cat move at random, handles the cat’s reaction to catnip, and checks whether the cat is being patted.
  • Petting the cat requires checking if the hand trigger colliders are touching the cat. Depending on the force of the pet (from the controllers’ velocity) and the cat’s mood, petting the cat can make it happier or more upset.
  • Using the Move function, the cat moves to a specified location with the navmesh provided for the room. Usually, the cat moves around randomly, but depending on the items and mood of the cat, it might approach the player or items.

Cat Interactable:

  • A script which can be put on objects that the cat is drawn to if the objects are picked up and placed down by the user.
  • It checks if the user has handled the object, then sets the cat to move towards it (more likely if happy), and also raises the cat’s mood.

Cat Mood:

  • Script that tracks the cat’s mood (randomly setting it upon the application’s launch as well as randomly changing it slightly with time in a random direction) and displays it to the other scripts with public variable so they can read and change it as necessary.

DistanceJoint3D, FrictionJoint3D, RopeRoot, StoreTransform:

  • Scripts from external sources for rope physics that have gone unused.
  • They were needed for the development of a string based cat toy that didn’t end up working properly by the end of the application’s development.

Food:

  • If the cat is hungry, placing the food object into the cat’s bowl will take the food object back to its starting location and place food in the cat’s bowl, which the cat will take a moment to eat. 
  • This script is relatively basic and works by accessing the Cat Mood and Cat Behaviour scripts.

Pat Script

  • This script, attached to colliders on the user’s hands, lets the Cat Behaviour script know when the user is petting the cat by changing boolean values while the colliders are in contact with the cat.

SimpleTeleportBehaviour & ToggleLightSwitchBehaviour

  • Mostly unused tutorial scripts


3D Content

Cat model, the main focal point of the application. Several animations were made for the model, including walking, idle, and running animations. Thanks to issues importing IKs into unity, these were not implemented by the deadline.

Model used as the application’s environment, containing walls, a floor, and various decorations. Most of the assets here are relatively low-resolution, which would help our application to easily build to Oculus Quest devices without a loss of performance.

Bowl model, used for feeding the cat. This model, while low resolution to fit with the background assets, is also rendered with smooth shading to give the impression the edges are softer than they are. 

Catnip can model. This model, like most of the interactable item models, is in a low-poly style to fit with the environment. It’s used as a visual for the object that initiates the catnip behaviour in the cat. 

Cat toy model. This model is low-poly and smooth shaded (to better give the appearance of being a plastic toy). The exterior shell and the interior bell were modelled separately to allow the bell to move freely inside the shell for realism. This is the graphic for the main cat toy that ended up being implemented.

Cat string toy model. This model is composed of a flat feather texture on the end, a handle for the user to grab, and a string connecting the feather to the rod. The string has its own armature as if for animation to facilitate rope physics. Unfortunately, this model was unused because the string physics ended up too unwieldy.

Usability Testing 

Our user testing aimed to gauge how compelled users of the application were to keep interacting with the cat, as well as how easy they found the application to use. At the time in development when testing was performed, all of the main features had been implemented in terms of function, and all that was planned to be added was a degree of polish to sell the concept. Testing focused less on the finer details of said mechanics (altering the cat's mood, how levels of hunger affect the cat’s behaviour, etc) and instead focused more on the user’s general experience with the application and whether or not there were enough activities in the scene.

Testing was performed in person, for several minutes at a time. For most of the testers this was their first time using virtual reality, which was appropriate, as our target audience for the application is quite broad. Thanks to this, many hypothetical users would have similarly lacking experience with this technology, and it was important to be sure that the controls were intuitive and simple to understand for new users. During testing, participants were encouraged to:

-pat the cat

-feed the cat

-play with the cat using the various objects around the room

User Feedback Form:

https://forms.gle/q2Qf3Y9YLZMadEf39

In general, users found the navigation of the scene and the use of the general control scheme relatively easy across the board, with 80% of users rating general movement around the scene a 4/5 or above in terms of ease. Similarly, when asked how easy it was to handle the various objects placed around the room, 80% of users rated the controls 4/5 or above, with half of those rating them 5/5.

When asked whether they were engaged by the application, particularly the cat, users indicated that the cat could be more cat-like in terms of behaviour and that there could stand to be more ways to interact with it.

Addressing the Results of the Usability Testing

Taking this feedback into account, we added a new mechanic in the form of catnip. This mechanic alters the cats behaviour in a different way to the food and petting mechanics, to address the variety that our users suggested. Additionally, attempts were made to give the cat more realistic behaviour that we failed to implement by the deadline. These behaviours were going to take the form of several animations that the cat would do depending on its mood. Additionally, we had plans to make the cat follow certain objects and/or the player with its eyes.

References

Freesound.org - cat noises

Textures.com - misc textures

House Interior - https://www.models-resource.com/3ds/nintendogscats/model/30284/

Cat - https://sketchfab.com/3d-models/cat-murdered-soul-suspect-836312def1b84e588866500a2bf79f0f

https://gist.github.com/ditzel/ae6ebc115d767da9a5a1e1f70dee27e5 - Unused rope scripts

Cat toy model, string toy model, and catnip can model - Created by the team

Get KIT208 Portfolio

Leave a comment

Log in with itch.io to leave a comment.