Communitygithub.com

Pranesh0805-S/Game-Dev-Skills

2Dまたは3Dゲーム、あらゆるジャンルに適用可能なユニバーサルゲームデザインルール。ゲームメカニクス、衝突、物理、移動、ゲームループ、ステートマシン、勝利/敗北条件、スコアリングの設計や実装、またはゲームのルール構造の一貫性確認時に使用します。

Game-Dev-Skills とは?

このスキルは、特定のジャンルに依存しないゲームデザインのコアルールセットを提供します。2D/3Dを問わず、プラットフォーマー、ランナー、シューティング、パズル、レーシングなど様々なジャンルに適用可能で、ゲームメカニクス、衝突、物理、移動、ゲームループ、ステートマシン、勝利/敗北条件、スコアリングの設計や実装、またはゲームのルール構造の一貫性確認時に使用します。ワークフローに従い、コード実装前にルールを定義し、`RULES.md`を出力してテスト可能にします。ユニバーサル構造(ゲームループ、ゲームステート)とジャンル別アドオン(プラットフォーマーの重力、ランナーの速度ランプなど)を組み合わせ、フレームレート非依存やシード可能な乱数などのハードルールを守ります。Claude CodeやCursorなど、AIエージェントがゲーム開発プロジェクトで一貫した設計を支援するために設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Pranesh0805-S/Game-Dev-Skills/tree/HEAD/skills/game-rules-core

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ゲームルールコア

ジャンルに依存しない、すべてのゲームに必要なルール。ジャンル固有の癖は、これらの上に追加し、決して置き換えてはいけません。

ワークフロー

  1. 次元(2D/3D)、ジャンル、カメラ、入力方式を特定する。
  2. コードを書く前にルールセットを定義する:エンティティ、状態、ルール、勝利/敗北、エッジケース。
  3. 以下のパターンを使用して実装する。
  4. references/collision.md を読んで衝突/物理の詳細を確認する。
  5. プロジェクト内に RULES.md を出力し、後でテストできるようにすべてのゲーム固有ルールを記載する。

ユニバーサル構造

  • ゲームループ: 入力 -> 更新(固定dt) -> 衝突 -> 状態解決 -> レンダリング。物理には固定タイムステップ、レンダリングには可変タイムステップを使用する。
  • ゲーム状態: 起動 -> メニュー -> プレイ中 <-> 一時停止 -> ゲームオーバー/勝利 -> メニュー。すべての遷移は明示的でなければならず、暗黙的な状態変更は禁止。
  • エンティティ: それぞれが位置、サイズ/コライダー、速度、状態、および自身のルールの所有者を持つ。
  • ルールテーブル: すべてのルールについて トリガー -> 条件 -> 効果 -> エッジケース を記述する。

すべてのゲームが定義すべきルール

  • 勝利条件、敗北条件、および再起動時に何が起きるか(何がリセットされ、何が保持されるか)。
  • スコア/進行度:どのように増加し、上限は何か、どのように保存されるか。
  • プレイヤーの体力/ライフ:ダメージ源、無敵時間、死亡処理。
  • スポーン/デスポーン:どこで、いつ、制限、およびクリーンアップ(リークなし)。
  • 難易度曲線:何がどの程度の速さでスケーリングされるか。
  • 入力:同時入力、バッファリング、キーリバインディング、一時停止動作。

ジャンルアドオン(該当するものを選択)

  • プラットフォーマー: 重力、ジャンプ高さ/可変ジャンプ、コヨーテタイム(約100ms)、ジャンプバッファ(約100ms)、一方通行プラットフォーム、移動プラットフォームへのキャリー、落下死ライン。
  • ランナー/エンドレス: 速度上昇、プロシージャルスポーン間隔の通行保証、再現性のためのシード。
  • シューティング: 発射速度、投射物の生存時間、ヒット判定、弾薬/リロード。
  • パズル: 決定論的な状態、アンドゥ、可解性チェック。
  • レーシング/3D: チェックポイント、ラップ判定、ショートカット防止ルール、カメラ衝突。

ハードルール

  • ゲームプレイロジックをフレームレートに紐付けてはいけない。
  • エンティティがプレイ可能範囲外に出た場合、定義された結果がなければならない。
  • すべてのルールには数値を割り当てる(「速い」ではなく「単位/秒」を使用)。
  • 乱数はシード可能でなければならない。

関連スキル