Wednesday, February 23, 2011

Tuesday, February 22, 2011

Tater Dev: Logo

A rough of the game's logo/cover.

Monday, February 21, 2011

Tater Dev: Player and World Interactions

In my previous post, I mentioned that the shape of Hot Potato's world plane and the controls are giving me some design headaches. It's a big problem to solve as the gameplay of Hot Potato depends on these two elements.

I'm going to be editing this on and off through out the week so come back and check it out.

The Problem:
Hot Potato's play mechanic is the player tilts the world and the ball moves according to the tilt's angle. By tilting the world, you're angling the ball so it falls onto objects to destroy them (score points). The tricky part is making this interesting and the solutions involve adjusting how player interaction is done.

Arguments on World Planes:
The Rotating box(screen) is the easiest method to implement as it can work with multiple methods of level construction and 2D or 3D art. The player's view of the world isn't obstructed and game objects can be clearly identified. As movement is limited to left and right, the game might not be as entertaining.

This rendition would make things more interesting as the player can tilt the world in more directions. This method can work with either manual level construction or procedural building generation. However the main issue with this method will be determining the maximum and minimum amounts of tilt the player can achieve and where the camera is positioned in relation to the ball.

This curved shape would give the game an interesting look based on the camera's position. The amount of tilt and level of rotation is constrained by the world's shape. This world type would work best with procedural building generation.

I once tried to explain this type of world plane to a friend using the 1st picture, instead it is best explained as being similar to some of the spherical levels found in the Ratchet and Clank series or Mario Galaxy.

Like the Cylindrical world, maintaining player interest will depend on the position of the camera. The camera position will determine the level of detail seen. Eg. A top down view will limit or negate the use of smaller objects such as crates. A zoomed in perspective would allow for more detail but can rotating and tilting a little disorientating for the player.
This method can work with building generation via scripts or manual placement. Manual placement would be dependant on the scale of the sphere, a larger sphere = more space to place objects.

Hot Potato has a minimalistic approach to GUI, it's a simple game and I see no need to make it complicated. The most important graphical interface the player will ever need is the ball. It's colour coded so you know just how much heat you're packing. If you need a refresher, it'll be in this previous post.

The menu will be acessed by pressing a keyboard button since trying to press an onscreen button would be a bad design choice for this game. Everything else is explained below:

Thursday, February 17, 2011

Hot Potato v1.0

Here be the most recent version of the design document which still requires a lot of refinement. Time's a ticking, crunch time is fast approaching and I have very little to show for it. Cries of "FFFUUUUUUUU-" will be heard.

Hot Potato

3D Destructive Sandbox

Unity 3

Hot Potato got Destructive

Violence and mayhem as a flaming ball rampages through a city

The game is set in a large cartoon world where the laws of physics border on the ridiculous. Collisions in the game will be overly dramatic and humorous; contact with the ball will result in flames and explosions. Gratuitous violence is to be expected.

Game Structure
Hot Potato is a destructive casual game where the player's aim is to destroy the city using a flaming ball. Each play session involves the player attempting to beat their previous score before the ball's flame extinguishes.

The world of Hot Potato is designed in a sandbox structure, this allows the player to explore and experiment. Hot Potato focuses on mindless destruction and violence for enjoyment.

The game has room for different environments (maps) to become available for players to download or unlock. These would extend gameplay by offering the player different scenarios and objects to explore and destroy.

The player manipulates the ball's movement by tilting the world left and right. The ball's trajectory is affected by the tilt angle; players can manipulate this to optimise gameplay.

The flame burns out over time and the game will end if the flame burns out or is extinguished. Quick reflexes are required to avoid obstacles found in the game; these could have an extinguishing effect on the ball's flame.

Points are awarded for the amount of destruction the ball causes. Destroying and exploding objects will fuel the flame which aids in the destruction of objects and prevents the game from ending prematurely. The size and temperature of the flame will affect its destructive power.

Players control the game world via keyboard, the amount of tilt is determined by the duration of the key press. The world can be tilted in 8 directions (X and Z axes) to a maximum of 40°.

The angle and speed of tilting will affect the ball; the player can judge the timing and angle of their tilts to optimise the ball's collision.

The camera functions by scrolling with the ball, the camera will attempt to keep the ball centred on screen.

