mcpField
F
fps-shooter

fps-shooter

github.com/gamedev-skills開発5.4k6.8k 回インストール今日更新
リポジトリ

fps-shooter について

一人称シューティングを開発する人向けの設計スキルです。照準と射撃のループ、射撃方式、武器の感触、戦闘システムに加え、キルタイムや反動、弾の拡散の調整を扱います。

主な機能

  1. 01一人称コントローラーとカメラ
  2. 02ヒットスキャンと弾丸の射出
  3. 03武器、弾薬、リロード
  4. 04敵 AI と戦闘フィードバック
  5. 05キルタイム、反動、拡散の調整

活用シーン

  1. 01アリーナ型やタクティカル FPS の企画
  2. 02ヒットスキャンか弾丸方式かの選択
  3. 03武器の殺傷力と反動の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill fps-shooter

インストール後、Claude Code で/fps-shooterを入力して読み込まれたか確認します。

同梱ファイルreferences/shooting-and-feel.md

詳細

FPS シューティング

FPS向けのプレイブックです。視点・移動コントローラー、射撃モデル、武器の感触、戦闘を扱います。これは組み合わせ型のスキルで、3Dコントローラー、入力、AIをシューティングゲームとして統合します。3Dノードやレイキャストを改めて説明するものではありません。射撃モデルと、銃の感触を左右する調整項目(TTK、反動、拡散)を定義します。

使用する場面

  • 中心となる動作が狙って撃つ一人称視点のゲームを作る場合に使用します。アリーナシューター、タクティカルFPS、PvEシューター、ブーマーシューターなどが該当します。
  • ヒットスキャンと弾体のどちらを使うか、キルまでの時間、反動、拡散、照準の感触を調整する場合に使用します。

使用しない場面: 三人称視点/2Dの射撃では、この射撃モデルを再利用しつつ、該当ジャンルに合わせてカメラ/コントローラーを構築してください。タワーを使ったウェーブサバイバルには、tower-defenseを使用してください。カメラ/キャラクター本体には、godot-3d-essentials/unreal-cpp-gameplayを使用してください。

コアループ

周囲を確認 → 標的を捉える → 狙って撃つ → キルを確認する(フィードバック) → 位置を変える/リロードする/前進する。 ゲーム体験全体は、狙って撃つというマイクロループの切れ味にかかっています。視点操作の応答性、明確な命中フィードバック、即座にわかる死亡演出が重要です。

必須システム

  1. 一人称視点コントローラー — 移動(WASD/スティック)、マウス/スティックでの視点操作、重力、ジャンプ/しゃがみ。
  2. カメラ — 目線の高さからの視点、設定可能なFOVと感度、反動による視点の跳ね上がり。
  3. 射撃モデル — ヒットスキャンのレイキャストおよび/または弾体の生成。フィードバックには一貫した命中処理を使用します。
  4. 武器+弾薬 — ダメージ、連射速度、マガジン、リロード、武器切り替え。
  5. 体力+ダメージ — HP、命中/ヘッドショット倍率、死亡処理。プレイヤーと敵で同じモデルを使用します。
  6. 敵AI — 認知 → 警戒 → 攻撃 → 捜索。遮蔽物と反応遅延を扱います(game-ai)。
  7. フィードバック — ヒットマーカー、着弾デカール/パーティクル、命中音、画面の揺れ、キル確認。
  8. 目標 — 撃つ以外に何をするか:制圧、占領、生き残る、護衛。

設計項目

項目効果妥当なデフォルト
キルまでの時間(TTK)致死性、許容度ダメージ × 連射速度 × HPをまとめて調整します(参考資料)。
ヒットスキャンと弾体のどちらを使うか必要な照準スキルヒットスキャン=素早く照準を合わせる。弾体=先読み/回避。
ダメージ減衰射程制限約20 mまでは最大ダメージ、約60 mで最低値。
ヘッドショット倍率スキルへの報酬約1.5~2.0倍。
反動パターン習得可能な反動完全なランダムより固定パターンが適しています。
拡散(ブルーム)レーザーのような精度を抑制初弾は正確にし、撃ち続けると拡散が大きくなります。
連射速度/マガジン/リロードリズム、行動できない時間リロード中は隙が生まれます。
マウス感度/FOV快適さ、視認性どちらも必ずオプションとして設定できるようにします。
エイムアシスト(ゲームパッド)コントローラー操作との公平性標的の近くで吸着/減速させます。

