rat and cheese and oh no there's a flood

2023 "Dream logic has interesting effects on plumbing"

Summary

This is the fourth game of the Freezing World Pentalogy, a series of five rapid prototypes created for a university module, and was developed within three or four days of work using Unity visual scripting. It features two-player asymmetrical co-op tank-controlled platforming, ascending up a 3D level to avoid dangerous rising water.

Overview

Inspired by Gustavo & Brick from Pizza Tower, Tom & Jerry and the Delfino Pier Mario Kart battle course, this game features a jumping cheese wheel and a non-jumping rat in a co-op platforming experience centered around vertically aiding each other upwards through various level gimmicks. The theme is cartoony despite technically taking place in a grim post-apocalypse, reflecting the rat's dream world that we're playing through where cheese is sentient and capable, as well as having a name (even if it's just Cheese) and aspirations for the future in the storyline of these prototypes. This is also the first of the prototypes to be in 3D, so the production process was relearnt slightly to accomodate the new axis and full objects with materials/textures instead of just sprites.


Video Playthrough & Commentary

Pop out to watch in full screen.

Documentation (GDD & LDD)


Contents


Introduction

Summary

Key Features

Game Mechanics

Core Gameplay

Player Mechanics

Level Mechanics

Level

Overview & Level Elements

Pacing & Flow

Interface

HUD

Camera System

Other Screens

Art & Audio

Artwork

Effects & Animations

Sound


Introduction


Summary

Soon after the apocalypse, a single rat explores the ruins of a city in search of food. It finds a collapsing restaurant, and in it an entire little wheel of cheese, but then the rat realises the restaurant has begun to flood, and with its bulk it can’t escape on its own. It dreams that the cheese were alive to help, and that’s exactly what happens; the jumping cheese wheel can use the cuboid rat as a platform so they can reach a tap that, if reached, can just maybe stop the flood...


In a two-player co-op platforming experience, one player controls the cheese wheel and another controls the bulky rat, as they cooperate to ascend across tables with various mini-puzzles and small platforming challenges to reach the sink, hurrying upward to avoid rising water that drowns either character.



Key Features

The game features two playable characters; a cheese wheel called Cheese that can jump and a rat called Rat that cannot jump, both controlled by “tank controls” similar to early Resident Evil titles or Boku no Natsuyasumi. Two players, one for each character, ascend through one level comprised of a bunch of tables with menus that can be knocked down for use as ramps, certain wooden objects that can be pushed by Rat, and dream barriers that Rat can cross but Cheese cannot. The pushable objects are a condiment holder to be used as a platform and the tap at the end of the level that acts as the victory condition. Meanwhile, water continuously rises from below, and contact with the water results in an immediate game over. The game also features a basic title screen, win screen and game over screen with clickable buttons to proceed.



Game Mechanics


Core Gameplay

Cheese is controlled with WASD tank controls; W moves forward, S moves back, and A/D are used to rotate the direction Cheese faces. Additionally, Cheese has a jump using the spacebar. Similarly, for the second player, Rat is controlled with tank controls on the arrow keys, but with slower movement and rotation speeds and the inability to jump. This encourages Cheese to jump ahead most of the time, as the escort for the less able Rat. However, there are times where Rat is necessary for Cheese to advance; this includes Rat’s convenient cuboid shape needing to be used as a platform by Cheese to proceed, as well as Rat’s ability to push any object with a light wood texture, as opposed to the dark wood texture of the platforms that form the level’s structure.


As soon as gameplay begins, Rat and Cheese need to somewhat hurry, because dirty water is rising from beneath as shown in the HUD, which will drown Rat or Cheese on contact and result in an immediate game over. However, carelessness especially with platforming can lead to falling down into the water, so speed, cooperation and cautiousness need to be balanced.


The end goal is to guide Rat to the sink and tap at the end of the level, where Rat can turn the handle to stop the flood, leading to the win screen. For Rat to get there, Cheese needs to get to the end section first too to let Rat up using a menu beforehand.



Player Mechanics

1) Movement: WASD and the arrow keys for Cheese and Rat respectively allow for moving back and forth, and rotating either way about the vertical axis. Forward and backward movement has no difference other than direction. Rat’s movement and rotation are slightly slower than Cheese’s.


