Wednesday, April 11, 2007

SpaceCute: Extending the verbs

There is one nearly idiot proof input gesture at the heart of SpaceCute. You drag and release. One would imagine that such limited input leads to limited game play. In fact, when I originally came up with the idea, I was imagining how a simple casual game mechanic might be extended to create an interaction model nearly as complex as something like NetHack.

It should be possible to build a SpaceCute prototype that extends the game mechanics with additional verbs that use the same core gesture. I've provided a few examples to spark the brain.

Elegant controls
In physics there is a concept of 'elegance', which can be loosely paraphrased "What is the simplest model possible that explains the most robust set of phenomena?" The concept of elegance can be applied to games as well. An elegant control mechanism gives the user a rich user experience with the smallest (but no smaller) set of inputs. Go, for example, has a highly elegant interface. Steel Battalion, with its gigantic uber controller, does not.

Elegant control designs often possess the following benefits:
  • They are easier for new users to pick up.
  • They can be ported to a wide variety of different platforms
You can easily extend simple gestures into a highly diverse and expressive set of verbs. Hunty's SpaceUgly is a great example of how adding just a couple more verbs such as 'collect' and 'spawn' beyond move and attack can help create a far richer play field. Kudos to him for making that conceptual leap. He's got designer blood. (Though hopefully in his veins, not a plastic jar in the cupboard)

As a demonstration of this technique, I'm going to list out a plethora of possible verbs that could be derived from our base mechanics.

We started with a rather expressive basic verb that can convey both direction and force. By itself, it is rather boring since there are few opportunities to link it into more complex systems. Here is how some common game specific verbs map onto 'move'
  • Move in a particular direction.
  • Move a short distance
  • Move a long distance
  • Cancel a move (Have a small buffer zone at the beginning of the drag that acts as a 'cancel')
With collision we introduce a simple event that lets us know that we've interacted with another object. Now the computer knows "I've got object A, object B, and a force vector" You can now write any game mechanics that takes those variables as input. This alone opens up much of the world of gameplay. Here's how some common game specific verbs map onto 'collide'
  • Bounce: You can move another token by bouncing into it.
  • Bumper: When you hit this token, it imparts a greater reactive force to your object. Think of this as the bumpers in pinball.
  • Barrier: You can block an area or create a tactical terrain obstacle with an object that just sits in the middle of the screen. With this we've introduced the beginnings of static level design. Planets work like this.
  • Damage an enemy ship: Hurt someone! Not surprisingly, most game designs go here first.
  • Heal a friendly ship: Really, we are just changing a number. You can just as easily heal someone.
  • Steal resources: If you can give, you can also take. Think vampirism.
  • Gain experience points: A unit can earn resource points simply for causing a change to occur to another unit.
  • Combo: Hitting multiple objects in a single move gives some additional reward
  • Transfer an object that is being held to another ship: If object A has a powerup or item, it can hand this off to object B when the two collide.
  • Change the state of either object. For example, one object could become 'mad' which boost hits points and make it move more quickly.
  • Collide with force: Since move implies a force, large velocity collision can cause more damage than soft collision. In fact any change of state that has a continuous key variable can map that variable onto the collision force. What happens if you linked the collision force to the radius of the object? Now you have an object that temporarily blows up like a balloon when hit hard and leaves a trail of mayhem in its path.
A subset of collide is collecting. Instead of bouncing off an object, you pass over an object and perform some action that removes an object from the board.
  • Grab a resource: The stars in Hunty's game are an example of resources. When you pass over a star it is removed from the board and added to your resource counter for use at a later date.
  • Grab a powerup: You can also grab a new ability that is applied to your individual ship
  • Grab a meta-powerup: You could grab a new ability that changes the rules of the board. For example you might collect the 'molasses' powerup that causes the next player's to be bogged down by high friction for a turn or two.
  • Collect a warp token: Once you go meta, you can never go back. It is easy to imagine a series of levels, each with collections of unique powerups, units and resources. In every level there would be a warp token or two that takes you to another level. Now you can create entire SpaceCute universes.