The GUI will only display the player's current score while the ball's current direction will be displayed onscreen as a moving arrow.

The ball is indirectly controlled by the player, its direction of movement is determined by angle and speed of the world's tilt but also by explosive collisions and obstacles.

Burns out over time but is fuelled by colliding with destroyable objects. The flame's colour is a visual indicator of how long it will last for. The colour will change from Red > Orange > White, with variations in between.

Flame Colour Chart: Left (Coolest) > Right (Hottest)
Warnings will appear if the flame is in danger of being extinguished.

As the ball destroys more objects, its colour will change to reflect its temperature. An object's resistance to the flame is determined by its size, type and material e.g., wooden objects are very flammable while vehicles require a higher temperature to explode.

The flame's size can increase momentarily when it collides with multiple objects or causes an explosion. Extra points can be rewarded if the flame flares up during these instances. Flaring up will cause the flame to spread out for a limited amount of time.

When the ball collides with another object, it will either be damaged or explode depending on the object's size, type and material. A wooden crate will burn up but may explode if it contains explosive material. If the ball collides with a car, it could take repeated hits to explode the car.

Destruction and Explosions
The ball can destroy objects by burning or exploding them. Objects will add fuel to the flame while shrapnel can fly and damage other objects. Points are rewarded for the number of objects destroyed and additional points can be rewarded for explosions that occur during the destruction.

Explosions will fuel the ball's flame for longer and can cause chain reactions by destroying objects caught in its radius. Based the size of the explosion, the ball can be propelled in certain directions. This can be advantageous to the player as they can use it to navigate around the game or reach more objects.

Debris and Flying Objects
When an object is destroyed, there is a chance that it will break into debris or fly into other objects. Bonus points can be earned if the debris or object destroys nearby objects.

Barbequed, Gore and Ash
If the ball collides with flesh based creatures, there is a chance they will become barbeque or ash. Bonus points are rewarded if the player barbeques a large number of creatures. Gory collisions can occur if the creatures are hit with debris or flying objects.

There is the random chance that a pile of ash could become a zombie, points are rewarded if the resultant zombie is killed.

Buildings can be destroyed over time by multiple collisions with the ball or during multiple explosions. Large explosions are more likely to destroy a building than smaller ones however small ones could be chained together to topple a building. A building's resistance is dictated by its size and function; a shack is much easier to destroy than a bank.

Destructible Objects
-Cardboard Boxes: Standard fuel that can be found anywhere in the world. Will burn but not explode or burst into debris.
-Wooden Crates: Has a low chance of exploding and breaking into debris. This will provide the ball with a moderate amount of fuel.
- Packed Crates: Wooden crates filled with miscellaneous items, some of these have the potential to explode.
- Metal Crates: Depending on the size and flame temperature, these can be difficult to destroy. These have a random chance of exploding.
Fences: These have varying resistance to flame, a concrete barricade can be used as an alternate pathway while a wooden fence would be fuel.
-Signs: Objects that provide some fuel for the ball, these are more useful as flying objects depending of their size.
- Traffic Lights and Street Lamps: The light and pole can be destroyed as separate sections resulting in more points.
-Trees: Will burn down and fuel the ball for a long period of time. Can be used to crush other objects in the world.
- Telephone and Electricity Poles: These have similar function to trees but can cause more destructive effects like electrocution and electrical fires.
- Oil Barrel: Will explode upon contact, the hot oil can cause a flare up and burn nearby objects.
- Gas Cylinder: Will explode when broken open, the amount of damage is determined by its size. This can cause chain reactions.
- Acid Container: When this explodes, it can spray acid everywhere. This can be used to erode surrounding objects and injure nearby creatures.
- Bombs: Explodes upon contact, can cause multiple explosions and destroy buildings.
- Trashcans and Dumpsters: Colliding into these will cause an eruption of garbage which can then be used to fuel the ball.
- Vehicles: Can explode with direct collision with the ball. A larger vehicle is more likely to be burnt and flung around the world during collision or if pushed by an explosion.

