Game Developer Deep Dives is an ongoing series that aims to shine a light on a specific design, art, or technical feature of a video game to show how simple, seemingly fundamental design decisions are actually not that simple.
Previous issues have covered topics such as creating asynchronous multiplayer in Hell alone, expanding availability for the PlayStation port As it gets darkand overcoming hardware barriers to transfer Kingdom Come: Deliverance to switch.
In this edition, Krillbite Studio developer Dennis Foose tells us how they developed the cooking experience in Fruit bus and why the sensation of cooking was more important than its perfect imitation.
Fruit bus is a cute open-world cooking adventure where taste is everything. Upgrade your trusty truck and visit a whole world of new destinations together. Discover fresh fruits and vegetables on each island of the Gustum Archipelago, learn about their customs and prepare dishes that will make someone’s day.
But how do you actually capture a fascinating snapshot of what cooking is all about, and what challenges and unforeseen complications arise in this deep forest? Come on our journey to develop a cooking system for Fruit bus.
It sounds simple enough: prepare an apple, cut it into bite-sized pieces and put it with some intention in a bowl. If you’re feeling adventurous, you can even add a sliced banana to the mix. Sprinkle a moving truck on top and it’s sure to be an unforgettable experience.
First of all, who makes a fruit salad? It’s as rude as switching between a burger and a sandwich.
Second, isn’t it too early to predict in the introduction?
Tonight’s menu features wildcards such as:
Quantum entanglement! Compositions! Processes! … and apple soup with croutons?
![Fruit_Bus_Soria_Moria.png Fruit_Bus_Soria_Moria.png](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt09782ef75a990035/66300bc78440ab851b764fa3/Fruit_Bus_Soria_Moria.png?width=700&auto=webp&quality=80&disable=upscale)
Image via Krillbite Studio.
Early prototypes
In general, our philosophy was to lean as much as possible on physics to provide a reliable level of interactivity with the mechanics.
Cutting out
![Cutting out Cutting out](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1d1c52e0935f66e8/66462bb8d7f15f90120b0dfe/Cutting.gif?width=700&auto=webp&quality=80&disable=upscale)
Dynamic cutting, many parts. Image via Krillbite Studio.
Fry
![Fry Fry](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt32816e78d00b200a/66462bea4835390dedf01b08/Frying.gif?width=700&auto=webp&quality=80&disable=upscale)
Fry a small piece of apple. Image via Krillbite Studio.
In the early stages of the game we used Dynamic network cutter a plugin that allows you to dynamically slice objects at runtime. We combined this with some basic knife skills and a bit of hand-holding.
Then you pan-fry the pieces until they’re done beyond a certain threshold; try your luck and it might burn.
“Would you like an apple ginger smoothie?” Let me collect enough bits and pieces of apple and ginger to make sure I meet the requirements of the recipe.
![Smoothies Smoothies](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt33e299ce18b6fa8c/664230512a988adc52ec0670/Smoothie.gif?width=700&auto=webp&quality=80&disable=upscale)
Blend the small pieces to make a smoothie. Image via Krillbite Studio.
Put the pieces in the blender and voila. You filled the cup one-third full with some strange combination of liquids.
Individually, any of these prototypes could pass as a fun interaction or mechanic. Combine them and, fast forward, you end up with a messy kitchen with a floor full of various pieces of fruit, mysterious liquids and a questionable amount of fortune.
How would you represent the taste of a banana slice in code? What if a banana was fried, boiled, then blended into a liquid, then blended into an apple and ginger smoothie? How many slices of banana do you need to add flavor to a dish? How much flavor does roasting or burning add? It gets messy and overwhelming pretty quickly, and it’s so arbitrarily petty.
The old me would have been confused, willingly plotting a path for thin and long pasta shapes. For the new me, it’s just a banana, apple and ginger smoothie.
One of the great things that came out of the ideation and prototyping phase that we went through Fruit bus was finding the right zoom level or the right volume to simulate cooking.
This feeling cooking, which is important, not the accuracy of the simulation. Thomas, our game director, called it “Hollywood cooking”. Every time I think of that phrase, my mouth twists into a smile.
![Frying with chili and garlic Frying with chili and garlic](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltb0629dc955f27d04/664230b26220df4a508b2915/Chili_and_Garlic_Stirfry.gif?width=700&auto=webp&quality=80&disable=upscale)
Fry chili and garlic. Image via Krillbite Studio.
Food processing
A fundamental change in approach occurred at the end of 2022.
One day Jonas and I talked on the board and some elements started to emerge. The overall process was basically talking about the different steps the food had to go through to end up in a dish that could be served and appreciated.
We came up with a dish that would touch as many previous systems as possible – a sort of minimum viable dish.
But before we get into that, it’s time to go down a level.
![a diagram showing the exact steps of different products and tools a diagram showing the exact steps of different products and tools](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt07ba91b4d3247aff/665f862b6177e7420c874a3d/gm09_copy.webp?width=700&auto=webp&quality=80&disable=upscale)
Image via Krillbite Studio.
Processes. Verbs that reflect the transformations Food goes through. Like mixing or liquefying.
Household appliances they are objects that can execute processes such as Blender. It requires input to be enabled (eg externally via a button), but after that it can be left to its own devices.
tools are processes that can be triggered by player interaction, such as the Knife. Any action requires multiple input from the player. It also receives input directly instead of relying on external systems such as Appliance.
FoodObject this is our representation of an edible object. A food facility usually consists of Archetypeor pattern: gold standard banana, pink female standard apple.
State is a representation of a food object (the apple is sliced and fried).
visual materials, a visual representation of the FoodObject in its current state.
![Canister with fruit salad Canister with fruit salad](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf53e697288cea010/665c9e65f8700f33ff494f01/Lettuce_Fruitbus.png?width=700&auto=webp&quality=80&disable=upscale)
Have you ever wondered what Apple looks like in Fruitbus? Image via Krillbite Studio.
And now the salad will make a small excursion into the anatomy of an apple.
This is a data structure that represents food in the Fruit buswhich defines the archetypal version of this fruit.
On the example of an apple. It is quite obvious that this can be desired.
It also has a distinct flavor that keeps it going through many processes, making it absorbable.
And the apple can also be cut. This means that if you put it on a knife, it can turn into a sliced apple or a fried apple.
Cutting
![Cutting Cutting](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte5c985b5b12e7d2f/665c9eca4259741708f5d6aa/Cuttable.png?width=700&auto=webp&quality=80&disable=upscale)
Image via Krillbite Studio.
Code to define the stages a Cuttable object can go through.
![Fruitbus apples Fruitbus apples](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt57b7afc3ed37de63/665ca2e0ca68ad91daccefce/Fruitbus_Apples.png?width=700&auto=webp&quality=80&disable=upscale)
On the left is a sliced apple. On the right, cut into cubes. Image via Krillbite Studio.
Let’s go back to the minimum viable dish. Here is the recipe to follow.
Apple soup with croutons. Cut the apple into cubes and grate it. Bake bread. Cut a slice. Cut this piece into cubes. Bake toast. Boil the apple, add croutons.
![Apple soup with croutons Read Apple soup with croutons Read](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt31d3ebc26720468f/66423185810b836fe58f3b46/humanreadableapplecruton.png?width=700&auto=webp&quality=80&disable=upscale)
Is apple soup with croutons a staple in every household?! Image via Krillbite Studio.
![gm05.gif gm05.gif](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5822905dda8dcccb/664231af652a6ba0bf118146/gm05.gif?width=700&auto=webp&quality=80&disable=upscale)
Food ProcessingTM Minimum Viable Product: Apple Chowder with Croutons. Image via Krillbite Studio.
The example above touches on something I find fascinating! By having multiple processes, we can now create a wide variety of dishes. And most importantly, we can talk about new dishes without getting bogged down in too much technical jargon. We even had the chance to chat over a plate in front of a bunch of Norwegian developers at Spillkonvent 2023, and it seemed like they could follow our excessive process chatter.
The work ahead of us is honing our food choices, perfecting them and gradually expanding the scope of possibilities. It’s a matter of adding new processes and making existing processes and dishes look and feel good.
![Blender.gif Blender.gif](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7229696baa86ce6d/6642324aa0e6da9521da6a04/Blender.gif?width=700&auto=webp&quality=80&disable=upscale)
Apple cocktail. Image via Krillbite Studio.
Here’s the wrap! Or maybe just a pancake. But really, we’re not off the hook yet.
Interactions and complications
Cooking in Fruit bus affects almost every other game mechanic in the game; Ironically, even driving a truck has implications for cooking.
Physicality is another principle in the field Fruit bus. Everyone knows that moving vehicles combined with dynamic objects are bound to cause funny bugs. We learned pretty early on that we needed a way to simulate the interior of a truck in a sterile environment.
Enter Quantum Entanglement*, an idea where we separate modeling and visual effects. All the objects that make up the Truck are entangled, which really means we have a physical clone of the object somewhere on a flat plane where we can do all our physics without worrying about the Truck flipping upside down or roll down the side of a volcano with evil intent.
*Has nothing to do with actual quantum physics, we just roughly borrowed the concept and it sounds cool.
![Chop Chop Chop Chop](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt33a6595b174806b2/664232a87259ac9391d509fa/Chop_Chop.gif?width=700&auto=webp&quality=80&disable=upscale)
Chop chop, then stack. Image via Krillbite Studio.
Similar to Quantum Entanglement, we run composition simulations elsewhere and then apply them to the object when everything is stable. This approach is actually pretty cool because we’re just taking a specific snapshot of the simulation when everything is stable and real.
The apples have essentially been neatly stacked in a bowl in a distant location where there are no outside factors to mess with the physics interaction, and the result is then projected and applied to the bowl in your truck.
Honorary awards which we don’t have time to talk about in this round:
Interacting with characters, such as holding an item.
Nested spaces of quantum entanglement.
Blenders have physical money.
A deeper dive into the composition system
![gm08.gif gm08.gif](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0b90e0fa16954f4a/664233a10856eaefb8d2b06a/gm08.gif?width=700&auto=webp&quality=80&disable=upscale)
Image via Krillbite Studio.
![gm06.gif gm06.gif](https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltbdaa000f51ad99b9/664233b8efed0f25f18f18f0/gm06.gif?width=700&auto=webp&quality=80&disable=upscale)
Image via Krillbite Studio.
Conclusion
While writing this article, I rediscovered that the current version of Food Processing would never have existed if we hadn’t made the original scrappy prototypes to begin with. And I’m very grateful that we did.
One of the main reasons for Food Processing’s success was that we spent almost as much time on pre-production and planning the finishing touches as we did on the minimum viable product.
Another thing that really worked in our favor was the trust we got from the leadership team. We had time to plan and bring our ideas to life. We also had our ideas challenged, which forced us to deal with more unknowns up front, which in the end produced a better outcome.
For coders: If you feel deep down that a certain mechanic or system isn’t working as intended, have the confidence to challenge the status quo, come up with a plan, and pitch it to the decision makers.
For potential customers: The next time two (or any number) of your programmers come up with an idea to redo one of the game’s core mechanics if it’s somewhat consistent, maybe it’s worth giving them time to prove their ideas. Poke a few holes and challenge some concepts that seem loose, and you can end up with a version of this mechanic that works better for your game.