@jarrodmedrano/claude-skills 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/game-design-theory/SKILL.md +102 -0
- package/.claude/skills/game-design-theory/design-principles.md +308 -0
- package/.claude/skills/game-design-theory/gameplay-elements.md +213 -0
- package/.claude/skills/game-design-theory/player-psychology.md +175 -0
- package/.claude/skills/game-design-theory/playtesting.md +321 -0
- package/.claude/skills/game-design-theory/storytelling.md +219 -0
- package/.claude/skills/game-feel/SKILL.md +305 -0
- package/.claude/skills/game-feel/references/adsr-tuning.md +271 -0
- package/.claude/skills/game-feel/references/classic-profiles.md +279 -0
- package/.claude/skills/game-feel/references/perception-thresholds.md +160 -0
- package/.claude/skills/game-feel/references/polish-effects.md +246 -0
- package/.claude/skills/game-feel/references/simulation-recipes.md +306 -0
- package/.claude/skills/game-feel/references/six-metrics.md +239 -0
- package/.claude/skills/level-design/SKILL.md +249 -0
- package/.claude/skills/level-design/anticipatory-play.md +223 -0
- package/.claude/skills/level-design/hiding-linearity.md +181 -0
- package/.claude/skills/level-design/indie-practices.md +286 -0
- package/.claude/skills/level-design/open-world-planning.md +294 -0
- package/.claude/skills/level-design/play-personas.md +240 -0
- package/.claude/skills/level-design/procedural-handmade.md +271 -0
- package/.claude/skills/level-design/themed-environments.md +264 -0
- package/package.json +3 -1
- package/scripts/install.js +16 -1
- package/templates/github-actions/README.md +36 -0
- /package/.claude/{commands/design-review → agents}/design-review-agent.md +0 -0
- /package/.claude/{commands/code-review → agents}/pragmatic-code-review-subagent.md +0 -0
- /package/{.claude/commands/code-review → templates/github-actions}/claude-code-review-custom.yml +0 -0
- /package/{.claude/commands/code-review → templates/github-actions}/claude-code-review.yml +0 -0
- /package/{.claude/commands/security-review → templates/github-actions}/security.yml +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Storytelling in Games
|
|
2
|
+
|
|
3
|
+
Stories can make games stronger, but only when employed properly.
|
|
4
|
+
|
|
5
|
+
## The Core Tension
|
|
6
|
+
|
|
7
|
+
> "The danger for designers is that they get hooked into their story, and they forget that storytelling is a linear narrative-type thing. And the more you flesh out the story the more you remove the interactivity, and the more you remove the player from the game. It's kinda like 'Oh, the outcome has already been determined. So what's the point?'" — Eugene Jarvis
|
|
8
|
+
|
|
9
|
+
## Designer's Story vs. Player's Story
|
|
10
|
+
|
|
11
|
+
### Designer's Story
|
|
12
|
+
Predetermined dramatic events, like a novel or film:
|
|
13
|
+
- Static and unchanging regardless of player actions
|
|
14
|
+
- Conveyed between gameplay sections (cut-scenes, briefings)
|
|
15
|
+
- Limited branching, each branch pre-authored
|
|
16
|
+
- Only endings: success or failure
|
|
17
|
+
|
|
18
|
+
### Player's Story
|
|
19
|
+
Unique narrative generated by how each player plays:
|
|
20
|
+
- Different every playthrough
|
|
21
|
+
- Shaped by player decisions and tactics
|
|
22
|
+
- The story players are most invested in
|
|
23
|
+
- Often more personally meaningful than designer's story
|
|
24
|
+
|
|
25
|
+
**Example (Command & Conquer)**: The player remembers how they lost their initial forces to Flamethrower Infantry, found Tiberium, built tanks, and finally crushed the enemy. This player's story matters more to them than the FMV cut-scene that follows.
|
|
26
|
+
|
|
27
|
+
### The Ideal
|
|
28
|
+
|
|
29
|
+
Merge designer's story and player's story:
|
|
30
|
+
- Player impacts story while story retains dramatic qualities
|
|
31
|
+
- Designer anticipates player questions and actions
|
|
32
|
+
- Multiple play styles accommodated
|
|
33
|
+
- Player feels authorship over a well-crafted narrative
|
|
34
|
+
|
|
35
|
+
**Analogy 1 - Parent telling child a story**:
|
|
36
|
+
- Parent has story in mind (characters, surprises, rough direction)
|
|
37
|
+
- Child asks questions: "What color was the newt?"
|
|
38
|
+
- Parent adapts: "A strange shade of yellow, like royal mustard..."
|
|
39
|
+
- Story develops through collaboration
|
|
40
|
+
|
|
41
|
+
**Analogy 2 - Dungeon Master**:
|
|
42
|
+
- DM plans locations, NPCs, conflicts
|
|
43
|
+
- Players control actions and conversations
|
|
44
|
+
- DM responds dynamically, never saying "The NPC doesn't understand"
|
|
45
|
+
- Story emerges from interaction
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Places for Storytelling
|
|
50
|
+
|
|
51
|
+
### Out-of-Game
|
|
52
|
+
Storytelling when player isn't playing:
|
|
53
|
+
- Cut-scenes (player loses character control)
|
|
54
|
+
- Mission briefings between levels
|
|
55
|
+
- Opening/ending cinematics
|
|
56
|
+
|
|
57
|
+
**Advantages**: Uses established cinematic techniques; easier to execute than in-game storytelling.
|
|
58
|
+
|
|
59
|
+
**Disadvantages**: Disrupts interactivity; if gameplay is good, players want to return to it.
|
|
60
|
+
|
|
61
|
+
### In-Game
|
|
62
|
+
Storytelling during gameplay:
|
|
63
|
+
- Level settings and environment
|
|
64
|
+
- NPC behaviors and dialogue
|
|
65
|
+
- Interactive conversations
|
|
66
|
+
- Signs, notes, graffiti
|
|
67
|
+
- Radio/PA announcements
|
|
68
|
+
- Player-controlled terminals
|
|
69
|
+
|
|
70
|
+
**Advantages**: Maintains immersion; player feels like participant, not observer.
|
|
71
|
+
|
|
72
|
+
**Disadvantages**: Player might miss story elements; requires more design work.
|
|
73
|
+
|
|
74
|
+
### External Materials
|
|
75
|
+
Storytelling outside the computer:
|
|
76
|
+
- Manual backstory
|
|
77
|
+
- Physical maps or props
|
|
78
|
+
- Collectible items in packaging
|
|
79
|
+
|
|
80
|
+
Mostly historical now (space constraints of early games). Generally frowned upon today—story should be in the game itself.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Problems with Out-of-Game Storytelling
|
|
85
|
+
|
|
86
|
+
### The Visual Disconnect
|
|
87
|
+
Early FMV cut-scenes looked nothing like gameplay:
|
|
88
|
+
- Live actors in video vs. simple sprites in-game
|
|
89
|
+
- High-polygon pre-rendered 3D vs. real-time graphics
|
|
90
|
+
- Breaks suspension of disbelief
|
|
91
|
+
|
|
92
|
+
**Solution**: Use the game engine for cut-scenes (like Zelda: Ocarina of Time, Drakan). Less "pretty," but seamlessly immersive.
|
|
93
|
+
|
|
94
|
+
### The Interactivity Gap
|
|
95
|
+
Movies don't stop for you to read a book. Why do games stop for you to watch a movie?
|
|
96
|
+
|
|
97
|
+
Games mix media unnaturally—forcing players to read, watch, then finally play.
|
|
98
|
+
|
|
99
|
+
### Non-Skippable Cut-Scenes
|
|
100
|
+
**Unforgivable**: Forcing players to watch cut-scenes.
|
|
101
|
+
|
|
102
|
+
**Better**: Let players skip entirely.
|
|
103
|
+
|
|
104
|
+
**Best**: Let players control playback—pause, rewind, fast-forward. They're a single-person audience, not a theater crowd.
|
|
105
|
+
|
|
106
|
+
**The Last Express innovation**: Players could turn back game-time like rewinding a clock, rewatching any story moment.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## In-Game Storytelling Techniques
|
|
111
|
+
|
|
112
|
+
### Text in the World
|
|
113
|
+
- Signs with directions
|
|
114
|
+
- Notes left by previous inhabitants
|
|
115
|
+
- Graffiti on walls
|
|
116
|
+
- Books lying around
|
|
117
|
+
|
|
118
|
+
### Level Settings
|
|
119
|
+
Environment tells story without words:
|
|
120
|
+
- Destroyed villages show conflict history
|
|
121
|
+
- Opulent mansions show wealth
|
|
122
|
+
- Abandoned equipment shows what happened here
|
|
123
|
+
|
|
124
|
+
Don't tell players the land is run-down—show them the run-down land.
|
|
125
|
+
|
|
126
|
+
### NPC Dialogue
|
|
127
|
+
Can be interactive (multiple choice, typed response) or ambient (NPCs talking during gameplay).
|
|
128
|
+
|
|
129
|
+
**Half-Life success**: Scientists chatting, PA announcements, never taking control from player.
|
|
130
|
+
|
|
131
|
+
### NPC Behaviors
|
|
132
|
+
Actions speak louder than words:
|
|
133
|
+
- Two enemy races should fight each other if they meet
|
|
134
|
+
- Peaceful villagers flee if player draws weapons
|
|
135
|
+
- Hostile towns draw weapons when threatened
|
|
136
|
+
|
|
137
|
+
**Scripted behaviors for atmosphere**:
|
|
138
|
+
- Townsperson receiving unjust beating from police → shows oppression
|
|
139
|
+
- Market bustle → shows prosperity
|
|
140
|
+
- Furtive whispers → shows fear
|
|
141
|
+
|
|
142
|
+
### The Marathon Approach
|
|
143
|
+
Computer terminals scattered through levels:
|
|
144
|
+
- Walk up and press "action"
|
|
145
|
+
- Read text screens (player-controlled, can flip back and forth)
|
|
146
|
+
- World still active while reading—can be attacked!
|
|
147
|
+
- Maintains tension while delivering story
|
|
148
|
+
|
|
149
|
+
### Damage Incorporated Approach
|
|
150
|
+
Interactive mission briefings:
|
|
151
|
+
- Arrow keys flip between documents
|
|
152
|
+
- Spoken dialog supplements written material
|
|
153
|
+
- Tape deck controls: pause, rewind, fast-forward
|
|
154
|
+
- Players read and listen at their own pace
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## "Show, Don't Tell"
|
|
159
|
+
|
|
160
|
+
Just like good creative writing:
|
|
161
|
+
- In-game storytelling = showing
|
|
162
|
+
- Cut-scenes = telling
|
|
163
|
+
|
|
164
|
+
When players experience story themselves rather than being told second-hand, immersion increases dramatically.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## The Missing Story Problem
|
|
169
|
+
|
|
170
|
+
What if players miss story elements in in-game storytelling?
|
|
171
|
+
|
|
172
|
+
**Designer response**: "I need cut-scenes to guarantee players see everything!"
|
|
173
|
+
|
|
174
|
+
**Better perspective**:
|
|
175
|
+
- If players skip story, that's their choice—games are interactive
|
|
176
|
+
- Discovering story on replay adds value
|
|
177
|
+
- Different "layers" of story for different play styles
|
|
178
|
+
|
|
179
|
+
The player who charges through gets action; the explorer gets lore.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Frustrated Linear Writers
|
|
184
|
+
|
|
185
|
+
### The Hollywood Envy Problem
|
|
186
|
+
Some game writers wish they were screenwriters:
|
|
187
|
+
- Apply linear techniques to interactive medium
|
|
188
|
+
- Emphasize "cinematic" nature
|
|
189
|
+
- Create "interactive movies"
|
|
190
|
+
- Cut-scenes grow longer and longer
|
|
191
|
+
- Predetermined story dominates gameplay
|
|
192
|
+
|
|
193
|
+
### The Medium's Youth
|
|
194
|
+
Early films were documented stage plays—camera on tripod, no cuts, no movement. Filmmakers hadn't discovered their medium's unique voice.
|
|
195
|
+
|
|
196
|
+
Games are similarly young. We're still learning what games do best that other media can't.
|
|
197
|
+
|
|
198
|
+
**Key insight**: Don't try to make games into movies. Discover what games alone can achieve.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Story Integration Checklist
|
|
203
|
+
|
|
204
|
+
For each story element, ask:
|
|
205
|
+
|
|
206
|
+
1. **Does it need to interrupt gameplay?** If not, deliver in-game.
|
|
207
|
+
2. **Can the player control the pacing?** Pause, rewind, skip?
|
|
208
|
+
3. **Does it use the same visual style as gameplay?** Maintains immersion.
|
|
209
|
+
4. **Could this be shown through environment/behavior instead of told through dialogue/text?**
|
|
210
|
+
5. **What if the player misses this?** Is that acceptable? Is there redundancy?
|
|
211
|
+
6. **Does this serve player agency or override it?**
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## The Dream
|
|
216
|
+
|
|
217
|
+
> Imagine all the power of a story in a novel... Now imagine how much more powerful that would be if, instead of reading about the actions of other characters, the reader was the main character and was able to make choices that would affect the shape, direction, and outcome of the story.
|
|
218
|
+
|
|
219
|
+
This dream—truly interactive stories that rival the emotional impact of the best literature—is still distant. But it provides a compelling reason to keep experimenting.
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-feel
|
|
3
|
+
description: >
|
|
4
|
+
Game feel consulting based on Steve Swink's "Game Feel: A Game Designer's
|
|
5
|
+
Guide to Virtual Sensation" (Morgan Kaufmann, 2009). Use when helping with
|
|
6
|
+
control responsiveness, input mapping, physics tuning, avatar movement,
|
|
7
|
+
jump mechanics, polish effects, or analyzing why controls feel "floaty",
|
|
8
|
+
"tight", "responsive", or "sluggish". Covers the psychology of real-time
|
|
9
|
+
control, metrics for measuring feel, and practical tuning guidance.
|
|
10
|
+
NOT for general game design - focused specifically on the tactile sensation
|
|
11
|
+
of controlling virtual objects.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Game Feel Skill
|
|
15
|
+
|
|
16
|
+
A framework for understanding, measuring, and creating satisfying game controls based on Steve Swink's comprehensive analysis.
|
|
17
|
+
|
|
18
|
+
## Core Definition
|
|
19
|
+
|
|
20
|
+
**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.
|
|
21
|
+
|
|
22
|
+
> "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."
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## The Three Building Blocks
|
|
27
|
+
|
|
28
|
+
Game feel requires all three elements working together:
|
|
29
|
+
|
|
30
|
+
| Element | Definition | Without It |
|
|
31
|
+
|---------|------------|------------|
|
|
32
|
+
| **Real-Time Control** | Continuous, immediate response to input | Feels like giving orders, not controlling |
|
|
33
|
+
| **Simulated Space** | Collision and physics in a virtual world | No sense of physical interaction |
|
|
34
|
+
| **Polish** | Effects that emphasize interactions | Flat, lifeless, unconvincing |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Human Perception Thresholds
|
|
39
|
+
|
|
40
|
+
### The Correction Cycle
|
|
41
|
+
Players perceive, think, and act in ~240ms cycles:
|
|
42
|
+
- Perceptual processor: ~100ms
|
|
43
|
+
- Cognitive processor: ~70ms
|
|
44
|
+
- Motor processor: ~70ms
|
|
45
|
+
|
|
46
|
+
### Critical Thresholds
|
|
47
|
+
|
|
48
|
+
| Threshold | Value | Effect |
|
|
49
|
+
|-----------|-------|--------|
|
|
50
|
+
| **Motion illusion** | 10+ fps | Below this, no sense of movement |
|
|
51
|
+
| **Smooth motion** | 30+ fps | Movement feels fluid |
|
|
52
|
+
| **Instantaneous response** | <50ms | Feels like direct control |
|
|
53
|
+
| **Noticeable lag** | 100-200ms | Sluggish but usable |
|
|
54
|
+
| **Broken control** | >240ms | Player notices delay, feel breaks down |
|
|
55
|
+
|
|
56
|
+
> "At 50ms response, the game feels like an extension of your body. Above 100ms, you notice lag. Above 240ms, real-time control is broken."
|
|
57
|
+
|
|
58
|
+
**See**: `references/perception-thresholds.md`
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## The Six Metrics of Game Feel
|
|
63
|
+
|
|
64
|
+
### 1. Input
|
|
65
|
+
The physical device and signals it sends.
|
|
66
|
+
|
|
67
|
+
**Measure**: Sensitivity, states, signal types (Boolean vs continuous), physical ergonomics
|
|
68
|
+
|
|
69
|
+
### 2. Response
|
|
70
|
+
How input maps to game state changes.
|
|
71
|
+
|
|
72
|
+
**Measure**: Direct vs indirect mapping, simulation complexity, ADSR envelopes
|
|
73
|
+
|
|
74
|
+
### 3. Context
|
|
75
|
+
The spatial environment providing meaning to motion.
|
|
76
|
+
|
|
77
|
+
**Measure**: Object spacing relative to avatar speed, collision density, level layout
|
|
78
|
+
|
|
79
|
+
### 4. Polish
|
|
80
|
+
Effects that emphasize and sell interactions.
|
|
81
|
+
|
|
82
|
+
**Measure**: Particles, screen shake, animation sync, sound design
|
|
83
|
+
|
|
84
|
+
### 5. Metaphor
|
|
85
|
+
What the game represents and expectations it creates.
|
|
86
|
+
|
|
87
|
+
**Measure**: Realism vs abstraction, player expectations, genre conventions
|
|
88
|
+
|
|
89
|
+
### 6. Rules
|
|
90
|
+
Game rules that affect moment-to-moment feel.
|
|
91
|
+
|
|
92
|
+
**Measure**: Health systems, risk/reward, state changes, ability unlocks
|
|
93
|
+
|
|
94
|
+
**See**: `references/six-metrics.md`
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## The ADSR Envelope for Game Feel
|
|
99
|
+
|
|
100
|
+
Borrowed from audio synthesis, describes how response changes over time:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Sustain ___________
|
|
104
|
+
/ \
|
|
105
|
+
/ Attack Decay \ Release
|
|
106
|
+
/ \
|
|
107
|
+
_/ \_____
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
| Phase | Description | Example (Mario Jump) |
|
|
111
|
+
|-------|-------------|---------------------|
|
|
112
|
+
| **Attack** | Time to reach full response | Jump force ramps up as button held |
|
|
113
|
+
| **Decay** | Settling to sustained level | Initial burst settles |
|
|
114
|
+
| **Sustain** | Maintained level while input held | Maximum jump height maintained |
|
|
115
|
+
| **Release** | Falloff after input stops | Gravity takes over on release |
|
|
116
|
+
|
|
117
|
+
**Key insight**: Most "floaty" vs "tight" feelings come from Attack and Release times.
|
|
118
|
+
|
|
119
|
+
**See**: `references/adsr-tuning.md`
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Common Feel Vocabulary
|
|
124
|
+
|
|
125
|
+
| Term | Meaning | Typical Cause |
|
|
126
|
+
|------|---------|---------------|
|
|
127
|
+
| **Tight** | Precise, immediate response | Short attack, high acceleration, low release |
|
|
128
|
+
| **Floaty** | Loose, delayed, drifty | Long attack/release, high inertia |
|
|
129
|
+
| **Responsive** | Does what you want immediately | <100ms response, direct mapping |
|
|
130
|
+
| **Sluggish** | Delayed, heavy feeling | >150ms response, long attack |
|
|
131
|
+
| **Slippery** | Hard to stop precisely | Low friction, long release |
|
|
132
|
+
| **Sticky** | Hard to start moving | High friction, long attack |
|
|
133
|
+
| **Weighty** | Sense of mass and momentum | Acceleration curves, gravity strength |
|
|
134
|
+
| **Snappy** | Quick state transitions | Short attack AND release |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Simulation Fundamentals
|
|
139
|
+
|
|
140
|
+
### Position vs Velocity vs Acceleration
|
|
141
|
+
|
|
142
|
+
| Level | What Changes | Feel |
|
|
143
|
+
|-------|--------------|------|
|
|
144
|
+
| **Set Position** | Teleport directly | Stiff, robotic (Donkey Kong) |
|
|
145
|
+
| **Set Velocity** | Change speed directly | Responsive but unnatural |
|
|
146
|
+
| **Apply Force** | Add acceleration | Fluid, physical (Mario, Asteroids) |
|
|
147
|
+
|
|
148
|
+
### The Asteroids Principle
|
|
149
|
+
**Separate thrust from rotation** for expressive space-feel:
|
|
150
|
+
- Rotation: Direct, instant (no simulation)
|
|
151
|
+
- Thrust: Adds force in facing direction (simulated)
|
|
152
|
+
- Result: Ship feels on-the-edge-of-control but never actually out of control
|
|
153
|
+
|
|
154
|
+
### The Mario Principle
|
|
155
|
+
**Separate horizontal and vertical systems**:
|
|
156
|
+
- Horizontal: Acceleration, max speed, deceleration, run modifier
|
|
157
|
+
- Vertical: Jump force, gravity, fall gravity (3x normal!), terminal velocity
|
|
158
|
+
- Button hold time affects jump height (with min/max limits)
|
|
159
|
+
|
|
160
|
+
**See**: `references/simulation-recipes.md`
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## The Mario Jump Recipe
|
|
165
|
+
|
|
166
|
+
The most-analyzed jump in game history:
|
|
167
|
+
|
|
168
|
+
### Horizontal Movement
|
|
169
|
+
```
|
|
170
|
+
Walk acceleration → Walk max speed
|
|
171
|
+
Run acceleration → Run max speed (B held)
|
|
172
|
+
Air acceleration (reduced)
|
|
173
|
+
Deceleration (same for walk/run)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Vertical Movement
|
|
177
|
+
```
|
|
178
|
+
Initial jump force (instant, large)
|
|
179
|
+
Gravity (constant, moderate)
|
|
180
|
+
Jump button hold → extends upward force (with max time)
|
|
181
|
+
Early release → force artificially set to low value
|
|
182
|
+
Apex detection → gravity triples for descent
|
|
183
|
+
Terminal velocity cap
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### The "Hack" That Makes It Work
|
|
187
|
+
When player releases jump early:
|
|
188
|
+
1. Check if upward velocity > threshold
|
|
189
|
+
2. If yes, instantly set velocity to preset low value
|
|
190
|
+
3. This creates consistent arc shapes regardless of release timing
|
|
191
|
+
|
|
192
|
+
**See**: `references/mario-mechanics.md`
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Polish That Matters
|
|
197
|
+
|
|
198
|
+
### The Three-Tier Impact System
|
|
199
|
+
Light / Medium / Hard impacts each get:
|
|
200
|
+
- Distinct animation
|
|
201
|
+
- Distinct sound
|
|
202
|
+
- Distinct visual effect (particles, screen shake)
|
|
203
|
+
|
|
204
|
+
### Sound-Motion Harmony
|
|
205
|
+
- Rising pitch = rising motion (Mario's jump sound)
|
|
206
|
+
- Impact sounds match visual scale
|
|
207
|
+
- Footsteps sync with animation frames
|
|
208
|
+
- Material-specific sounds (metal, grass, stone)
|
|
209
|
+
|
|
210
|
+
### Crossover Sensation
|
|
211
|
+
Multiple mechanics should feel bound by the same physics:
|
|
212
|
+
- Swimming feels floaty *because* running feels grounded
|
|
213
|
+
- Flying defies *the same gravity* that affects jumping
|
|
214
|
+
- Contrast creates perceived consistency
|
|
215
|
+
|
|
216
|
+
**See**: `references/polish-effects.md`
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Context: Level Design for Feel
|
|
221
|
+
|
|
222
|
+
### Spatial Relationships Must Match Mechanics
|
|
223
|
+
- Jump heights → platform heights
|
|
224
|
+
- Run speed → corridor widths
|
|
225
|
+
- Stopping distance → gap sizes before hazards
|
|
226
|
+
|
|
227
|
+
### The "Just Right" Principle
|
|
228
|
+
Objects should be spaced so the intended move *just barely* works:
|
|
229
|
+
- Long Jump gaps: exactly Long Jump distance
|
|
230
|
+
- Triple Jump heights: exactly Triple Jump apex
|
|
231
|
+
- Creates sense of mastery when executed
|
|
232
|
+
|
|
233
|
+
### Soft Boundaries
|
|
234
|
+
Use physics to guide, not walls to block:
|
|
235
|
+
- Steep inclines cause sliding (Mario 64)
|
|
236
|
+
- Water slows movement
|
|
237
|
+
- Winds push in intended directions
|
|
238
|
+
|
|
239
|
+
> "Players don't feel the direct intervention of the designer. The limit feels like a logical consequence rather than an overt constraint."
|
|
240
|
+
|
|
241
|
+
**See**: `references/spatial-context.md`
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Debugging Feel Problems
|
|
246
|
+
|
|
247
|
+
| Symptom | Likely Cause | Fix |
|
|
248
|
+
|---------|--------------|-----|
|
|
249
|
+
| "Floaty" | Long attack/release times | Shorten acceleration curves |
|
|
250
|
+
| "Sluggish" | High response lag | Reduce input-to-display latency |
|
|
251
|
+
| "Slippery" | Low deceleration | Increase friction/deceleration |
|
|
252
|
+
| "Stiff" | No acceleration curve | Add attack phase to movement |
|
|
253
|
+
| "Unresponsive" | Input not registering | Check input polling rate |
|
|
254
|
+
| "Unpredictable" | Variable trajectories | Use fixed special-move arcs |
|
|
255
|
+
| "Weightless" | Weak gravity | Increase fall gravity especially |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Principles of Good Game Feel
|
|
260
|
+
|
|
261
|
+
1. **Predictable special moves** — Fixed trajectories for precision maneuvers
|
|
262
|
+
2. **Variable basic moves** — Expressive range for moment-to-moment control
|
|
263
|
+
3. **Consistent abstraction** — Simple physics, but self-consistent
|
|
264
|
+
4. **Exceed metaphor expectations** — Feel more real than graphics suggest
|
|
265
|
+
5. **Polish harmonizes** — Sound, visual, animation tell same story
|
|
266
|
+
6. **Context matches capability** — Level design respects avatar limits
|
|
267
|
+
7. **Response < 100ms** — Maintain instantaneous feel
|
|
268
|
+
8. **Contrast creates variety** — Different mechanics feel different
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Quick Reference: Classic Feel Profiles
|
|
273
|
+
|
|
274
|
+
### Asteroids (Floaty Space)
|
|
275
|
+
- Thrust separate from rotation
|
|
276
|
+
- Very low friction (4+ seconds to stop)
|
|
277
|
+
- Screen wrap containment
|
|
278
|
+
- Rotation: instant, no simulation
|
|
279
|
+
|
|
280
|
+
### Super Mario Bros (Platformer Gold Standard)
|
|
281
|
+
- Separate horizontal/vertical systems
|
|
282
|
+
- Variable jump height (button hold)
|
|
283
|
+
- Triple gravity on descent
|
|
284
|
+
- Run modifier changes acceleration AND max speed
|
|
285
|
+
- Reduced air control
|
|
286
|
+
|
|
287
|
+
### Mario 64 (3D Translation)
|
|
288
|
+
- Camera-relative thumbstick control
|
|
289
|
+
- Incline-based sliding physics
|
|
290
|
+
- Multiple jump types with fixed trajectories
|
|
291
|
+
- Carving turn interpolation
|
|
292
|
+
- Ground pound as precision landing tool
|
|
293
|
+
|
|
294
|
+
**See**: `references/classic-profiles.md`
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Key Mantras
|
|
299
|
+
|
|
300
|
+
- **"The game should feel like an extension of your body."**
|
|
301
|
+
- **"Separate systems, consistent world."** — Independent mechanics, unified physics.
|
|
302
|
+
- **"Exceed the metaphor."** — Feel better than it looks.
|
|
303
|
+
- **"Fixed for precision, variable for expression."** — Special moves vs basic moves.
|
|
304
|
+
- **"Polish is not optional."** — Effects sell the interaction.
|
|
305
|
+
- **"240ms is the wall."** — Response time ceiling for real-time control.
|