Fleshy Creatures
-Humans: Two legged creatures that will run away from destruction and explosions. They can be hurt in numerous ways; points are allocated based on the death received. Additional points can be rewarded depending on what human is killed. E.g. A civilian is worth less than a Santa impersonator.
-Animals: Creatures that have the random chance of becoming barbequed if they collide with the ball.
- Zombies: Arises from the ashes of killed fleshies, can be killed for more points. These will attempt to consume any fleshies nearby.

Obstacles can be broken down into various types that have an effect on the ball or its flame.

If the ball is left in contact with these types of objects, its flame will be extinguished over time however these objects can propel the ball into an ideal direction. The player can prevent the flame from being blown out by tilting it away from the air flow.

- Fans: The size of this obstacle will indicate the strength of the fan, larger fans can push the ball away and lower the flame's temperature. A high temperature flame can destroy small fans but not industrial sized ones.
- Air Vents: The ball can be pushed in the direction that it faces however the flame can be reduced to Red if encountered.
- Wind Turbines and Wind Mills: These can push the ball back a long distance and blow the flame out.

The majority of these obstacles will immediately douse the flame causing an instant game over. The player should avoid these.

- Puddles: Will lower the temperature of the ball and reduce its flame with prolonged exposure.
-Ice: This will melt when in contact with the ball's flame and the resulting water can extinguish the flame.
- Hoses: Can produce pools and streams of water that will put the flame out.
- Sprinklers: Produces a moving stream of water that the player should avoid.
- Pools: This will extinguish the flame immediately upon collision, these will vary in size.
- Fire Hydrants: Will produce a jet of water for a long period of time if the hydrant is destroyed.

Prolonged contact with these can snuff out the flame and slow down the ball's movement. Tilting the world can shift the ball out of these traps. These traps are ranked by the rate they impede the ball's movement starting from low - high.

Dirt, sand, mud, slime, quicksand

These obstacles can fuel or extinguish the ball's flame, a logo distinguish these obstacles from destructible objects. Extinguishing effects will be marked by a countdown

- Fire Extinguishers: Fire extinguishers can put the flame out momentarily dependant on its size in relation to the ball.
- Liquid Nitrogen: Will immediately extinguish the ball upon contact.
- Oxygen Tanks: Contact with these will enable the player to have a prolonged flare up for a set amount of time.
- Bicarbonate Soda: This can extinguish the ball upon prolonged contact with the contents of its container.
- Flour: Sacks of flour become explosive upon contact with the ball and can obscure some of the surrounding area from the player's view.

Physical obstacles can be used to negotiate the ball around other obstacles or to travel further across the world. Unlike other objects, these are inflammable.
- See saw: These react to the ball's position along the see saw's beam and can be used to reach higher ground or as a destructive tool.
- Conveyor Belt: These can be used to transport the ball over unsafe obstacles, reach higher locations or holds destructible objects. Conveyor belts can go in any direction.
- Cannons: This can be used to shoot the ball across the map, the distance and angle of trajectory is random and cannot be controlled by the player. The ball can set off loaded cannons to destroy nearby buildings.
- Catapults: These will fire the ball over a set distance in a straight line.
- Weights: These can extinguish the ball's flames or be used to crush nearby objects and buildings.
- Lifts: Will move any object up or down.

World Construction
The environments of Hot Potato could be manually constructed or via procedural generation. Both methods would provide sufficient game play for the needs of this project however these methods will have an effect on production.

Manual Construction
This method is more time consuming as the design of the level is integral to providing the player with challenging and enjoyable gameplay. The level would be a closed "arena" which has the potential for the player to encounter every object and obstacle possible. To prevent a premature end game, objects would respawn over time allowing the player to continually destroy objects.

- Can customise sections of environment for more interesting player experiences
- Opportunities to create varied experience for player
- Gameplay can be varied based on size of level and types of environments
- Level design and construction will be a time consuming part of production
- Challenging and enjoyable gameplay dependant on level design

Procedural Generation
An environment created from this method could be a continuous level which would force the player to keep moving the ball in search for more destructible objects. Procedural generation would provide endless gameplay but it does limit the gameplay to "mindless" destruction and avoidance of obstacles.

- Level construction done through code
- Continuous game mode suits gameplay
- May be difficult to implement
- Object and obstacle placement dependant on code, random results may occur


Game Control
- Tilt using keyboard
- Roll Ball

- World Bounds

