Shell's Kitchen: A Recipe for a Successful Game

Shell's Kitchen: A Recipe for a Successful Game

In this article, a group of The Game Assembly students share how they created their game, Shell's Kitchen, from ideation to final touches with VFX.

Shell's Kitchen is a game made by students at The Game Assembly over the course of 9 weeks. In this article the team shares how they created their final project from ideation to final touches with VFX. If you are looking for inspiration for your next Rookie Awards entry, this article is for you!

It all starts with an idea

At The Game Assembly, each project starts out by selecting a reference game. For projects 1 through 7, we always had a small selection of games to choose between. But for our 8th and final project, we had the freedom to choose any reference game we wanted.

With our previous experience with making 7 games, we had learnt a lot about scoping your projects reasonably. Our engine programmers wanted to choose something that was easy for our engine to handle. That meant no open world 3D games that would cause performance issues. Overcooked, always being in a fixed perspective and not containing too many objects per level, was a perfect choice for that reason. Performance was never something we had to worry about, so we were able to spend our time on other things.

Another important factor in our decision was that there should be enough work for each discipline to do. When we were discussing reference games, there ended up being a lot of ideas that one discipline did not want to do because there was simply not enough work. Overcooked ended up being the only game that was completely balanced, with plenty of work for everyone. So with that, we got started!

Picking an art style

For graphics, we had 5 artists who all have different interests and styles, so we needed to find a style that suited everyone. We knew we wanted something with a lot of pop and colour. In fear of the games turning out too similar we decided that we needed a different art style than Overcooked, and decided that Slime Rancher 2 was a good reference.

The theme for the game was discussed between all disciplines to make sure that everyone in the group were on the same page. After we settled on the fish theme we began concepting characters and environments.

Early mockup
Original player character designs

We worked closely with the animators during the concept stage to make sure they had something fun to work with. A big challenge to tackle was the fact that Overcooked doesn’t have a lot of animations, so we needed to add stuff that the animators could work with to have more things to animate. For example, we made the trash can into a little creature instead of just a regular plastic bin, and added unique customers for each "area" of the game.

One of our "extra characters" added for the animators

Our overall 3D pipeline consisted of high poly sculpting in ZBrush, low poly retopologizing in Maya and texturing in Substance 3D Painter. We used a mix of generators and a lot of hand painting for the textures. The concept art was used mostly as a guide and not something we followed precisely, instead a lot of design choices were made on the spot or discussed between the artists.

Shell's Kitchen's Asset Gym
An overview of all the assets in the game
Our goal was ultimately to create a fun and bright game. We went over the colours and textures over and over again to make sure everything was consistent and readable.

Finding extra work as animators

With 3 animators working on Shell’s Kitchen, there were some concerns initially that there would not be enough work for everyone to stay occupied through the 9 weeks. Overcooked is not an animation heavy game, with all the characters having the same animations, as well as most actions not even having any animations at all. So we had to figure out ways to increase the amount of work for the animators to do.

We worked a lot with the theme of the game, coming up with extra lore, adding characters, and having animated background elements as well as adding four cutscenes that would serve as story building.

Our goal for this project was always to give all the characters distinct personalities and mannerisms, as well as to fill the entire game with as much life and juice as we could with the amount of time we had on the project. This is why we split the work in a way that two animators were responsible for their own set of characters with no crossover. Since we have different styles of animating, this made the characters very distinct from one another and made them feel like individuals.

Different animations for the same action
All of the animated characters in the game

The third animator worked on cutscenes, using both Maya and UE5 to render them. The reason for using Unreal Engine 5 for the cutscenes is that Catbox does not contain any cinematic tools. Unreal’s Sequencer is a really powerful tool for animating cameras and working iteratively on each shot separately.

In order to better communicate scale, we’ve animated the scale of the models for specific shots. The most challenging part using Unreal was to match the materials and colours. The textures had to be packed in Unreal’s standards and re-exported for each model we wanted to use. Matching the lighting and post process to imitate the game’s aesthetics required a lot of back and forth to finally find a match that translates well. After the cutscenes are rendered, they are played as mp4 videos in Catbox.

Building a game in Catbox Engine

