|
Consider just how simple the original NES controller was relative to the
expressive feel of Super Mario Brothers. The NES controller was just a
collection of on/off buttons, but Mario had great sensitivity across time,
across combinations of buttons, and across states. Across time, Mario sped up
gradually from rest to his maximum speed, and slowed gradually back down again,
his motion dampened to simulate friction and inertia in a crude way.
In addition,
holding down the jump button longer meant a higher jump, another kind of
sensitivity: across time. Holding down the jump and left directional pad buttons
simultaneously resulted in a jump that flowed to the left, providing greater
sensitivity by allowing combinations of buttons to have different meanings from
the pressing of those buttons individually. Finally, Mario had different states.
That is, pressing left while “on the ground” has a different meaning than
pressing left while “in the air.” These are contrived distinctions which are
designed into the game but which lend greater sensitivity to the system as a
whole so long as the player can correctly interpret when the state switch has
occurred and respond accordingly.
The result of all these kinds of nuanced reactions to input was a highly
fluid motion, especially as compared to a game such as Donkey Kong, in which
there was no such sensitivity:
This comparison, between Super Mario Brothers and Donkey Kong, shows very
clearly just how much more expressive and fluid Mario’s controls are. The
interesting thing to note is that Donkey Kong used a joystick, a much more
sensitive input than the NES controller. No matter how simple the input, the
reaction from a system can always be highly sensitive. No matter how sensitive
the input, the reaction from a system can always be reduced or muted. Of course,
there isn’t some magic formula for the right amount of sensitivity in the
system.
Look for happy accidents, though. Do you surprise yourself with what you
can express or accomplish with your controls? Does the act of playing create
something aesthetically pleasing? Do you find yourself wasting time noodling
around instead of continuing to tweak and tune? Does it feel like you’re
building a meaningful skill? If the answer to these questions is yes, it’s time
to give this motion some spatial meaning.
3. Context
Returning to Mario 64, imagine Mario standing in a field of blank whiteness,
with no objects around him. With nothing but a field of blankness, does it
matter that Mario can do a long jump, a triple jump, or a wall kick? Context is
the soil of your garden; it’s necessary for the mechanic to grow and bloom.
If Mario has nothing to interact with, the fact that he has these acrobatic
abilities is meaningless. Without a wall, there can be no wall kick. At the most
pragmatic level, the placement of objects in the world is just another set of
variables against which to balance movement speed, jump height, and all the
other parameters that define motion. In game feel terms, constraints define
sensation. If objects are packed in, spaced tightly relative to the avatar’s
motion, the game will feel clumsy and oppressive, causing anxiety and
frustration. As objects get spaced further apart, the feel becomes increasingly
trivialized, making tuning unimportant and numbing thoughtless joy into
thoughtless boredom (most Massively Multiplayer Online games suffer from this
phenomenon to some degree.)
For this reason, it’s a good idea to build some kind
of test environment as you create the system of variables you’ll eventually tune
into good game feel. This is the Magic Garden of game feel: if you can make it
exceedingly pleasurable to interact with the game at this most basic level
you’ve got a superb foundation for enjoyable gameplay.
So you should be putting
in some kind of platforms, enemies, some kind of topology that will give the
motion meaning. If Mario is running along with an endless field of blank
whiteness beneath him, it will be very difficult to judge how high he should be
able jump. So you need to start putting things in there to get a sense of what
it will be like to traverse a populated level. In many cases, the goal is to
find the standard unit from which the game’s levels should be constructed. In a
2d game, this could be the number of tiles high and wide for a good-feeling
standard jump. In a racing game, this could be the width of the road and the
angle of various curves (with an eye for how difficult they are to navigate
successfully.)
My favorite approach is to use a wide array of primitives in various sizes.
Just throw stuff in there; don’t worry too much about the spacing. Tweak the
spacing of the objects relative to the avatar and vice-versa until it all starts
to feel really good, but then just throw in all kinds of objects of various
sizes, types, shapes, and physical properties. Build a playground of interesting
interactions. Put in big archways, round things, fat things, pointy things,
anything you can think of. Get a bunch of shapes in there and study the way the
spatial dynamics are interacting with the feel you’re creating. Plan for happy
accidents and stay loose and open-minded when testing. Take note of crescendos
of enjoyment as you interact with the space and lean into them with tuning and
additional test terrain.
Another thing to consider about adding spatial context is that constraint is
the mother of skill and challenge. Think of a football field: there are these
arbitrary constraints around the sides of the football field that limit it to a
certain size. If those constraints weren’t there, the game of football would
have a very different skill set and would likely be less interesting to watch.
If you could run as far as you want in one direction before bringing it back,
where’s the challenge? The skills of football are defined the constraints that
bound it. If things are going well with a prototype, I find myself creating mini
goals, trying to shoot through gaps or otherwise skillfully traverse the
increasingly fleshed-out spatial topology.
|