godot-genre-shooter について
Godotで三人称およびハイブリッド型シューターの戦闘システムを設計するスキルです。エイムアシスト、遮蔽物判定、武器データ、命中判定、反動、サーバー検証型のマルチプレイヤー処理を扱います。
主な機能
- 01ソフトロック式エイムアシスト
- 02遮蔽物とピーク射撃の判定
- 03ヒットスキャンと弾体のパターン
- 04Resourceベースの武器データ
- 05反動とマルチプレイヤー命中検証
活用シーン
- 01TPSにゲームパッドのエイムアシストを追加
- 02ピーク射撃前に遮蔽物を検証
- 03ヒットスキャンやプール弾体を実装
- 04マルチプレイヤーの命中をサーバーで検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thedivergentai/ game-dev-agentic-skills --skill godot-genre-shooterインストール後、Claude Code で/godot-genre-shooterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-meta-systems.mdmigration-notes.mdtps-gunplay-core.mdscripts/advanced_weapon_controller.gdcover_validator_rays.gdlag_compensator.gdprojectile.gdshooter_patterns.gdsoft_lock_aim_assist.gdtps_camera_spring_arm.gdweapon_recoil_pattern.gd詳細
コアループ
交戦 → 狙う(ソフトロック/遮蔽物)→ 発射 → 命中を確認 → 次のターゲットを捕捉
絶対にしてはいけないこと(TPS/ハイブリッド)
- FPS のビューモデル/ボブ/視点移動のレシピをこのスキルに含めないでください — shooter-fps に案内してください。
- ヒット判定に
_process()を使わないでください —_physics_processと空間状態クエリを使ってください。 - 権威あるヒット判定をクライアントに任せないでください — サーバーで検証/巻き戻しを行ってください。
- 弾丸に Area3D のオーバーラップを使わないでください — レイ/シェイプクエリを使ってください。
- 武器のステータスをロジックにハードコードしないでください —
WeaponDataリソースを使ってください。 - クエリで射手の RID を除外し忘れないでください。
- シューターのネットワーク同期に TCP を使わないでください — ENet/UDP を使ってください。
必須スクリプト(FPS 以外のパス)
該当するシステムを実装する前に読んでください:
- soft_lock_aim_assist.gd — コントローラー/ハイブリッド向けアシストと吸着照準
- cover_validator_rays.gd — 遮蔽物/ピーク射撃の有効性を判定するレイ
- tps_camera_spring_arm.gd — SpringArm3D を使った TPS カメラの衝突判定
こちらも利用できます:advanced_weapon_controller.gd(共有武器コントローラー — FPS の操作感には FPS スキルを優先)、shooter_patterns.gd、projectile.gd、weapon_recoil_pattern.gd(スプレー用リソース)、lag_compensator.gd(サーバー巻き戻し)。
判断ツリー
カメラ/姿勢
| 必要なもの | 対応 |
|---|---|
| 肩越し視点の TPS | tps_camera_spring_arm.gd |
| ピーク射撃前の遮蔽物チェック | cover_validator_rays.gd |
| ソフトロック/アシスト | soft_lock_aim_assist.gd |
| 真の FPS の発掘 | → godot-genre-shooter-fps |
発射モード
| 必要なもの | 対応 |
|---|---|
| ヒットスキャン/物理弾の理論 | 共有 WeaponData と空間状態を使用。FPS の実装詳細は shooter-fps を参照 |
| プールされた物理弾 | projectile.gd/パターンスクリプト |
| 爆発の範囲 | shooter_patterns.gd の ShapeCast3D パターン |
ネットワーク
| 必要なもの | 対応 |
|---|---|
| クライアント側の演出 | トレーサーをローカルで予測 |
| ダメージ | サーバーが権威を持つ。判定不一致時はノーレジを表示 |
| ネットワーク巻き戻し/ラグ補正 | lag_compensator.gd と advanced-meta-systems.md |
| 習得可能なスプレー | weapon_recoil_pattern.gd |
武器の選択(簡易)
ライフル/SMG にはヒットスキャン、ロケット/矢には物理弾を使います。バランス調整は WeaponData リソース(.tres)で行い、ノードにハードコードしないでください。
| アーキタイプ | 発射速度 | ダメージ | 実装 |
|---|---|---|---|
| SMG | 高 | 低 | ヒットスキャン+縦方向の狭いスプレー |
| スナイパー | 低 | 高 | ヒットスキャン+トレーサー |
| ショットガン | バースト | 中 | 複数弾の拡散、<10m |
| ロケット | 遅い | 高 | projectile.gd +シェイプによる範囲攻撃 |
ガンプレイの理論 → tps-gunplay-core.md。ネットワーク巻き戻し → advanced-meta-systems.md。
リコイルと操作感(理由)
キックは武器メッシュだけでなく、カメラの回転と拡散の増加に適用してください。習得可能なスプレーには weapon_recoil_pattern.gd を使ってください。銃声は、機械音、発射音、残響の尾を別々の 3D プレーヤーで重ねてください。
マルチプレイヤー(簡易)
クライアントは VFX/トレーサーを予測し、サーバーはヒットを検証します(rpc と巻き戻し)。クライアントのダメージ申告を信頼しないでください。TCP ではなく ENet/UDP を使ってください。不一致時はサーバーの判定を優先し、ノーレジのフィードバックを表示してください。
リファレンス
段階的な情報開示:特定の API を調査するときだけ公式ドキュメントへのリンクを開いてください。関連分野に案内するときだけ関連スキルを読み込んでください。スキル群全体を事前に読み込まないでください。
公式ドキュメント
- レイキャスティング — フレームレートに依存しない射撃に使う
PhysicsDirectSpaceState3D.intersect_rayによるヒットスキャンクエリ、例外、衝突マスクについて説明します。 - 物理演算の概要 — ヒット判定の決定性を保つレイヤー/マスク、
_physics_processのタイミング、ボディタイプについて説明します。 - PhysicsDirectSpaceState3D — RayCast3D ノードのオーバーヘッドなしで高頻度の射撃を処理する、直接的な
intersect_ray/intersect_shapeについて説明します。 - PhysicsRayQueryParameters3D — シューター自身が所有するヒットスキャンクエリに使う from/to、除外する RID、collision_mask について説明します。
- CharacterBody3D — 重力、跳ね返り、寿命を持つ
move_and_collideの弾体について説明します。 - SpringArm — カバーにめり込まない、衝突を考慮した TPS カメラブームと肩越しオフセットについて説明します。
- デカールの使用 — Sprite3D のビルボードではなく、遠近法に正確な弾痕や着弾跡を表示する方法について説明します。
- コントローラー、ゲームパッド、ジョイスティック — エイムアシストの摩擦/吸着で調整するスティックによる視点操作について説明します。
- ハイレベルマルチプレイヤー — サーバーでヒットを検証する射撃イベントに使う RPC の権限と信頼性のないモードについて説明します。
- Camera3D — FOV のパンチ、
-global_basis.zからのエイムレイ、TPS の肩越し視点切り替えに使うh_offsetについて説明します。 - PhysicsShapeQueryParameters3D — Area3D を大量に生成せずにロケット/グレネードの範囲効果を処理する球形/形状クエリについて説明します。
- AudioStreamPlayer3D — 力強い空間的な銃声を実現する、射撃音/機械音/余韻を重ねたプレーヤーについて説明します。
関連スキル
前提条件
- godot-physics-3d — ヒットスキャンと弾体が依存する CharacterBody3D/RigidBody3D、衝突レイヤー、直接的なスペースクエリについて説明します。
- godot-input-handling — エイムアシストと反動キックの実装前に必要な、視点操作/射撃/リロードのアクションマップとゲームパッドのスティックカーブについて説明します。
- godot-camera-systems — 武器のキックやソフトロックの回転に使う FPS/TPS カメラリグ、FOV、SpringArm のパターンについて説明します。
- godot-project-foundations — 武器の種類を調整する前に必要な、Resource ベースの WeaponData、シーン構成、インポート時のデフォルト設定について説明します。
補完
- godot-combat-system — シューティングの
take_damageの結果を受け取る、ダメージイベント、ヒットゾーン、ヘルス処理パイプラインです。 - godot-raycasting-queries — クエリ設定を重複させずに、遮蔽物の確認、LOS、ヒットスキャンに使える再利用可能なレイ/シェイプクエリーヘルパーです。
- godot-audio-systems — 銃声の機械音、発砲音、リバーブの残響レイヤーに対応するバスルーティングと3D減衰です。
- godot-multiplayer-networking — ENetピア、RPCモード、権限を用いて、発砲をクライアント側で予測し、ダメージをサーバーで検証します。
- godot-adapt-single-to-multiplayer — ヒットスキャンの検証を囲む、予測、調整、ラグ補償の仕組みです。
- godot-particles — 発砲処理を妨げずにガンプレイを演出する、マズルフラッシュ、トレーサー、着弾時のバーストです。
下流/利用側
- godot-monte-carlo-balancer — TTK、スプレーパターン、武器間の非対称性マトリクスをシミュレーションし、各アーキタイプのダメージとリコイルの競争力を保ちます。
- godot-genre-shooter-fps — このジャンルのガンプレイの基盤を活用し、FPSに特化した移動とビューモデルを磨き上げます。
- godot-genre-battle-royale — ドロップやゾーンを巡るゲームループで、ヒットスキャン/投射物戦闘を再利用する大規模マッチです。
マスター
- godot-master — スキルを横断して見つけられるようにするライブラリルーター兼、ミラーされたモジュールエントリです。