2) Jumping: Exclusively to Cheese, the spacebar can be pressed to perform a low jump to climb up steps and clear large gaps between platforms.


3) Usage as a platform: Technically either player can be used as a platform to stand on by the other player, but due to Cheese’s ability to jump (and inability if Rat gets on top of Cheese due to being blocked), Rat is an effective platform that can move around. Note that characters will slide off of each other if the bottom one moves; they do not work like moving platforms.


4) Pushing: Exclusively Rat can push objects with a lighter wood texture, which are the condiment holder and the tap handle.


5) Death: If either Rat or Cheese makes contact with the rising water, the game ends.



Level Mechanics

1) Floors and platforms: The level primarily consists of dark wooden tables that can be stood on as solid unmoving objects, and also features smaller wooden structures and some seagrass weave platforms that function the same. The sink at the end of the level also behaves the same.


2) Menus: Paper restaurant menus can be knocked down by either character (though only Cheese can reach the triggers) by standing on their overhangs. This snaps the menu permanently to its fallen position, where it can now behave as a ramp, identically to the floors and platforms.


3) Condiment holder: An object pushable by Rat, that can be stood on by Cheese to be used as an additional platform. To get the height to jump onto the condiment holder, Cheese will typically need to use Rat as a platform first to reach the height of the lower end of the condiment holder’s diagonal top.


4) Tap handle: An object pushable by Rat, but which doesn’t slide along as it’s locked to rotating about the vertical axis. Once the tap handle is beyond a certain angle, the tap is considered closed and the game is won.


5) Dream barriers: Pinkish transparent barriers that act as a solid wall for Cheese but can be passed through by Rat, as the one dreaming up and actualising the scenario. This creates areas that only Rat can access until further progression.


6) Rising dirty water: The water ascends at a slow rate that forces players to progress, as contact with it results in an instant game over.



Level


Overview & Level Elements

The level features a rapidly repeating structure of teaching a mechanic, then asking the players to use it in combination with other learnt mechanics to test and reinforce their knowledge. This is done at a fast pace to give players a hectic feeling of rushing upward across the restaurant furniture.


In the first section (1), players are encouraged to progress to the right along two tables, with a gap small enough for either player to cross by simply moving forward. A staircase of small wooden squares (2) is at the far end of the table, encouraging Cheese to jump up their upward arc to reach the next table (3) where a menu is prominently placed. Cheese can continue to follow the curve of the staircase to knock down the menu (1), allowing Rat to ascend. (As this happens, a leaning menu and some wooden protrusions at the table legs in the background show the players the water rising if they didn’t notice it in the HUD.) 


The focus is alternated to Rat, who is led to a yellow bounded area (1) next to a platform (4) too high for Cheese to jump up to. By positioning Rat over the yellow area, Cheese can use Rat as a platform to get up and reach the next table (6) to knock down the menu (2) as before, now with gaps between the platforming to be wary of falling down into; the slanted platform (5) here encourages the player to be cautious and push forward further to be more likely to achieve the jump while making the platforming more interesting.


Next is a section (7) with the pushable condiment holder (1). Cheese is likely to reach it first with higher movement speed, to discover that Cheese can’t interact with it. However, its obstructive position ensures that Rat will catch up and likely touch the condiment holder to discover its pushable nature. In the background, another yellow bounded area (2) is visible, so that Rat makes the association and pushes the condiment holder to the correct position for Cheese to jump up to the next table (8), likely made curious by the pink dream barrier (1), which Cheese will soon discover to be solid. To get onto the condiment holder Cheese needed to use Rat as a platform again, but due to just having pushed the condiment holder, Rat is likely to be in the correct position. Whether or not Rat is in the right place, this is the first time Rat needs to be independent and be somewhere without an explicit marking.


Rat, seeing no menu this time, is encouraged to climb up the seagrass weave ramps (9) to reach another dream barrier (2), and on continuing to move forward, can discover that while Cheese can’t pass through them, Rat can. Meanwhile, Cheese platforms up the seagrass platforms (10) independently, aided by the shadows on a low table beneath the platforms to recognise that the jumps are straight-forwards with a 90-degree turn.


