@jarrodmedrano/claude-skills 1.0.2 → 1.0.4
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/bevy/SKILL.md +406 -0
- package/.claude/skills/bevy/references/bevy_specific_tips.md +385 -0
- package/.claude/skills/bevy/references/common_pitfalls.md +217 -0
- package/.claude/skills/bevy/references/ecs_patterns.md +277 -0
- package/.claude/skills/bevy/references/project_structure.md +116 -0
- package/.claude/skills/bevy/references/ui_development.md +147 -0
- package/.claude/skills/domain-driven-design/SKILL.md +459 -0
- package/.claude/skills/domain-driven-design/references/ddd_foundations_and_patterns.md +664 -0
- package/.claude/skills/domain-driven-design/references/rich_hickey_principles.md +406 -0
- package/.claude/skills/domain-driven-design/references/visualization_examples.md +790 -0
- package/.claude/skills/domain-driven-design/references/wlaschin_patterns.md +639 -0
- 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/godot/SKILL.md +728 -0
- package/.claude/skills/godot/assets/templates/attribute_template.gd +109 -0
- package/.claude/skills/godot/assets/templates/component_template.gd +76 -0
- package/.claude/skills/godot/assets/templates/interaction_template.gd +108 -0
- package/.claude/skills/godot/assets/templates/item_resource.tres +11 -0
- package/.claude/skills/godot/assets/templates/spell_resource.tres +20 -0
- package/.claude/skills/godot/references/architecture-patterns.md +608 -0
- package/.claude/skills/godot/references/common-pitfalls.md +518 -0
- package/.claude/skills/godot/references/file-formats.md +491 -0
- package/.claude/skills/godot/references/godot4-physics-api.md +302 -0
- package/.claude/skills/godot/scripts/validate_tres.py +145 -0
- package/.claude/skills/godot/scripts/validate_tscn.py +170 -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/.claude/skills/react-three-fiber/SKILL.md +2055 -0
- package/.claude/skills/react-three-fiber/scripts/build-scene.ts +171 -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,239 @@
|
|
|
1
|
+
# The Six Metrics of Game Feel
|
|
2
|
+
|
|
3
|
+
A framework for measuring and comparing how games feel, enabling meaningful analysis across different games.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
| Metric | Question It Answers |
|
|
8
|
+
|--------|---------------------|
|
|
9
|
+
| **Input** | What signals enter the system? |
|
|
10
|
+
| **Response** | How do signals change the game? |
|
|
11
|
+
| **Context** | What space gives meaning to motion? |
|
|
12
|
+
| **Polish** | What effects sell the interactions? |
|
|
13
|
+
| **Metaphor** | What expectations does representation create? |
|
|
14
|
+
| **Rules** | What game rules affect moment-to-moment feel? |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Input Metrics
|
|
19
|
+
|
|
20
|
+
### Physical Device Properties
|
|
21
|
+
- **Ergonomics**: How does it feel to hold?
|
|
22
|
+
- **Button quality**: Springy, mushy, clicky?
|
|
23
|
+
- **Build quality**: Solid, cheap, premium?
|
|
24
|
+
|
|
25
|
+
### Signal Properties
|
|
26
|
+
|
|
27
|
+
| Property | Description | Example |
|
|
28
|
+
|----------|-------------|---------|
|
|
29
|
+
| **States** | How many positions? | 2 (button), 360° (stick) |
|
|
30
|
+
| **Signal type** | Boolean or continuous? | On/off vs 0.0-1.0 |
|
|
31
|
+
| **Sensitivity** | How much variance detected? | Analog stick precision |
|
|
32
|
+
| **Combination** | What can be pressed together? | Chords, simultaneous inputs |
|
|
33
|
+
|
|
34
|
+
### Signal Interpretations
|
|
35
|
+
Raw signals can be interpreted as:
|
|
36
|
+
- **Instant**: Up, Down
|
|
37
|
+
- **Over time**: Pressed, Held, Released
|
|
38
|
+
- **Duration**: How long held
|
|
39
|
+
- **Sequence**: Button combinations over time
|
|
40
|
+
|
|
41
|
+
### Input Space
|
|
42
|
+
The total possible inputs at any moment:
|
|
43
|
+
- NES controller: 8 buttons, simple combinations
|
|
44
|
+
- Modern controller: 15+ inputs, analog sticks, triggers
|
|
45
|
+
- More input space = more potential expressivity
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 2. Response Metrics
|
|
50
|
+
|
|
51
|
+
### Mapping Types
|
|
52
|
+
|
|
53
|
+
| Type | Description | Feel |
|
|
54
|
+
|------|-------------|------|
|
|
55
|
+
| **Direct** | Input directly sets value | Responsive but limited |
|
|
56
|
+
| **Indirect** | Input modifies simulation | Expressive but complex |
|
|
57
|
+
| **State change** | Input switches behavior modes | Enables move variety |
|
|
58
|
+
|
|
59
|
+
### What Gets Modulated
|
|
60
|
+
|
|
61
|
+
Response can change:
|
|
62
|
+
- **Position** (teleport-like, stiff)
|
|
63
|
+
- **Velocity** (speed changes)
|
|
64
|
+
- **Acceleration** (force applied)
|
|
65
|
+
- **Simulation parameters** (gravity, friction)
|
|
66
|
+
- **Character state** (walking→running→jumping)
|
|
67
|
+
|
|
68
|
+
### ADSR Envelope Measurements
|
|
69
|
+
|
|
70
|
+
For any response, measure:
|
|
71
|
+
- **Attack**: Time to reach full response
|
|
72
|
+
- **Decay**: Time to settle to sustained level
|
|
73
|
+
- **Sustain**: Level maintained while input held
|
|
74
|
+
- **Release**: Time to return to neutral after input stops
|
|
75
|
+
|
|
76
|
+
### Expressivity
|
|
77
|
+
How many different outcomes are possible from the same basic action?
|
|
78
|
+
|
|
79
|
+
Low expressivity: Jump always same height
|
|
80
|
+
High expressivity: Jump height varies with button hold time
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 3. Context Metrics
|
|
85
|
+
|
|
86
|
+
### Spatial Relationships
|
|
87
|
+
|
|
88
|
+
| Relationship | Measure |
|
|
89
|
+
|--------------|---------|
|
|
90
|
+
| **Density** | Objects per unit area |
|
|
91
|
+
| **Spacing** | Distance between interaction points |
|
|
92
|
+
| **Scale** | Object size relative to avatar |
|
|
93
|
+
| **Variety** | How much spacing varies |
|
|
94
|
+
|
|
95
|
+
### Context-Mechanic Fit
|
|
96
|
+
|
|
97
|
+
The key question: Does the space match the avatar's capabilities?
|
|
98
|
+
|
|
99
|
+
- Jump height → Platform heights
|
|
100
|
+
- Run speed → Corridor widths
|
|
101
|
+
- Stopping distance → Gap before hazards
|
|
102
|
+
- Turn radius → Corner angles
|
|
103
|
+
|
|
104
|
+
### Collision Properties
|
|
105
|
+
- **Friction**: How much does contact slow movement?
|
|
106
|
+
- **Bounciness**: Do objects rebound?
|
|
107
|
+
- **Passability**: What can be moved through?
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 4. Polish Metrics
|
|
112
|
+
|
|
113
|
+
### Effect Categories
|
|
114
|
+
|
|
115
|
+
| Category | Examples |
|
|
116
|
+
|----------|----------|
|
|
117
|
+
| **Particles** | Dust, sparks, debris |
|
|
118
|
+
| **Screen effects** | Shake, flash, zoom |
|
|
119
|
+
| **Animation** | Squash/stretch, anticipation, follow-through |
|
|
120
|
+
| **Sound** | Impact sounds, ambient, UI feedback |
|
|
121
|
+
| **Haptics** | Controller rumble patterns |
|
|
122
|
+
|
|
123
|
+
### Measuring Polish Quality
|
|
124
|
+
|
|
125
|
+
**Coherence**: Do effects tell the same story?
|
|
126
|
+
- Big hit = big sound + big shake + big particles
|
|
127
|
+
|
|
128
|
+
**Synchronization**: Do effects align with action?
|
|
129
|
+
- Footstep sounds sync with animation frames
|
|
130
|
+
|
|
131
|
+
**Proportionality**: Do effect intensities scale appropriately?
|
|
132
|
+
- Light impact → small effect
|
|
133
|
+
- Heavy impact → large effect
|
|
134
|
+
|
|
135
|
+
### The Three-Tier System
|
|
136
|
+
Many games use light/medium/heavy impact tiers:
|
|
137
|
+
- Each tier has distinct animation, sound, and visual effect
|
|
138
|
+
- Creates clear hierarchy of interaction intensity
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 5. Metaphor Metrics
|
|
143
|
+
|
|
144
|
+
### Representation Scale
|
|
145
|
+
|
|
146
|
+
| Level | Description | Example |
|
|
147
|
+
|-------|-------------|---------|
|
|
148
|
+
| **Abstract** | Shapes, no real-world analog | Geometry Wars |
|
|
149
|
+
| **Iconic** | Recognizable but stylized | Mario |
|
|
150
|
+
| **Representational** | Realistic depiction | Uncharted |
|
|
151
|
+
|
|
152
|
+
### Expectation Setting
|
|
153
|
+
|
|
154
|
+
Metaphor creates expectations about:
|
|
155
|
+
- **Weight**: Heavy things should feel heavy
|
|
156
|
+
- **Speed**: Cars should feel faster than people
|
|
157
|
+
- **Friction**: Ice should be slippery
|
|
158
|
+
- **Damage**: Fire should hurt
|
|
159
|
+
|
|
160
|
+
### Treatment Consistency
|
|
161
|
+
Does the visual style match across elements?
|
|
162
|
+
- Mario: All cartoony = unified expectations
|
|
163
|
+
- Mixing realistic and cartoony = confused expectations
|
|
164
|
+
|
|
165
|
+
### Exceed vs Meet Expectations
|
|
166
|
+
- **Exceed**: Feels better than it looks (good)
|
|
167
|
+
- **Meet**: Feels as expected (neutral)
|
|
168
|
+
- **Fail**: Looks better than it feels (bad)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 6. Rules Metrics
|
|
173
|
+
|
|
174
|
+
### Rules That Affect Feel
|
|
175
|
+
|
|
176
|
+
| Rule Type | Feel Impact |
|
|
177
|
+
|-----------|-------------|
|
|
178
|
+
| **Health/damage** | Risk perception, caution level |
|
|
179
|
+
| **Lives/continues** | Tension, stakes |
|
|
180
|
+
| **Scoring** | Motivation for precision |
|
|
181
|
+
| **Unlocks** | Expanding capability |
|
|
182
|
+
| **Time limits** | Urgency, rushing |
|
|
183
|
+
|
|
184
|
+
### State-Affecting Rules
|
|
185
|
+
|
|
186
|
+
Rules that change available actions:
|
|
187
|
+
- Power-ups granting new moves
|
|
188
|
+
- Damage reducing capabilities
|
|
189
|
+
- Context-sensitive actions
|
|
190
|
+
|
|
191
|
+
### Risk/Reward Rules
|
|
192
|
+
|
|
193
|
+
Rules that create feel through consequence:
|
|
194
|
+
- High-risk maneuvers = high reward
|
|
195
|
+
- Safe play = low reward
|
|
196
|
+
- Creates reason to master difficult techniques
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Using the Metrics
|
|
201
|
+
|
|
202
|
+
### For Analysis
|
|
203
|
+
When analyzing an existing game:
|
|
204
|
+
1. Document each metric category
|
|
205
|
+
2. Note how they interact
|
|
206
|
+
3. Identify what creates the distinctive feel
|
|
207
|
+
|
|
208
|
+
### For Design
|
|
209
|
+
When designing new feel:
|
|
210
|
+
1. Start with desired feel description
|
|
211
|
+
2. Work backward to required metrics
|
|
212
|
+
3. Tune each category to support the goal
|
|
213
|
+
|
|
214
|
+
### For Comparison
|
|
215
|
+
Comparing two games:
|
|
216
|
+
1. Measure same metrics for both
|
|
217
|
+
2. Note where they differ
|
|
218
|
+
3. Correlate differences to feel differences
|
|
219
|
+
|
|
220
|
+
### For Debugging
|
|
221
|
+
When feel is wrong:
|
|
222
|
+
1. Identify the symptom
|
|
223
|
+
2. Check metrics in likely categories
|
|
224
|
+
3. Adjust and test
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Metric Interactions
|
|
229
|
+
|
|
230
|
+
The six metrics don't exist in isolation:
|
|
231
|
+
|
|
232
|
+
- **Input + Response**: How signals become actions
|
|
233
|
+
- **Response + Context**: Whether avatar fits the space
|
|
234
|
+
- **Context + Polish**: Environmental feedback
|
|
235
|
+
- **Polish + Metaphor**: Whether effects match representation
|
|
236
|
+
- **Metaphor + Rules**: Whether game logic fits the world
|
|
237
|
+
- **Rules + Input**: What actions are meaningful
|
|
238
|
+
|
|
239
|
+
The best game feel comes from all six working in harmony.
|