This document was generated on January 17, 2010. Contents of sections will be up-to-date. If the index was altered since this page was generated, the structure of the document may be outdated and sections may be missing.
Introduce the game. Section populated by content from one sheets and treatments.
Shelf Life
Heather Arbiter, Michael Ey, Kelley Piering, Joseph Pietruch
Döscher Fridgwick is a gnome who lives in the refrigerator of a famous TV cooking personality. When the door to the fridge is closed, Döscher works to rearrange the contents of the fridge to prevent any food from remaining in the fridge long enough to go bad. Food that goes bad will come to life and chase Doscher around the fridge. Score points by saving food (getting it removed) and lose points for letting spoiled food remain in the fridge after it has gone bad.
The ultimate goal is to get as much food out of the fridge when its opened before the food is spoiled. Points are therefore awarded for food successfully removed and the player is penalized for food that has spoiled and isn't in a position to be removed (see
fridge open)
Everything you need to know about gameplay. Critical path, mechanics, physics, systems, units of measurement, game rules, scoring, win/lose states, etc.
The fridge graph is a grid collection of
fridge cells the size of a fridge. All food and enemies has to reside in fridge cells. The fridge shelves and walls also fit into the fridge graph. Food must fit into cells and can only placed within them. The graph is used for food location, some collision detection, enemy navigation, and various elements of game logic (food lay in the front 3 rows from the door to be removed, enemies must be within 5 units).
The camera is attached to the rear of the fridge and it always points at
Doscher. The player can control the camera by using the
camera controls. This will move the camera along the rear plane of the fridge. The camera always looks at Doscher. When food is between Doscher and the camera, it will become semi-transparent so the player can still see their character.
Units that are used through the document and how they relate to real-world units if possible.
Refrigerator units or
rfu are the units that describe the size of items in the fridge. A square rfu is the size of an average apple. A single rfu is 4
3du (length, width, and depth).
A fridge cell is a location in the
fridge graph. Each cell is the size of a
rfu3.
Hit points, or hp, are units of
health.
Seconds,
s, are real-world seconds. They do not correspond to anything on the
clock.
Units in world coordinates of the game. One world unit is 4
rfu. These correspond to the size of the default grid in Maya.
All foods have these standard properties
Size is the height, width and depth of the food as measured in
rfus.
Specific foods have a set lifetime. When they are placed in the fridge they are given that lifetime to start and as the game is played, that lifetime is decremented until it reaches 0. The lifetime is given a slight randomization so all food isn't exactly the same. Different foods have different starting lifetimes. The lifetime of food when it is added is also shortened based on how many times the fridge is opened. (see
Fridge open for details). As food decays, it will be tinted progressively more green until it reaches 20% of its original life. Then it will begin flashing green to alert the player of its impending spoilage.
What can the player do and how does the game respond to the player. Rules, systems, abilities.
The fridge is opened every 70 seconds. When the door is opened, the game is paused until the player resumes it. The
Fridge open screen is shown tallying up the score. During this time, the fridge is cleaned.
- Food that has more than 50% decayed and is within 3 rfu from the front of the fridge is removed.
- Players are awarded 100 points for each food removed.
- Enemies that are within 5 rfu of the front are removed.
- Players are penalized 100 points for each enemy that wasn't removed.
- New food (random kinds) is added to the fridge in random locations.
- The amount of food added is 7 + the amount of food removed.
- The food added has its lifetime shorted by 1.7 times the number of times the door has been opened.
Players are not scored at any other time. Nor can enemies or food be removed until this time. Players know the door opening is approached with the clock.
Doscher has 100
hit points of health. This is indicated by the
health bar
- Damage
- He takes 25 damage whenever he collides with an enemy. After taking damage, the corners of the screen will flash red to alert the player, and the character will cry out.
- Invulnerability
- After taking damage, the character is invulnerable for 1 second. During that second, the player's health will not regenerate.
- Regeneration
- Health is only regained by regeneration. Health will regenerate until full whenever the player is not invulnerable (having just taken damage) or has just used stun. Health regenerates at a rate of 2 hp/s.
- Death
- When the player's health reaches 0, they will die.
The player dies when Doscher runs out of health. Death leads to a game over and the player will be brought to the
Game over screen.
Stunning is an ability possessed by
Doscher. He can stun enemies, briefly disabling them. This is one of Doscher's few defenses against enemies since he cannot kill them himself. The stun is emitted radially from Doscher in a sphere around him at a radius of approximately 1 rfu. Any enemies that are in that range are frozen in place for 2.5 seconds. While they are stunned they cannot move or hurt Doscher. Stunning is done by pressing the
stun button. It has a cool-down (time before it can be used again) of 2 seconds.
When the player uses the stun ability, it will stop the regen of his health for 1 second.
To unspoil food, the player will bring
Doscher close to it and press the
unspoil button. Food will throb blue while this occurs. Only food that is directly above, below, north, south, east, and west of the character will be affected. While food is being unspoiled, 15 seconds of lifetime is restored per second that food is being affected by this ability. This only lasts while the player remains near the food and is holding the button.
Any that moves in the game: how does it do it. Controls, movement models, speeds, directions, etc.
The
Doscher can jump onto a height of a little over 2
rfu. Doscher can move while in the air. His jump carries him in an arc which gives him some extra distance from his jump.
The player causes Doscher to jump by pressing the jump button. Jumping is necessary to climb up steps created by stacking food to reach other levels. While in the air, Doscher can push, pick up, and unspoil food. He can also carry food while jumping.
The player moves
Doscher with the
movement controls. Doscher can move in all directions on the plane he is standing on. His movement model is a kind of waddle since he is made of ceramic and his feet are attached to a base. He can move at a speed of 18
3du/
s. He will turn in the direction he is moving.
Forward on the movement controls moves the character towards the front of the fridge (away from the camera). Back is towards the back of the fridge (towards the camera). Left goes to the left, and right to the right.
The player can also rotate the character in place clockwise and counter clockwise.
Food is moved by the player. It cannot be moved if it has another food or an enemy on top of it. Food does not decay while it is moving or being moved.
The player can pick up a food that is in front of him at a distance of less than or equal to 1 rfu. This is indicated by a particle effect in front of the gnome. Food that is being hit with this effect can be picked up. The gnome can jump up and move his locator and therefore where he can place or pickup food.
When food is picked up, it shrinks down and floats over Doscher's head. While carrying food, Doscher cannot pickup, other food, unspoil food, or push food. He can still jump, move, and stun.
Once food is held, the gnome will be able to place it back down in a space in the same range as his pick up range. The location of where the food will be placed is highlighted with an orange box the same size and shape of the food to be placed. If that indicator is not present, there is no room to put the food there. Doscher can rotate food that he is holding to change its orientation. the orientation of put down indicator will also change. Doscher can also rotate in place to help him put food down exactly where he wants it.
2.5.6.3.2 Push
Food is pushed by one
rfu away from Doscher by facing it in the direction you want it to go and pressing the
push button. Food is pushed at roughly the same speed that Doscher moves so the player can keep up. Repeatedly pressing the button will push it forward over and over.
Enemies move to chase the player around the fridge. Enemies move at a speed of 2
3du/
s. They move in an A* with a depth of 7 rfu (in all directions) in an attempt get as close as they can to the player. Enemies cannot jump nor can they climb down if they are on top of anything. This allows the player to trap them behind walls of food or even trap them on top of food by placing food that is about to spoil on top of another food so the enemy will be trapped there when it spawns. When enemies spawn the food they are spawning from will shrink and they will grow in its place. Enemies can only be disabled by
stun. They cannot be killed, only removed (see
Fridge open). To get enemies off of food they are trapped on, the player will have to place another food next to the one they are trapped on for the enemy to go onto.
Enemies are hostile NPCs. For Shelf Life, enemies are what
food turns into when it spoils. Enemies that are not spoiled are just food. Food becomes an enemy when its
life reaches 0. Enemies are moldsters that chase your around (see
enemy movement). They can only be removed from the fridge when the door opens. Otherwise, the player can only affect them by
stunning them.
These are foods in the game.
| Milk |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
3 |
| Depth (rfu) |
1 |
| Lifetime (s) |
130 |
Concept art source:
| Eggs |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
6 |
| Lifetime (s) |
180 |
Concept art source:
| Mashed Potatoes |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
1 |
| Lifetime (s) |
90 |
Concept art source:
| Spaghetti |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
2 |
| Lifetime (s) |
125 |
Concept art source:
| Shredded Cheese |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
1 |
| Lifetime (s) |
220 |
Concept art source:
| Grape Jellow |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
450 |
Concept art source:
| Peas |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
150 |
Concept art source:
| Macaroni |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
110 |
Concept art source:
| Apple |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
1 |
| Lifetime (s) |
235 |
Concept art source: {{{concept-source}}}
TEST!
| Mayonnaise |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
3 |
| Depth (rfu) |
2 |
| Lifetime (s) |
410 |
Concept art source:
| Blueberry Jam |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
1 |
| Lifetime (s) |
305 |
Concept art source:
| Cherry Jam |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
1 |
| Lifetime (s) |
305 |
Concept art source:
| Pickles |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
2 |
| Lifetime (s) |
400 |
Concept art source:
| Cheese |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
3 |
| Lifetime (s) |
165 |
Concept art source:
| Coffee Tin |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
3 |
| Depth (rfu) |
2 |
| Lifetime (s) |
315 |
Concept art source:
| Baking Soda |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
2 |
| Lifetime (s) |
100000 |
Concept art source:
| Sticks of Butter |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
295 |
Concept art source:
| Margarine Tub |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
320 |
Concept art source:
| Half Cake |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
2 |
| Lifetime (s) |
140 |
Concept art source:
| Chinese Food container small |
|
|
Width (rfu) |
1 |
|
| Height (rfu) |
1 |
| Depth (rfu) |
1 |
| Lifetime (s) |
50 |
Concept art source:
| Chinese Food container large |
|
|
Width (rfu) |
2 |
|
| Height (rfu) |
2 |
| Depth (rfu) |
2 |
| Lifetime (s) |
75 |
Concept art source:
How does the player interact with the game? GUI, HUD, controls.
Indicates how much time is left until the
fridge is opened. Appears in the upper left of the
HUD as a gauge that fills until the door is opened. The guage fills from left to right and goes up in ticks approximately every 3 seconds.
The health bar indicates the players health. It is a horizontal bar in the lower right hand corner of the HUD. When the player takes damage, this gauge drops. The gauge lowers from left to right. The gauge flashes red when the player's health is below twenty percent.
Controls are how the player interfaces with the platform. Throughout the document, controls should be abstracted from the platform. Only in this section should things like
jump button have an explained mapping to a specific input device.
| Control Mapping
|
| Gamepad mapping | Left analog stick
|
| PC mapping | WASD
|
Rotate in place
| Control Mapping
|
| Gamepad mapping | left trigger (counter clockwise), right trigger (clockwise)
|
| PC mapping | Z (counter clockwise), X (clockwise)
|
Controls will slide the camera along the back of the fridge. The camera is always pointed towards the gnome.
| Control Mapping
|
| Gamepad mapping | right analog stick
|
| PC mapping | 4, 8, 6, 2 on number pad.
|
Jump button is used to make
Doscher jump. Holding this button will allow Doscher to jump higher.
| Control Mapping
|
| Gamepad mapping | A
|
| PC mapping | Space
|
Activates
stun.
| Control Mapping
|
| Gamepad mapping | Right Bumper
|
| PC mapping | C
|
Press the button once to pick up food. Press it again to put it down (if a valid cell is high-lighted).
| Control Mapping
|
| Gamepad mapping | X
|
| PC mapping | E
|
Allows the player to rotate food being held. (See
pick up)
| Control Mapping
|
| Gamepad mapping | Left bumper
|
| PC mapping | Q
|
Unspoiling occurs when Doscher is facing a food and holding the button.
| Control Mapping
|
| Gamepad mapping | B
|
| PC mapping | F
|
To select different options
| Control Mapping
|
| Gamepad mapping | Up and down on D-pad
|
| PC mapping | Up and down arrow
|
To select the high-lighted option
| Control Mapping
|
| Gamepad mapping | A
|
| PC mapping | Enter
|
To cancel/go back
| Control Mapping
|
| Gamepad mapping | B
|
| PC mapping | Esc, B (only if it says B on the screen)
|
To continue/go forward
| Control Mapping
|
| Gamepad mapping | A
|
| PC mapping | Esc, A (only if it says A on the screen)
|
There are screens in the game.
The game screen is where the game play occurs. It has the
HUD as an overlay.
This screen is displayed when the
fridge is opened. It displays the following:
- Previous score
- Number of food saved
- Enemies not removed
- Final score.
See fridge open for details on scoring. The player leaves this screen to return to the game screen by pressing A (on keyboard or gamepad. They can also press B).
Instructions on how to play and gamepad controls. Use left and right on the D-pad to turn the page.
Depending on whether you arrived here from the
pause screen or from the
main menu screen, you will return to that screen.
- Fullscreen
- Game pad/mouse toggle
There may be multiple splash screens but they all function the same and it goes from one to the next until the last one. That goes to
Main menu screen.
The game over screen is reached when the player dies. From there the player will continue to the
Credits screen.