パターン

1. ヒットスキャン射撃(即時判定のレイ。基本となる方式)
# Pseudocode. Cast from the camera; first hit takes damage scaled by range + headshot.
direction = apply_spread(camera.forward, current_spread)
hit = raycast(camera.world_position, direction, max_dist=RANGE, mask=SHOOTABLE)
if hit:
    dmg = base_damage * falloff(hit.distance)
    if hit.is_head: dmg *= HEADSHOT_MULT
    hit.actor.take_damage(dmg)
    spawn_impact_fx(hit.point, hit.normal)        # decal + sound + hitmarker
2. 弾体射撃(回避でき、標的の先を狙う)
# Pseudocode. Spawn a moving body; it deals damage on its own collision.
p = spawn(projectile_scene, at=muzzle.world_position)
p.velocity = camera.forward * PROJECTILE_SPEED
p.on_hit   = lambda other, point: (other.take_damage(base_damage), explode_fx(point))
p.lifetime = RANGE / PROJECTILE_SPEED             # despawn so shots don't live forever
3. キルまでの時間(3要素をまとめて調整)
# Pseudocode. TTK falls out of HP, per-shot damage, and fire rate — tune as one system.
shots_to_kill = ceil(target_hp / damage_per_shot)
ttk_seconds   = (shots_to_kill - 1) / fire_rate_per_second   # first shot at t=0

注意点/失敗パターン

  • 視点操作がフレームレートに連動している、またはdtでスケーリングされていない → FPSによって感度が変わります。視点操作にはマウスの生の移動量を使い、移動の積分にはdtを使用してください(physics-tuningを参照)。
  • 反動/拡散が完全にランダム → 操作不能で不公平に感じられます。習得できる反動パターンを使い、初弾は正確にしてください。
  • 減衰のないヒットスキャン → ピストルでマップの端から端まで狙撃できてしまいます。距離に応じたダメージ減衰を追加してください。
  • 命中フィードバックがない → プレイヤーは弾が当たったか判断できません。必ずヒットマーカー、着弾エフェクト、明確なキル確認を表示してください。
  • TTKの不整合 → 短すぎるとせわしなく不公平に感じられ、長すぎると敵が硬く感じられます。ダメージ、連射速度、HPをひとつのシステムとして調整してください(パターン3)。
  • マルチプレイヤーでクライアントを信用する → 不正行為や「自分が先に撃った」という争いにつながります。権限はサーバー側に置き、ラグ補償を使用し(参考資料)、ネットコードの実装はエンジンのマルチプレイヤースキルに任せてください。
  • FOV/感度の設定がない → 酔いやすさやアクセシビリティの問題につながります。必ず設定できるようにしてください。

構成(スキルから構築する)

  • コントローラーとカメラ: godot-3d-essentials(Godot)、または unreal-cpp-gameplay / unreal-blueprints を使います。Unity では unity-physics とキャラクターコントローラーを使います。
  • 入力: 視点操作/移動、キーの再割り当て、ゲームパッドのエイムアシストには、input-systems(または unreal-enhanced-input)を使います。
  • 射撃物理: レイキャストと投射物の衝突には、godot-physics / unity-physics を使います。
  • 敵: game-ai と、unity-navmesh / unreal-behavior-trees / Godot のナビゲーションを組み合わせます。
  • カメラと操作感: FOV/反動による揺れや視点操作のスムージングには camera-systems を、ヒットストップ、画面の揺れ、インパクトの演出には game-feel を使います。
  • 仕上げ: 武器音/衝撃音には audio-design を、マズルフラッシュ/衝撃の VFX には shader-programming を使います。
  • 開発プロセス: コンテンツを作る前にエイムの操作感を検証するには、prototype-fast を使います。

参考資料

  • ヒットスキャンと投射物のトレードオフ、ダメージ減衰、反動/拡散、TTK の計算、ヒット判定/ラグ補償、敵 AI の状態については、references/shooting-and-feel.md を参照してください。

コメント