Next, a series of low wooden platforms flush with the table and seagrass weave platforms above (11) must be navigated by Cheese, but there’s a yellow bounding area (3) for Rat to stand in for Cheese to have the necessary height. Dream barriers (3, 4) block off Cheese from simply going around and cheating, while letting Rat peek in for use as a platform. The challenge is repeated once more (at (4)) without a yellow indicator, to ease off of the handholding that Rat usually receives.


If Cheese continues forward to meet with Rat, they’ll find themselves stranded, but Rat can go back to the end of the platform (12) for Cheese to jump back on track if this happens. Otherwise, Cheese will turn left and platform up to the next table (13), now with a menu (3) as a clear goalpost to let Rat up to the next section.


One more seagrass weave ramp (14) leads the players to the final sink (15). Decoratively, there is an area inside the sink (16) with clean water that players can safely touch with a seagrass escape ramp, but Rat is encouraged to push the tap handle (2) on account of its odd wooden material identical to the condiment holder from before. Doing so wins the game as the water is stopped from ascending further.

Unannotated view of the level from an isometric perspective. Up-left is towards the top-back of the screen in gameplay.
Level from the same perspective, annotated with the notes from above.

Pacing & Flow

As mentioned in the overview, a rapid iterative process is used to teach players mechanics quickly and in an exciting way, which creates a fast-paced level. Counter to this, to ensure the game isn’t too difficult, the pace of gameplay itself is relatively slow. The tank controls ask players to line themselves up by rotating before committing to major movements, especially for Cheese while platforming but also for Rat, say, before pushing the condiment holder or overshooting when peeking out as a platform near the end. Also, the movement speeds are relatively slow especially for Rat to allow for a degree of precision, without being so sluggish that the tension of the escape sequence is lost.


For flow, the level is essentially linear for a successful completion, with non-golden-path elements simply wasting some amount of time to add tension if any mistakes are made. If either player dies, the flow is abruptly cut off, as any respawn or checkpoint mechanic would add complications regarding the positions of players and the state of the level before death, so the difficulty was balanced to encourage a challenging but fair first-time clear if the players learn fast enough to keep up. Otherwise the iterative teaching of the level means that any accidental or misunderstood mechanics are re-established afterwards. Initially some of the flow was too vague, so in response to feedback asking for additional breadcrumbing, I added literal breadcrumbs along the tables in places to lead players along, as it thematically fits with an abandoned restaurant.

Golden paths for each player across the level. Yellow is Cheese’s, grey is Rat’s, and pink is where breadcrumbs are placed in a line to guide players. An X of breadcrumbs (see centre of image) is placed on a decorative lower platform used for shadows, to tell players not to jump down there. At the end of Cheese’s path, Cheese is no longer required to go anywhere, so the golden path ends with the suggestion to get out of the way of Rat on the ramp while staying on the high platform away from the water.

Interface


HUD

The in-game HUD is quite simple, consisting of the controls for each character and a height meter. Cheese’s controls are in the lower left with Rat’s controls on the lower right, highlighting their asymmetry in Rat’s inability to jump by straightforwardly saying “rat forgot how to jump”. The height meter was added in as a response to feedback, when the environmental indication of the water’s height wasn’t enough to realise that the water was rising and how far it had risen. By indicating the heights of Rat, Cheese and the water using a slider, it’s easier to ascertain the time remaining before danger, while also providing a rough sense of progression up the stage.

Diagram of the game’s HUD during gameplay, as follows:1: Controls for Cheese2: Controls for Rat3: Height meter4: Cheese height indicator5: Rat height indicator6: Water height indicator

Camera System

Due to having two playable characters that are optimally both always on-screen, the in-game camera is always centred on the difference between Rat and Cheese’s positions, so that it ends up perfectly in between the two even if players separate. In order to account for players getting further away, the field of view also changes by Rat and Cheese’s distance from each other. This isn’t a perfect solution as it creates stretching and heavily distorts the screen including the perception of platform locations constantly which is awful for gameplay, but it does add to the dreamlike effects visually and isn’t intensive to calculate.

Diagram showing how the camera’s field of view changes as players get further apart. The centre of each screen is highlighted to show the camera aims between the players.

Other Screens

