Taco Truck Madness(VR)


Overview:

"Taco Truck Madness" is a VR game that immerses players in the chaotic world of a taco truck cook, where rats will try to ruin your day. The objective of the game is to serve tacos in time to keep the dinosaurs happy. The project was built using C# and Unity and Unity's VR Interaction Toolkit. As a team we utilized agile/scrum methodology and time tracking software during development to stay organized.

  • Team of 6
  • VR game
  • Agile/Scrum Methodology
  • State Machine
  • Nav Mesh
  • Animations
  • Bound System
  • VR Interaction Toolkit

Completion: February 2022

Duration: 1 Month

Platform: Unity 3D

See project on Github

Contribution:

Keeping Track

During the whole duration of the project we adopted an iterative approach using the agile/scrum method to ensure efficient progress progress. We organized ourselves and tracked our progressing using the time tracking software Jira. Additionally, we used Git as a verison control system to manage code changes and ensure that everyone was working from the same codebase. By using these tools and methodologies, we were able to work efficiently and collaboratively, while also keeping track of our progress and staying on top of any issues that arose during development.

ai for the rats

I developed the AI for rats in our game using Unity's NavMesh system and a state machine to control their behavior. To make their movement more realistic in the kitchen environment, I used off-mesh links to allow them to jump from counters to the floor. To encourage rats to navigate on the counter instead of always jumping on the floor, I increased the cost for the floor. To manage the flow of the spawns, I implemented a spawn system and a rat manager. The number of rats spawning increases as the game progresses. When a rat spawns, it appears at one of the rat holes randomly. When it is in the exit state, it heads for the closest rat hole and is destroyed when it reaches its destination. To simulate a field of view for the rats in our game, I implemented a raycast system with a certain range. The rats use these raycasts to locate food within their field of view. If they detect any food, they set it as their target and start chasing it. This system allows the rats to wander around the kitchen and search for food in a more dynamic and engaging way.

ai for the dinosaurs

For the dinosaurs in our game, I created an AI system using a state machine and Nav Mesh, similar to the rats. To manage their spawning, I reused the same spawn systems as the rats, with the dinosaurs spawning randomly around the food truck. The dinosaurs would then head towards the truck and wait for food. If they don't receive food for a certain amount of time, they become angry and wander to a random spot around the truck. When they reach their exit point, the dinosaur is destroyed.

Animation for the dinosaurs

As the dinosaur model we chose was not rigged and did not have a humanoid form, we were unable to use animations from Mixamo. To overcome this limitation, I created some custom animation clips within Unity. I also created a smoke particle system that emanates from the ears of the dinosaurs to give an impression of anger.

Implementing animations

I implemented animations for both rats and dinosaurs using Unity's animator controllers, using states and transitions to trigger animations at the appropriate times. To ensure smooth movement, I used blend trees.

sounds

I created a static event system with delegates for the game's audio. This system allows for easy invocation of desired sounds at specific locations. A scriptable object links all audio sources, which are then instantiated in the scene by the sound manager.

game loop

To control the flow of the game, I utilized a state machine that governs the different stages the player progresses through during gameplay. This script serves as the main entry point of the program, informing all systems of the current game stage. Additionally, a timer is employed to regulate the progression of each round. As time passes, the system notifies all other subsystems of the elapsed time, allowing for the game to increase in difficulty. When the player loses, the game resets and a new round begins.

bound system

To make sure to destroy objects that would exit the food truck,I implemented a bound system with a Respawnable component. If an object exits the bounds, the bound system invokes the respawn function from the Raspawnable component, causing the game object to respawn at a specified location. This system is utilized for various items in the game, including the knife, sauce bottle and ingredients.

World Space UI

As part of my contributions to this VR project by creating user interfaces (UI) using Unity's world space UI system. This approach was chosen to display UI elements, like the start button and order board, within the game world instead of overlaying them on the game view, which could detract from immersion. By using world space UI, we achieved a more immersive experience where information and feedback were integrated seamlessly into the game world.


closing thougths:

In conclusion, "Taco Truck Madness" was a thrilling and immersive VR game development project that brought together the chaos of a taco truck cook's world with dinosaurs and rats. Through agile development methodologies, collaborative teamwork, and the implementation of AI systems, animations, sound design, and world space UI, we created a captivating and engaging gameplay experience. The one-month development duration allowed us to deliver a polished game that provided players with an immersive VR experience. It was a rewarding journey, and I'm proud of our accomplishments in creating a unique and enjoyable game that brings together tacos, dinosaurs, and VR technology.