World Construction
- Procedural generation of objects

- Ball movement

- Collisions
-Identify type of object
- Increase/ Decrease flame
- Score increase

- Move ball

- No of explosions
- Add bonus
- Flare up

- Flame
- Decrease over time
- Reach 0, end game
- Temperature (HP)
- Colour
- Flare up

World Objects
- Collision detection

Destructible Objects
- Collision detection
- Destruction of object
- Replace with destroyed instance if necessary
- Explosion generation
- Movement
- Action/Animate

- Collision detection
- Action (what to do when ball collides with it)


- No mention of particle systems (Argh, an oversight that must be corrected)

- Scope is fairly large
I may need to reconsider cutting out a lot of the obstacles and fleshies. Fleshies will probably need to be scaled down to something that can be textured differently and zombies and animals will get cut out.

- Control system needs refinement
I need to clarify how the player will play the game and it will be difficult to plan until prototyping demonstrates what will work.

- World Plane
This and the control system will be discussed in a later post. It hadn't occured to me until a good friend pointed it out.

- Collisions
I have yet to consider how the code will identify what sort of explosion/action to take when the ball hits an object. Need to learn some physics, Newton strike me down now! I need to define if the physics in the game will be realistic or cartoony surrealism. Take the case of liquid nitrogen and fire, you'd want the ball to ice up but it won't. Instead the liquid nitrogen will extinguish the ball by reducing the amount of oxygen present. It is explained here in this long video.

- Art style
Where the hell is it? Instant fail.

Friday, February 4, 2011

Link Dump: Indie Dev

Sure, it's the cool and happening thing to be completely original but sometimes you need to find a Master Yoda/Darth Vader/5-second idol to guide you on your way.

Here's a collection of sorts to check out. (I'll update this when I find more golden nuggets of information)

Job Security through Code Obscurity by Tony Albrecht (He's got a lot to say on programming, it's for the hard core coders out there)

Working From Home As An Indie by Alister Doulin (Who has some good all-rounder posts you may want to direct the very young and uneducated bright-eyed kids out there)

#AltDevBlogADay by A group of very cool Game Developers (who take time to post up anything and everything you may want/need/like to know about game development and then some. Much scrolling of mouse button will occur and it's likely you won't agree with the articles but there's space for you to comment.)

Here's some to get you started:
The importance of controls by Adam Kidd
Lessons from a Failed Project by Justin Liew
The Difference between non-interactive and interactive entertainment by Georg Backer

Fear: An Appropriate Response to the Business of Next Generation Game Development by Jason Rubin (Stuff you might want to be think about but will probably scare the pants off some folks. Yes, it is a little old but so what?)

Michael Jungbluth writes a 12 part series on the 12 Principles of Animation and how it will add appeal to game design.

Design As Questions, Development As Answers with Clinton Keith

The Game Prodigy (An online resource on game design)
- D Boy’s Ron Carmel’s Keys for Playtesting (World of Goo)
- Tackling Hard (really hard) Design Problems with yon host, Brice Morrison

Wednesday, February 2, 2011

Hot Potato v.0.8

This post is just a record of a version of Hot Potato that was going to happen during the break but didn't eventuate. I rewrote the previous doc to suit the proposed two-person project.

This Hot Potato became a lot simpler and (probably) less fun. It was an exercise in getting something done. Yes, I'm aware this design has problems and I don't care much to fix them since this version is no longer happening.

Hot Potato

Destructive Platformer

Standalone application

Unity 3

Keep the ball (Hot Potato) airborne for as long as possible.

Project Aim
To produce a demo level of the game to showcase how the game's system works.

The player keeps the ball airborne by tilting the world and guiding the ball to collide with objects. Collisions and the resultant explosions aid with the ball's upward propulsion. The ball is propelled when it collides with objects but will gain an additional boost when it explodes objects.

The player can only control the world by tilting it left or right, this could be done by keyboard or via on screen buttons. The player will need to calculate the world and ball's positions to optimise their play.

The ball's movement is affected by its temperature and the angle of the world. The gravity affecting the ball will shift accordingly to the angle of the world, objects will not move with these forces unless under certain conditions.

