mcpField
R
rpg

rpg

github.com/gamedev-skills開発5.4k7.1k 回インストール1 日前に更新
リポジトリ

rpg について

RPG、JRPG、アクション RPG の開発者向けシステム設計ガイドです。キャラクター成長、アイテム、クエスト、会話、セーブを成長と選択のループとして結び、実装に役立つ関連スキルを示します。

主な機能

  1. 01能力値、レベル、経験値曲線の設計
  2. 02インベントリ、装備、補正値の計画
  3. 03戦闘、クエスト、会話の構成
  4. 04セーブ、経済、成長制限の統合
  5. 05関連スキルを組み合わせた実装

活用シーン

  1. 01レベル曲線やダメージ計算式の設計
  2. 02装備モデルやインベントリシステムの計画
  3. 03クエスト状態機械と報酬フローの構築
  4. 04会話の選択を後続クエストや世界状態に反映

インストール

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

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

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

同梱ファイルreferences/stats-combat-quests.md

詳細

RPG

ロールプレイングゲーム向けプレイブックです。ステータスと成長、インベントリ/装備、クエスト、 会話、戦闘を扱います。これは組み合わせ型のスキルです。データ駆動型コンテンツ、 会話、セーブを結び付けます。これらの基本要素を再解説するのではなく、成長と選択に意味を持たせるシステムを定義し、 それぞれを実装するスキルを案内します。

使用する場面

  • RPG/JRPG/アクションRPGを構築するときに使用します。プレイヤーに成長するステータス、 インベントリ、クエスト、会話があり、進行状況が永続化されるゲームが対象です。
  • レベルアップ曲線、ダメージ計算式、インベントリ/装備モデル、クエストの状態マシンを設計するときに使用します。

使用しない場面: キャラクターの進行状況が永続化されない、パーマデス制のダンジョン探索には roguelike を使用します。 会話や分岐するストーリーだけを扱う場合は visual-novel を使用します。オープンワールドでニーズ管理/クラフト/拠点建設が必要な場合は survival-crafting を使用します。会話エンジン自体には dialogue-systems を使用します。

コアループ

探索 → 遭遇(戦う/話す/謎を解く)→ 報酬を獲得(XP、戦利品、ストーリー)→ 成長 (レベルアップ、装備の強化、アンロック)→ より難しいコンテンツに挑戦。 プレイヤーが「強くなり、 自分のキャラクターを形作っていく」ことが醍醐味です。すべてのシステムが、この成長と選択のループにつながるようにします。

必須システム

  1. ステータス+レベルアップ — 基礎能力値、派生戦闘ステータス、XP曲線、レベルアップ時の成長値。
  2. インベントリ+装備 — データで定義されたアイテム、スタック、スロット、ステータス補正。
  3. 戦闘 — ターン制またはアクション制。ダメージ計算式、状態異常、勝敗。
  4. クエスト — 目標、状態マシン(利用可能→進行中→完了→報告済み)、報酬。
  5. 会話 — 分岐するセリフ、ゲーム状態に基づく条件、意味のある選択肢。
  6. セーブ/ロード — キャラクター、インベントリ、クエストの進行状況、ワールドフラグをバージョン管理付きで永続化します。
  7. 経済+進行制限 — ゴールド/ショップ。レベル/クエスト/地域によってパワーに制限を設けます。
  8. UI — HUD、インベントリ、クエストログ、会話ボックス、キャラクターシート。

設計の調整項目

調整項目効果備考
XP曲線の形状パワーの成長ペース序盤は速く、終盤は遅くします(参考資料を参照)。
ステータス→派生値のスケーリングビルドの多様性1つの能力値が突出しないようにします。
ダメージ計算式戦術的な手応え減算方式と比率による軽減方式(参考資料を参照)。
ランダムな変動幅/クリティカル展開の振れ幅±10%の変動幅と約1.5倍のクリティカルが安全な初期設定です。
ドロップ率/経済報酬の頻度戦利品によってショップの価値がなくならないようにします。
パワーの制限難易度の制御レベル/地域/クエストによる制限。
可逆的な補正バフ/装備の整合性補正をレイヤー化し、基礎ステータスは決して変更しません。
選択の結果ロールプレイ上の重みクエスト/会話フラグによって結果が分岐するようにします。

