Game feel consulting based on Steve Swink's "Game Feel: A Game Designer's Guide to Virtual Sensation" (Morgan Kaufmann, 2009). Use when helping with control responsiveness, input mapping, physics tuning, avatar movement, jump mechanics, polish effects, or analyzing why controls feel "floaty", "tight", "responsive", or "sluggish". Covers the psychology of real-time control, metrics for measuring feel, and practical tuning guidance. NOT for general game design - focused specifically on the tactile sensation of controlling virtual objects.
A framework for understanding, measuring, and creating satisfying game controls based on Steve Swink's comprehensive analysis.
Game feel is the tactile, kinesthetic sense of manipulating a virtual object. It's the sensation of control—that visceral feeling of steering, jumping, and interacting that exists somewhere between player and game.
"Game feel is an invisible art. If a designer's done their job correctly, the player will never notice it. It will just seem right."
Game feel requires all three elements working together:
| Element | Definition | Without It |
|---|---|---|
| Real-Time Control | Continuous, immediate response to input | Feels like giving orders, not controlling |
| Simulated Space |
| Collision and physics in a virtual world |
| No sense of physical interaction |
| Polish | Effects that emphasize interactions | Flat, lifeless, unconvincing |
Players perceive, think, and act in ~240ms cycles:
| Threshold | Value | Effect |
|---|---|---|
| Motion illusion | 10+ fps | Below this, no sense of movement |
| Smooth motion | 30+ fps | Movement feels fluid |
| Instantaneous response | <50ms | Feels like direct control |
| Noticeable lag | 100-200ms | Sluggish but usable |
| Broken control | >240ms | Player notices delay, feel breaks down |
"At 50ms response, the game feels like an extension of your body. Above 100ms, you notice lag. Above 240ms, real-time control is broken."
See: references/perception-thresholds.md
The physical device and signals it sends.
Measure: Sensitivity, states, signal types (Boolean vs continuous), physical ergonomics
How input maps to game state changes.
Measure: Direct vs indirect mapping, simulation complexity, ADSR envelopes
The spatial environment providing meaning to motion.
Measure: Object spacing relative to avatar speed, collision density, level layout
Effects that emphasize and sell interactions.
Measure: Particles, screen shake, animation sync, sound design
What the game represents and expectations it creates.
Measure: Realism vs abstraction, player expectations, genre conventions
Game rules that affect moment-to-moment feel.
Measure: Health systems, risk/reward, state changes, ability unlocks
See: references/six-metrics.md
Borrowed from audio synthesis, describes how response changes over time:
Sustain ___________
/ \
/ Attack Decay \ Release
/ \
_/ \_____
| Phase | Description | Example (Mario Jump) |
|---|---|---|
| Attack | Time to reach full response | Jump force ramps up as button held |
| Decay | Settling to sustained level | Initial burst settles |
| Sustain | Maintained level while input held | Maximum jump height maintained |
| Release | Falloff after input stops | Gravity takes over on release |
Key insight: Most "floaty" vs "tight" feelings come from Attack and Release times.
See: references/adsr-tuning.md
| Term | Meaning | Typical Cause |
|---|---|---|
| Tight | Precise, immediate response | Short attack, high acceleration, low release |
| Floaty | Loose, delayed, drifty | Long attack/release, high inertia |
| Responsive | Does what you want immediately | <100ms response, direct mapping |
| Sluggish | Delayed, heavy feeling | >150ms response, long attack |
| Slippery | Hard to stop precisely | Low friction, long release |
| Sticky | Hard to start moving | High friction, long attack |
| Weighty | Sense of mass and momentum | Acceleration curves, gravity strength |
| Snappy | Quick state transitions | Short attack AND release |
| Level | What Changes | Feel |
|---|---|---|
| Set Position | Teleport directly | Stiff, robotic (Donkey Kong) |
| Set Velocity | Change speed directly | Responsive but unnatural |
| Apply Force | Add acceleration | Fluid, physical (Mario, Asteroids) |
Separate thrust from rotation for expressive space-feel:
Separate horizontal and vertical systems:
See: references/simulation-recipes.md
The most-analyzed jump in game history:
Walk acceleration → Walk max speed
Run acceleration → Run max speed (B held)
Air acceleration (reduced)
Deceleration (same for walk/run)
Initial jump force (instant, large)
Gravity (constant, moderate)
Jump button hold → extends upward force (with max time)
Early release → force artificially set to low value
Apex detection → gravity triples for descent
Terminal velocity cap
When player releases jump early:
See: references/mario-mechanics.md
Light / Medium / Hard impacts each get:
Multiple mechanics should feel bound by the same physics:
See: references/polish-effects.md
Objects should be spaced so the intended move just barely works:
Use physics to guide, not walls to block:
"Players don't feel the direct intervention of the designer. The limit feels like a logical consequence rather than an overt constraint."
See: references/spatial-context.md
| Symptom | Likely Cause | Fix |
|---|---|---|
| "Floaty" | Long attack/release times | Shorten acceleration curves |
| "Sluggish" | High response lag | Reduce input-to-display latency |
| "Slippery" | Low deceleration | Increase friction/deceleration |
| "Stiff" | No acceleration curve | Add attack phase to movement |
| "Unresponsive" | Input not registering | Check input polling rate |
| "Unpredictable" | Variable trajectories | Use fixed special-move arcs |
| "Weightless" | Weak gravity | Increase fall gravity especially |
See: references/classic-profiles.md