Destroying and exploding objects will fuel the flame which aids in the destruction of objects and prevents the game from ending prematurely. The size and temperature of the flame will affect how the ball moves and how destructive it can be.

Points are rewarded for the number of destroyed objects and explosions. Additional points can be earned by chaining destruction and explosions and the duration of play.
The game ends when the ball is "dropped" or when its temperature reaches 0. The ball can be dropped if the player is unable to keep it airborne and it drops off screen.

The world tilt can be controlled via the keyboard, the amount of tilt is dependent on the duration of the key press.

The GUI for this demonstration level could be the score, additions could be a timer and a directional arrow that indicated the ball's upwards direction.

Level Construction
The demo level could be built in 2 ways, manual placement or procedural placement (script). Both methods would provide sufficient game play for the needs of this project however these methods will have an effect on production.

Manual Placement
This method requires a detailed level design that provides enjoyable and challenging gameplay. It will also be the more time consuming building method.

Procedural Placement
The scripting and debugging involved with this method has the potential to be fairly time consuming however it would provide less work when it came to building.

Ball's Properties
Temperature: Degrades over time and affects the majority of the ball's properties. A high temperature ball has less weight and more mobility than a low temperature ball. The temperature can also affect how destructive and explosive the ball is. It is indicated by colour.

Flame: Degrades over time and if it is extinguished, the level will end. The flame's size indicates the destruction radius of the ball.

Weight: Affects the ball's movement as it travels and how far it can be propelled by explosions. Also affects ball's bounce and how much force it applies to an object.

Explosive Power: Determines how much power to multiply collision based explosions.

The ball can destroy objects by either crushing, burning or exploding them. Destroying objects will add fuel to the flame while shrapnel can fly and damage other objects. Points are rewarded for how many objects are destroyed and additional points can be rewarded if explosions occur during the destruction.

Explosions occur when the ball collides with explosive objects or randomly during destruction chains. Explosions will fuel the ball's flame for longer and can create or multiply a destruction chain by burning or smashing other objects.

Depending on the size of the explosion, the ball can be propelled in certain directions. This can be advantageous to the player as they can use it to navigate around the level or reach more objects.

Dropping the Ball
The ball is dropped when its temperature reaches 0 or when it falls off screen. There are options for the player to be alerted visually or audibly when they are in danger of dropping the ball. Possible indicators could include a timer, this would allow the player time to salvage the situation.

Art Assets
The art in the game could be realistic or cartoony, this would be dependent on the realism of the physics involved. Realistic reactions would be more engaging if the art assets matched whereas exaggerated explosions would benefit from a less realistic style.

Objects could also be identified by colour, this would make it easier for the player to identify the most explosive objects but also it will save time in asset production as assets could be reused.

The physics system is integral to the production of this game as the gameplay is dependent on how the ball will interact with the world. Below is a possible breakdown of the scripts needed for this demo.

Game Control
- Tilt using keyboard

World Bounds
- Collision detection (Detection of when the ball drops off screen)
- Movement with ball (Needs to shift in relation to ball)

- Collisions

- Temperature
- Movement
- Flame control (Has an effect on flame's destructive ability)
- Weight
- Game Over (If temperature reaches 0, game will end)

- Flame
- Size
- Destruction (Is affected by temperature)
- Radius
- Power

- Collision detection
- Destruction of object
- Explosion chance

- Placement

Menu Layout
Main Menu

- Small project scope = less fun gameplay/world
The prototype doesn't really indicate if this is a casual game experience where you can just play and always cause an explosion or a frantic twitch game where you're trying to explode stuff by making instant calculations.
- Objects undefined
No object list
- Lack of GUI
A directional arrow would help the player to know which way the ball was travelling and which direction is "up".
- Physics strange and potentially unrealistic
Changing weight of the ball could be problematic and doesn't make sense if the prototype uses realistic physics.
- Unclear level structure and goals
If the goal of the game is to keep airborne, the level construction/design and gameplay should reflect this. Therefore does the player keep moving in an endless environment or avoid hitting walls in a defined space?
- World Bound detection is unclear
How will the game and player know that they have "died"? Will the camera follow the player down the "pit"? Visible boundaries would be helpful.
- Art style is still undefined
This prototype has yet to mention if the game is in 2D or 3D however the use of Unity does imply 3D art.