A while ago, we discussed Food Fight’s tutorial and how a few tweaks can create a more compelling and immersive experience. In this blog, we discuss how these tweaks have been implemented and what we discovered along the way.

From the last discussion, stripping out text and replacing it with instructional sprites was the big takeaway. Doing this cuts down on having to localize for certain regions/demographics and keeps the player interacting with their environment rather than stopping and reading text. The next challenge was to tie in the conveyor belt and reorganize the steps of the old tutorial.

Scriptable Objects

Scriptable Object Step for Throwing Item

The great thing about a tutorial is that it is a series of logical steps that the player must progress through. This helps a programmer immensely because there is an arsenal of tools available to implement step-by-step procedures. One such tool, which was utilized in the old tutorial, is the Scriptable Object. A Scriptable Object acts as a data container that does not require attachment to a GameObject in the scene. It can be saved as its own separate asset. This means we can read from it at runtime at any point. It serves as a modular component that can relay data between systems and scenes in Unity.

In terms of the tutorial, we laid out a series of Scriptable Objects, each one being a specific step in the tutorial and containing sprites, text, and objects needed for that step. Each SO relayed the game’s state to a tutorial manager script which then swapped SOs when certain conditions were met. Once each step was correctly configured, all the tutorial manager had to do was step through the list of steps as players interacted with their environment. For the new tutorial, the SO system remained, but text was swapped for sprites and conveyor belt data was added.

The Power of Sound

Sound can convey much about a game’s environment. This is something we didn’t take into consideration when working with the new tutorial. Initially, we wanted to add some sort of indicator to mark the difference between healthy and unhealthy foods that appear on the conveyor belt. However, that indicator does not exist in standard Food Fight gameplay. It would not be wise to confuse the player this early on. While testing one day, we realized the conveyor belt was still lacking sound effects. Then it hit us. Why not use the conveyor belt to differentiate between food types and when a new step in the tutorial occurs? In the Unity Asset Store, we found a high-quality sound pack of vehicle and machinery sounds. One sound titled “engine breakdown” was perfect for signaling to the player that the conveyor was stopping or starting.

With sound guiding the tutorial, we had to make sure that the player can get a clear sense of the difference between healthy and unhealthy foods. We created a small list of both types of food that would drop from the tube above the conveyor belt. Both lists consisted of foods that always stayed healthy or unhealthy in Food Fight, regardless of diet. We added these lists to the Scriptable Objects mentioned above and made a list of steps that the tutorial should follow:

  1. The player picks up and eats a healthy food item. The conveyor belt turns on.
  2. Targets appear. Player throws unhealthy food at targets until 3 has been hit. Targets disappear. Conveyor belt engine makes noise.
  3. Healthy foods appear on the belt. Once the player eats three, a power-up appears. The conveyor belt engine makes noise.
  4. Food goblin appears. Both healthy and unhealthy foods appear on the belt. The player must defeat the food goblin.
  5. An icon above the wrist menu appears. Players press that to exit the tutorial.

These five steps explain item interaction, the conveyor belt, power-ups, how to defeat the food goblin, and the wrist menu with very little explanation apart from pop-up sprites that show specific controls for interaction.

A New Environment

Recently, a transition has been underway from the cartoonish kitchen to a more realistic environment for Food Fight. We need to be certain that the same realism can be applied to the tutorial and other game modes. If a new player were to experience the tutorial in the cartoony kitchen area and then loaded into a level with a high-quality food court with realistic lighting, it would really throw them off. Fortunately, the Scriptable Objects and tutorial steps mentioned above can easily be copied over to a new environment. The same principles of the conveyor belt can also be applied. Instead of food dropping from a tube onto a conveyor, the player could be “taking orders” from a restaurant or picking up food that appears in the level.

Old Environment

New Environment (Work in Progress)

You can read more about Food Fight on the game website, or download the game for free on the Oculus store.