パターン

1. 基礎能力値から派生ステータスを算出する(再計算し、正しい値として保存しない)
# Pseudocode. Base attributes are the only "truth"; combat stats are derived each time.
def derive(base, mods):
    s = apply_modifiers(base, mods)          # base + flat adds + percent, then clamp
    return {
        "max_hp":  20 + s["VIT"] * 8,
        "attack":  s["STR"] * 2,
        "defense": s["VIT"] + s["AGI"] * 0.5,
    }
# Equipping pushes a modifier; unequipping pops it. HP/attack recompute automatically.
2. XP曲線+レベルアップ
# Pseudocode. Quadratic curve: fast early levels, long late ones.
def xp_to_next(level, base=100): return base * level * level

def gain_xp(actor, amount):
    actor.xp += amount
    while actor.xp >= xp_to_next(actor.level):
        actor.xp -= xp_to_next(actor.level)
        actor.level += 1
        actor.base["STR"] += 2; actor.base["VIT"] += 2   # grant gains / skill points
        on_level_up(actor)                                # heal, unlock, notify
3. ゲームイベントに基づくクエスト目標の更新
# Pseudocode. Game events advance matching objectives; completion grants rewards.
def on_event(kind, data):
    for q in active_quests:
        for obj in q.objectives:
            if obj.event == kind and matches(obj, data) and not obj.done:
                obj.count += 1
                if obj.count >= obj.needed: obj.done = True
        if all(o.done for o in q.objectives):
            q.state = "complete"                # turn-in grants xp/gold/items

落とし穴/失敗例

  • バフ/装備のために基礎ステータスを編集する → 値がずれていき、セーブ/ロード時に破損します。 補正レイヤーを維持し、追加/削除します(パターン1)。
  • 派生ステータスを正しい値として保存する → ステータス変更後に同期がずれます。基礎値から再計算します。
  • XP/ダメージ値が際限なく増加する → 上限のない指数曲線か、値が極端に大きいときの減算方式の計算式が原因です。 曲線と計算式の種類を意図的に選びます(参考資料を参照)。
  • コンテンツをコードとして扱う → すべてのアイテム/クエストがハードコードされています。アイテム、敵、クエストはデータとして定義します (godot-resources / unity-scriptableobjects)。
  • バージョンフィールドのないセーブ形式 → アップデート後に古いセーブが壊れます。最初から version と 移行手段を用意します(save-systems を参照)。
  • 結果を伴わない選択肢 → すぐに合流する会話の分岐は、手応えがありません。後のクエスト/ワールド状態を実際に変化させるフラグを設定します。
  • クエストの進行状況が永続化されない → 再ロード時にクエストの途中経過が失われます。完了状況だけでなく、 クエストの状態も保存します。

構成(これらのスキルを組み合わせて作成します)

  • 会話: dialogue-systems(Yarn Spinner / Ink)— 分岐するセリフ、条件、変数。
  • 永続化: save-systems — キャラクター、インベントリ、クエストフラグ、ワールド状態、バージョン管理。
  • コンテンツデータ: godot-resources / unity-scriptableobjects — アイテム、敵、クエスト、スキルをアセットとして管理します。
  • 戦闘 AI: 敵の行動には game-ai を使います。ターン順には、roguelike のスケジューラーの考え方を再利用します。
  • UI: HUD/メニューのレイアウト、解像度への対応、コントローラー/キーボード操作には game-ui-ux を使います。具体的なインベントリ、クエストログ、キャラクターシート、会話ボックスには godot-ui-control を使います。
  • ワールド: level-design と、使用するエンジンのタイルマップ/3D スキル(godot-tilemap、godot-3d-essentials)を組み合わせます。

参考資料

  • ステータス/ダメージ計算式、レベルアップ曲線、ターン制とアクション制の戦闘タイムライン、インベントリ/装備の データ構造、クエスト状態モデルについては、references/stats-combat-quests.md を参照してください。

コメント