At The Game Assembly, we develop our own game engines from scratch and use those for the final game projects. Catbox is the name of our game engine, and the design is heavily inspired by Unity, so the programmers would feel familiar with the editor layout and the GameObject Component system. Working in your own engine comes with unique challenges, but it can also be a great learning experience.

Catbox editor

The greatest challenge we faced using our own engine was implementing physics into our game through the PhysX Engine. For this project, getting the movement to feel right proved to be a big challenge. The player would get stuck on corners when moving, the dashing felt inconsistent, and you would accidentally climb up on counters all the time. We tried to solve this by tweaking damping and bounciness values, which did solve those issues - but ended up creating a different one.

In the end, it was a mix of checking which side the collision was on and stop the character from traveling in that direction and resetting the velocity when we needed the character to stop.

The game in its alpha state

As for gameplay programming, we focused on making a minimum viable product first and foremost. The core gameplay loop, as well as the level select and UI, was all in a basic functioning state after just 2 or 3 weeks. Being able to playtest our game so early helped us detect bugs, give feedback on the levels and improve the controls. Our constant playtesting and feedback is what made the end result so polished. If there is one lesson to take away from all the projects we’ve done at TGA, it’s that playtesting and feedback is incredibly important!

Designing interesting levels

When it came to the Level Design of the game, we had 3 designers working on 9 (10 if you find the secret level) levels. Our challenge when designing these levels was finding the balance between level design and game design, since this format was a bit different from what we were used to. With such limited space and one fixed camera, we spent a lot of our time with trial and error, constantly testing and updating the levels based on feedback.

The hardest part was finding what made the game fun design wise. It often came down to simple solutions that touched the purest form of what is fun in playing co-op games; messing around with each other.

What we ended up doing was that in pre-production we designed a large number of different levels with different styles and later looked closely at each of them to see which ones were actually fun to play and had interesting designs.

Sketch for the second level
Second level in alpha

Later into the project, the biggest obstacle became finding out how to use the game mechanics in the right way. We realised that much of the negative feedback we got about the levels had to do with how we used the levels mechanics such as the moving platform, teleporter and moving kitchen. We then had to find what made those mechanics fun to use and re-design some of the levels purely around the aspects of what made the mechanics fun to use even if the new designs didn't match what we originally used the mechanics for.

The VFX workflow

In terms of VFX, we aimed to achieve a style similar to that of Overcooked. As for the water, we drew inspiration from Wind Waker. The majority of our VFX were created using textures in combination with the Catbox particle system.

The workflow for creating VFX usually begins with creating a simulation in Houdini and rendering it out as a flipbook texture. Then we apply filters to the flipbook texture in Photoshop to achieve a more stylized look. Finally, the texture is imported into the Catbox particle system to create the final effect.

Effects made in Catbox particle system

Regarding the water, our goal was to incorporate foam planes, caustics, and foam lines where objects interacted with the water surface. After carefully considering technical limitations and our project timeline, we decided to maintain a consistent water level across all levels. This decision allowed us to implement foam lines, caustics, and other effects using conditional statements in shaders. Additionally, we introduced placeable foam planes with animated noise to enhance the level of detail.

Foam planes and caustics

To further enhance the liveliness of the world, we implemented wind shaders that utilised vertex colours as masks. This approach enabled us to apply gradients of vertex colours on foliage and cloth, selectively influencing areas where we wanted the wind to impact the assets.

We also incorporated proximity-based functionality for certain effects. For example, the portals become active and the shark in the level select screen dives when the player approaches. Even the hats in the game have custom effects. For instance, the propeller-hat rotates based on player movement, while the chef's hat reacts by getting pushed back and rebounding when the player runs and then stops.

Final words

If there is one key takeaway from this article, it is the importance of having a reasonable scope, as well as playtesting and iterating often. Without these, Shell’s Kitchen would not have ended up as polished as it is today. We also of course could not have done it without the very talented and dedicated individuals in our team. We could not have imagined a better end to our final year here at The Game Assembly!

If you want to try out Shell’s Kitchen, you can play it for free here, and reach out to the team via their Rookie Awards 2023 entry here.