rpg について
RPG、JRPG、アクション RPG の開発者向けシステム設計ガイドです。キャラクター成長、アイテム、クエスト、会話、セーブを成長と選択のループとして結び、実装に役立つ関連スキルを示します。
主な機能
- 01能力値、レベル、経験値曲線の設計
- 02インベントリ、装備、補正値の計画
- 03戦闘、クエスト、会話の構成
- 04セーブ、経済、成長制限の統合
- 05関連スキルを組み合わせた実装
活用シーン
- 01レベル曲線やダメージ計算式の設計
- 02装備モデルやインベントリシステムの計画
- 03クエスト状態機械と報酬フローの構築
- 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、戦利品、ストーリー)→ 成長 (レベルアップ、装備の強化、アンロック)→ より難しいコンテンツに挑戦。 プレイヤーが「強くなり、 自分のキャラクターを形作っていく」ことが醍醐味です。すべてのシステムが、この成長と選択のループにつながるようにします。
必須システム
- ステータス+レベルアップ — 基礎能力値、派生戦闘ステータス、XP曲線、レベルアップ時の成長値。
- インベントリ+装備 — データで定義されたアイテム、スタック、スロット、ステータス補正。
- 戦闘 — ターン制またはアクション制。ダメージ計算式、状態異常、勝敗。
- クエスト — 目標、状態マシン(利用可能→進行中→完了→報告済み)、報酬。
- 会話 — 分岐するセリフ、ゲーム状態に基づく条件、意味のある選択肢。
- セーブ/ロード — キャラクター、インベントリ、クエストの進行状況、ワールドフラグをバージョン管理付きで永続化します。
- 経済+進行制限 — ゴールド/ショップ。レベル/クエスト/地域によってパワーに制限を設けます。
- 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を参照してください。
コメント
Markdown 対応