game-feel について
game-feelは、ゲーム操作の触覚的な反応を理解し、調整するためのデザインスキルです。評価指標や知覚の閾値、シミュレーションの手法、問題の診断方法を扱います。
主な機能
- 01ゲームフィールの三つの要素
- 02フィールを評価する六つの指標
- 03ADSRによる反応調整モデル
- 04移動とジャンプのシミュレーション例
- 05演出とレベル設計の指針
活用シーン
- 01浮遊感や操作の遅さの診断
- 02ジャンプや移動の反応調整
- 03効果音・演出と衝突表現の調和
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jarrodmedrano/ jarrod-claude-skills --skill game-feelインストール後、Claude Code で/game-feelを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/adsr-tuning.mdclassic-profiles.mdperception-thresholds.mdpolish-effects.mdsimulation-recipes.mdsix-metrics.md詳細
ゲームフィールスキル
Steve Swink による包括的な分析に基づき、満足感のあるゲーム操作を理解し、測定し、作り出すためのフレームワークです。
基本的な定義
ゲームフィールとは、仮想オブジェクトを操作する触覚的、運動感覚的な感覚です。操作しているという感覚、つまり、プレイヤーとゲームのあいだに存在する、操縦したり、ジャンプしたり、インタラクトしたりする際の直感的な感覚です。
「ゲームフィールは目に見えないアートです。デザイナーが適切に仕事をすれば、プレイヤーはそれに気づきません。ただしっくりくるように感じるだけです。」
3つの構成要素
ゲームフィールには、次の3つの要素がすべて連携している必要があります。
| 要素 | 定義 | ない場合 |
|---|---|---|
| リアルタイム操作 | 入力に対する継続的かつ即時の応答 | 操作しているのではなく、命令を出しているように感じます |
| シミュレーション空間 | 仮想世界での衝突と物理演算 | 物理的なインタラクションの感覚がありません |
| ポリッシュ | インタラクションを強調するエフェクト | 単調で、生気がなく、説得力に欠けます |
人間の知覚のしきい値
修正サイクル
プレイヤーは約240msのサイクルで知覚し、考え、行動します。
- 知覚プロセッサー:約100ms
- 認知プロセッサー:約70ms
- 運動プロセッサー:約70ms
重要なしきい値
| しきい値 | 値 | 効果 |
|---|---|---|
| 動きの錯覚 | 10+ fps | これを下回ると、動いている感覚がありません |
| 滑らかな動き | 30+ fps | 動きが流れるように感じられます |
| 瞬時の応答 | <50ms | 直接操作しているように感じられます |
| 遅延を感じる | 100-200ms | もっさりしますが、使用できます |
| 操作が破綻する | >240ms | プレイヤーが遅延に気づき、ゲームフィールが損なわれます |
「応答が50msなら、ゲームは身体の延長のように感じられます。100msを超えると、遅延に気づきます。240msを超えると、リアルタイム操作は破綻します。」
参照: references/perception-thresholds.md
ゲームフィールを測る6つの指標
1. 入力
物理デバイスと、それが送信する信号です。
測定項目: 感度、状態、信号の種類(ブール値か連続値か)、物理的な人間工学
2. 応答
入力がゲーム状態の変化にどのように対応するかです。
測定項目: 直接的か間接的かの対応関係、シミュレーションの複雑さ、ADSRエンベロープ
3. コンテキスト
動きに意味を与える空間環境です。
測定項目: アバターの速度に対するオブジェクトの間隔、衝突の密度、レベルのレイアウト
4. ポリッシュ
インタラクションを強調し、納得感を高めるエフェクトです。
測定項目: パーティクル、画面の揺れ、アニメーションの同期、サウンドデザイン
5. メタファー
ゲームが何を表現し、どのような期待を生み出すかです。
測定項目: リアリズムか抽象化か、プレイヤーの期待、ジャンルの慣習
6. ルール
瞬間ごとのゲームフィールに影響するゲームルールです。
測定項目: 体力システム、リスクと報酬、状態の変化、能力のアンロック
参照: references/six-metrics.md
ゲームフィールのADSRエンベロープ
オーディオ合成から取り入れた、応答が時間とともにどのように変化するかを表すものです。
Sustain ___________
/ \
/ Attack Decay \ Release
/ \
_/ \_____
| フェーズ | 説明 | 例(マリオのジャンプ) |
|---|---|---|
| アタック | 応答が最大に達するまでの時間 | ボタンを押し続けるにつれて、ジャンプ力が上がります |
| ディケイ | 持続レベルに落ち着く過程 | 最初の勢いが落ち着きます |
| サステイン | 入力を続けている間に維持されるレベル | 最大ジャンプ高度が維持されます |
| リリース | 入力を止めた後に減衰する過程 | ボタンを離すと重力が働きます |
重要なポイント: 「浮遊感」と「キビキビした感じ」の違いの大部分は、アタックとリリースの時間から生まれます。
参照: references/adsr-tuning.md
よく使われる操作感の用語
| 用語 | 意味 | 典型的な原因 |
|---|---|---|
| タイト | 正確で、すぐに反応する | アタックが短い、加速度が高い、リリースが短い |
| ふわふわ | 緩く、反応が遅れ、漂うような感覚 | アタック/リリースが長い、慣性が大きい |
| レスポンシブ | 意図した操作に即座に反応する | 応答が100ms未満、直接的なマッピング |
| もっさり | 遅れて反応し、重い感覚 | 応答が150ms超、アタックが長い |
| 滑りやすい | 正確に止めにくい | 摩擦が小さい、リリースが長い |
| 動き出しにくい | 動き始めるのが難しい | 摩擦が大きい、アタックが長い |
| 重みがある | 質量と慣性を感じる | 加速度カーブ、重力の強さ |
| キレがある | 状態が素早く切り替わる | アタックとリリースが短い |
シミュレーションの基礎
位置、速度、加速度の違い
| レベル | 変化するもの | 操作感 |
|---|---|---|
| 位置を設定 | 直接ワープする | 硬く、ロボットのよう(Donkey Kong) |
| 速度を設定 | 速度を直接変える | 反応はよいが、不自然 |
| 力を加える | 加速度を加える | 滑らかで、物理的(Mario、Asteroids) |
Asteroidsの原則
表現豊かな宇宙空間の操作感を生むには、推進と回転を分離します。
- 回転:直接的で即時(シミュレーションなし)
- 推進:向いている方向に力を加える(シミュレーションあり)
- 結果:船は制御の限界ぎりぎりに感じられますが、実際に制御不能になることはありません
Marioの原則
水平方向と垂直方向のシステムを分離します。
- 水平方向:加速度、最高速度、減速、走行時の補正
- 垂直方向:ジャンプ力、重力、落下時の重力(通常の3倍!)、終端速度
- ボタンを押し続ける時間でジャンプの高さが変わります(最小値/最大値あり)
参照:references/simulation-recipes.md
Marioのジャンプのレシピ
ゲーム史上、最も分析されたジャンプです。
水平方向の移動
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
うまく機能させる「ハック」
プレイヤーが早めにジャンプボタンを離したとき:
- 上向きの速度がしきい値を超えているか確認します
- 超えている場合は、速度をあらかじめ設定した低い値に即座に変更します
- これにより、ボタンを離すタイミングにかかわらず、一貫した弧を描きます
参照:references/mario-mechanics.md
重要な仕上げ
3段階のインパクトシステム
軽い/中程度/強い衝撃それぞれに、以下を用意します。
- 異なるアニメーション
- 異なるサウンド
- 異なる視覚効果(パーティクル、画面揺れ)
サウンドと動きの調和
- ピッチが上がる=動きが上昇する(Marioのジャンプ音)
- 衝撃音を視覚的なスケールに合わせます
- 足音をアニメーションのフレームに同期させます
- 素材ごとに異なる音(金属、草、石)
クロスオーバーの感覚
複数のメカニクスが、同じ物理法則に縛られているように感じられる必要があります。
- 走る動きに地に足のついた感覚があるからこそ、泳ぐ動きがふわふわと感じられます
- 飛行は、ジャンプに影響する同じ重力に逆らいます
- コントラストが、一貫性のある感覚を生み出します
参照:references/polish-effects.md
背景:操作感を高めるレベルデザイン
空間的な関係をメカニクスに合わせる
- ジャンプの高さ → 足場の高さ
- 走る速度 → 通路の幅
- 停止距離 → 危険地帯の手前にある隙間の幅
「ちょうどよい」原則
意図した動きがぎりぎり成功する間隔でオブジェクトを配置します。
- ロングジャンプの隙間:ちょうどロングジャンプの距離
- トリプルジャンプの高さ:ちょうどトリプルジャンプの頂点
- 成功したときに、習熟した感覚が生まれます
ソフトな境界
壁で塞ぐのではなく、物理法則で誘導します。
- 急な斜面では滑り落ちます(Mario 64)
- 水中では移動が遅くなります
- 風が意図した方向に押します
「プレイヤーは、デザイナーが直接介入しているとは感じません。制限は、あからさまな制約ではなく、論理的な結果として感じられます。」
参照:references/spatial-context.md
操作感の問題のデバッグ
| 症状 | 考えられる原因 | 対処法 |
|---|---|---|
| 「ふわふわする」 | アタック/リリース時間が長い | 加速カーブを短くします |
| 「もっさりする」 | 応答遅延が大きい | 入力から画面表示までの遅延を減らします |
| 「滑りやすい」 | 減速度が低い | 摩擦/減速度を上げます |
| 「硬い」 | 加速カーブがない | 動きにアタックフェーズを追加します |
| 「反応しない」 | 入力が認識されていない | 入力ポーリングレートを確認します |
| 「予測できない」 | 軌道が一定でない | 特殊技の軌道を固定します |
| 「重力がない」 | 重力が弱い | 特に落下時の重力を強めます |
優れたゲームフィールの原則
- 予測可能な特殊技 — 精密な操作のために軌道を固定します
- 変化に富む基本動作 — 瞬間ごとの操作に表現の幅を持たせます
- 一貫した抽象化 — 物理法則はシンプルに、ただし整合性を保ちます
- 比喩の期待を超える — グラフィックから想像する以上にリアルな感覚を与えます
- 調和のとれた仕上げ — 音、ビジュアル、アニメーションで同じ物語を伝えます
- 能力に合った状況 — レベルデザインでアバターの限界を尊重します
- 応答時間は100ms未満 — 即座に反応する感覚を保ちます
- コントラストが多様性を生む — メカニクスごとに異なる感覚を持たせます
クラシックなゲームフィールのクイックリファレンス
Asteroids(宇宙空間の浮遊感)
- 推進と回転を分離します
- 摩擦をごく低くします(停止まで4秒以上)
- 画面端で折り返す仕組みを使います
- 回転はシミュレーションなしで瞬時に行います
Super Mario Bros(プラットフォームゲームの金字塔)
- 水平方向と垂直方向のシステムを分離します
- ジャンプの高さを変化させます(ボタンを押し続ける)
- 下降時の重力を3倍にします
- 走行時の補正で加速度と最高速度の両方を変えます
- 空中での操作性を抑えます
Mario 64(3Dへの展開)
- カメラ基準のサムスティック操作
- 傾斜に応じた滑走物理
- 軌道を固定した複数のジャンプタイプ
- カービングターンの補間
- 精密に着地する手段としてのヒップドロップ
参照:references/classic-profiles.md
重要な合言葉
- 「ゲームは自分の体の延長のように感じられるべきです。」
- 「システムは分け、世界は統一する。」 — メカニクスは独立させ、物理法則は統一します。
- 「比喩を超える。」 — 見た目以上に心地よく感じられるようにします。
- 「精密さには固定、表現には変化を。」 — 特殊技と基本動作の使い分けです。
- 「仕上げは必須です。」 — エフェクトが操作の魅力を引き立てます。
- 「240msが限界です。」 — リアルタイム操作における応答時間の上限です。