Other than gameplay, the game has three menu screens. Each menu has one or two buttons that can be clicked with the mouse that either switch to the start of gameplay, switch to a different menu, or quit the game. These buttons are semitransparent, but turn opaque when hovered over with the mouse to signify their selection. The backgrounds of these menus are infinitely-repeating grids of artwork that move in a large, slow and steady circle for visual flair, calculated using sine and cosine waves for the horizontal and vertical elements as time passes.


The main menu features the game’s title, a regular background, and two buttons: “commence fantastical dream” to begin gameplay and “bye” to quit the program. The death or game over screen features a blue watery version of the artwork, a message saying that Rat or Cheese drowned, and the buttons “i don’t think so” to restart gameplay and “i can’t take this anymore” to return to the main menu. The win screen features the same artwork as the main menu but with added smiles on Rat and Cheese and the water crossed out, a message about winning the game and stopping the flood, and a single “yay” button that returns the players to the main menu.

Menu screens as seen in-game while not hovering over any buttons. Top: title screen/main menu. Bottom left: death/game over screen. Bottom right: win screen.

Art & Audio


Artwork

All of the artwork in the game was either created by me from scratch, or edited by me using CC0 sources, except for the font “Megufont” which I have permission to use from its creator Megu. Outside of the game, the menus fully feature a cartoonishly rounded, almost Microsoft Paint-like childish style, which Megufont fits like a glove. Within gameplay, the characters of Cheese and Rat (as well as the breadcrumbs) also feature this style, in contrast to the realistic tileable textures of every other asset in the game, which creates an ominous uncanny valley effect which fits the lore of the rat’s imagination physically brightening hopes in an otherwise desolate post-apocalyptic future. However, to add a greater degree of connection between assets, I colour-quantised the realistic textures to give them a limited colour scheme that fits better with the cartoony aesthetic while somewhat keeping up the uncanny valley intent.


The game features an overall orange colour palette, both in menus and with the lighting on the game’s wooden tables and other generally brownish/yellowish assets. This gives a restaurant-like feel of dim lighting whether by bulb or candlelight, as well as emphasising the food theme with the intersection of red and yellow, common colours used by food establishments since they enhance hunger.

All textures that aren’t HUD or UI-related, sorted by tileable (red), environmental (orange), character (blue) and post-processing (pink). See below: 
1: Wood texture, used on tables, altered in-engine for pushable objects2: Water texture, adjusted colour in-engine3: Metal texture, used on the sink4: Seagrass weave texture4.1: Seagrass weave normal map generated on NormalMap Online5: Brick texture, used on ceiling but not properly visible in-game6: Tiles texture, used as the floor underneath the water7: Restaurant image, used mirrored as the skybox walls8: Menu texture9: Breadcrumbs texture, black background filled in for visibility10: Yellow bounded area texture, distortion is from a Dents effect11: Cheese’s texture, hardly visible in-game due to lighting12: Rat’s texture13: “Spectral lut” texture used by the chromatic aberration effect (upscaled)

Effects & Animations

The game features a heavy use of post-processing when in-game, on account of it taking place in a dream. Colour grading, lens distortion and chromatic aberration with a custom spectral lut are combined to create a dreamlike effect with blurred corners of the screen, slightly odd but not nauseating screen distortion, and a hazy saturated palette.


Animation-wise the main animations in the game are the menu backgrounds moving circularly (as discussed in the Interface/Other Screens section), and the water animations, which consist of panning the material coordinates on two different layers in different directions over time.



Audio

Audio-wise, all sound effects are gathered from CC0 sources via Freesound, and both songs are in the public domain via FreePD. The music was selected to be exciting and cartoony, and the in-game music was significantly pitched up to add a rushing comedy aspect to it. The sound effects are equally cartoony with a rising “whoop” jump sound, a creaking push sound for the pushable objects, and realistic water sounds (splashes and ambient wave noises as it rises) to mirror the uncanny valley between cartoon and dream-realism in the artwork.


In-game font: Megufont

Site font: Atkinson Hyperlegible


Apart from the above, all content was created by me, CactusMagelord, unless otherwise stated.



"I'll take this opportunity to immortalise the fact that (person whose name starts with J) is awful at controlling this game. Sorry, had to be done."