Area blast
Another natural outgrowth of collision are area effects. When a unit comes to a stop, it creates a blast that is wider than itself. This introduces the ability to affect multiple objects in a tactically interesting manner.
  • Collide style interactions: Many of the collision interaction work for area blasts as well. You can imagine group heal, group damage, stealing resources and changing states work quite well.
  • Group push: You can use your physics to push units caught in the blast away.
  • Group pull: You could also pull units caught in the blast inwards. This is a great setup for massive collision combos aka "pack 'em and smack 'em"
So far we've been dealing with simple properties of self contained objects. Adding features to the terrain is also interesting. A vector field pulls an object in a particular direction as it moves over the field.
  • Hills and valleys: A ring of vectors pointing towards its center does a rather convincing simulation of a hill. The reverse creates a valley.
  • Rollercoasters: You can create interesting currents the pull ships from one location to the next.
You can also implement some more advanced simulation in which an object effects another object's position at a distance.
  • Gravity: Objects attract one another. A popular feature though it adds a bit of randomness.
  • Repulsion: Objects repel one another.
  • Fear: When you apply repulsion to individual objects, you can simulate a unit fearfully running away or retreating. By setting a min velocity that triggers the fear behavior, you can enable sneaking tactics.
  • Flocking: With almost every game design I end up asking "How would I turn this into a sheep herding game?" It is a personal quirk and is only peripherally related to flocking. Units that follow a particular unit can add a dash of personality to the game. They can be companions, predators, chattering crowds of worshipful children, etc. Or perhaps even sheep. If that is your thing.
If flocking physics are too complex (or chaotic), you can create remarkably rich level design with stationary sensors that trigger state changes.
  • Word bubbles: Imagine that you have a character on the screen. As your unit zips past, the character pops up a word bubble. An entire RPG-style conversation system could be built with this technique alone.
  • Mines: If you get too close to a mine token, it goes 'boom'. Combine this with an Area effect for hours of pleasure.
Units that spawn new units adds an incredible amount of depth to the game, especially when combined with a resource model. Now the player can build the level as they play.
  • Fighter factory: A base can launch ships.
  • Mine seeder: A ship can leave mine behind as it goes on its merry way.
  • Powerup launcher: You can launch powerups or health bonuses at friendly ships
  • Missle: A missile station launches small missles that explode on impact.
An extension of spawning is the multi-spawn object. This allows you to have a single object that can perform multiple tasks. It can move by dragging on the main body. It can also perform individual actions by dragging on one of the attached nodes.
  • Mother ship: A mother ship might have the ability to launch a missle at attacker or build a new attack ship or fir
  • Self replicating missle station: A missile station might produce very low cost missle out of one bay. Out of another bay, it can launch a new missile station for a much higher resource cost.
Combining game mechanics
All these verbs can be combined to create more complex systems. For example, when you combine 'transfer' is combined with 'collection', you can readily build either a basic inventory system, the ability to purchase items, or of course, capture the flag. Word bubbles + simple combat + warp gates gives us an exploration-based RPG.

The combinatorics are quite dizzying. We've expanded the possibility space beyond the simple core mechanics into a much more complex and interesting realm.

The point
We could go on inventing verbs like this for quite some time. I suspect you can come up with quite a few more that I've missed. :-) Pick a few and prototype them. Be sure to create a complete game mechanic with a verb, system of effects and clear feedback to the player. The best mechanics will give tools to the player that help them manipulate your gamespace in order to reach their higher level goals.

The big lesson in this exercise is that that a simple input gesture in SpaceCute can lead quite naturally to massively deep game play on par with many mainstream genres. You do not need a complex control scheme to build an intricate and involving user experience. So what if some random controller has more buttons. Give a competent designer a simple control scheme and they can build up an entire world of wonderful experiences.

I find that it is easy to build up some rather fascinating toys at this stage of prototyping. If anyone feels to urge to try some of these ideas out, I'll be happy to post whatever your experiments yield.


Related links

Graphics files for prototyping
Includes PNGs and original .design vector files for use in Expression Design

The first crop of SpaceCute prototypes:

The original Spacecute Challenge