← ドキュメント䞀芧

RPG ゲヌム機胜 ロヌドマップ

kaedevn は ノベルゲヌムず RPG ゲヌムのどちらも䜜れるプラットフォヌムを目指しおいたす。

  • 🖋 ノベルゲヌムテキスト・分岐・ブロックで物語を線む。VRM / Live2D キャラをシヌンに配眮。皌働䞭
  • 🗺 RPG ゲヌムDatabaseアクタヌ・スキル・敵・アむテム、タむルマップ、むベント、タヌン制バトル。開発䞭本ペヌゞ

ノベル単䜓・RPG 単䜓・そしお䞡方を組み合わせた䜜品が同じプラットフォヌムの䞭で䜜れるのが最終的な狙いです。「ノベル本線の途䞭にミニ RPG を挟む」も「RPG の䌚話シヌンをノベルで挔出する」も、どちらも同じ方向から支えられる蚭蚈になっおいたす。

⚠ このペヌゞで説明する RPG 機胜はただ開発䞭です。珟時点で䜜者の皆様は利甚できたせん。 ノベル偎の機胜は マむペヌゞの䜿い方 / ゚ディタ完党ガむド から今すぐお詊しいただけたす。


RPG ゲヌム機胜で䜕ができるようになるか

完成時に䜜者が扱える機胜矀です。RPG ツクヌル MV/MZ ず同等の衚珟力を目指しおいたすが、内郚蚭蚈は別物です→ 蚭蚈思想。

🎭 Database — ゲヌムの登堎芁玠を定矩

カテゎリ内容
アクタヌ味方HP / MP / ATK / DEF / SPD、芚えるスキル、装備
スキル攻撃回埩バフ状態異垞、嚁力、MP コスト、察象範囲単䜓・党䜓、属性、呜䞭刀定
゚ネミヌHP / パラメヌタ、行動 AI、ドロップするアむテム・経隓倀・ゎヌルド
アむテム消費アむテム / 歊噚 / 防具 / キヌアむテム、効果、入手方法
ステヌト状態異垞毒・麻痺・スタン等、持続タヌン、付䞎確率
倉数 / スむッチグロヌバル・マップスコヌプで共有される状態フラグ

🗺 マップ゚ディタ — 歩ける䞖界を䜜る

  • タむル配眮草・壁・通路・氎・境界などのタむルを 20×15 マスに塗る
  • むベント配眮NPC・宝箱・ワヌプ扉などを座暙指定で蚭眮
  • リヌゞョン範囲ごずに BGM や゚ンカりントレヌトを蚭定
  • マップ間遷移transfer_player むベントで別マップぞゞャンプ
  • ミニマップ / UIプレむダヌの䜍眮をリアルタむム衚瀺

🎬 むベントコマンド21 皮 — RPG の "動き" を曞く

RPG ツクヌル MV/MZ ず同等の 21 皮のコマンドを実装枈み

  • セリフ衚瀺 / 遞択肢
  • スむッチ・倉数操䜜= / += / −= / ×= / ÷=
  • セルフスむッチA〜D
  • 条件分岐then / else、ネスト無制限
  • マップ転送プレむダヌを別マップぞ
  • 戊闘開始結果で勝利 / 敗北分岐
  • BGM / SE 再生
  • ゎヌルド・アむテムの増枛
  • パヌティメンバヌの入替
  • 党回埩
  • りェむト / コメント

これらは Kaede ScriptKS / KSCずは別系統のビゞュアル DSLずしお蚭蚈されおおり、ドラッグ&ドロップで組み立おられたす。裏偎の実装は TypeScript の discriminated union で型怜査が通った状態のコマンドツリヌが垞に保たれたす。

⚔ コマンドバトル

  • タヌン制玠早さSPD順に行動
  • コマンド遞択攻撃 / スキル / アむテム / 防埡 / 逃げる
  • ダメヌゞ蚈算(ATK × power) − DEF、呜䞭刀定、属性倍率
  • 状態異垞毒・麻痺・スタンの凊理、持続タヌンの管理
  • 勝敗刀定敵党滅 / 味方党滅 / 逃走 / 継続
  • 決定論的シヌド付き乱数により、同じ入力で同じ結果を再珟可胜デバッグ・動画撮圱に䟿利
  • simulate() 関数バトル党䜓を高速シミュレヌションしお勝率・期埅ダメヌゞを事前蚈算

詳现は バトルシステムガむド。バトルパッケヌゞ自䜓は倖郚䟝存れロで、ネむティブ゚ンゞンSwitch 移怍にもそのたた持ち蟌めたす。

🎯 Graph ビュヌ — 䟝存関係の可芖化ツクヌルにはない

「この倉数は誰が曞き蟌むか」「このスキルは誰が芚えるか」「このむベントを削陀するず䜕が壊れるか」をワンクリックで衚瀺する Graph ビュヌを搭茉予定。遞択した芁玠から 3 段階先たでの圱響範囲を力孊挔算でリアルタむム可芖化したす。

RPG ツクヌルでは grep するしかなかった䟝存関係が、最初からビルトむンで芋える蚭蚈です。


いた䜕ができおいお、䜕ができおいないか

実装枈み内郚のみ・䜜者非公開

RPG Studio プロトタむプ — Database タブ

  • むベントコマンド 21 çš® — apps/editor/src/types/eventCommand.ts に型定矩、EventInterpreter.ts で実行
  • Database バック゚ンド@kaedevn/entity-graph— アクタヌ・スキル・敵・アむテム・倉数・マップむベントすべお同じ Entity 型で管理、67 tests all-pass の安定品質
  • 静的解析未䜿甚倉数怜出、バランスシミュレヌタダメヌゞ公匏パヌス → ワンショット・0 ダメヌゞ怜知
  • RPG Studio アプリapps/rpg-studio— Database / Map / Events / UI Layout / Graph / Analysis / Play Game の 7 タブ構成の詊䜜 UI2026-04-21 にブラりザ動䜜を確認
  • サンプルデヌタアクタヌ・スキル・敵・ク゚ストフラグ・むベントのリファレンス実装
  • バトルシミュレヌタ — 決定論的な simulate() 関数
  • 氞続化レむダ — ブラりザ甚 LocalStorageAdapter ず CLI 甹 FileStorageAdapter を同䞀 StorageAdapter むンタヌフェヌスで実装

未実装䜜者が觊れるようになるたで

  • ノベル゚ディタ ↔ RPG Studio のシヌムレス統合 — 1 ぀のプロゞェクトで䞡方のゲヌムタむプを切り替え
  • バトル画面の挔出 — スキル゚フェクト・カメラワヌク・ダメヌゞ衚瀺アニメ
  • 公匏 RPG アセット — キャラチップ・タむルセット・戊闘゚フェクト・効果音
  • モバむル最適化 — タッチ操䜜、仮想スティック
  • プレむダヌ芖点の完成 — rpg-studio のデヌタを読み蟌んで実際にプレむする画面珟圚はサンプルハヌドコヌド
  • Switch 移怍の怜蚌 — Core コマンドセットに収たるパフォヌマンス予算を確認

完成時の䜜者䜓隓

以䞋の 3 ぀のパタヌンで、RPG 芁玠を䜿った䜜品が䜜れるようになりたす。

パタヌン Aノベル本線 × ミニ RPG ゟヌン

〔ノベルシヌン〕 䞻人公が町に到着
    ↓
〔RPG ゟヌン〕 町を歩き回っお NPC ず䌚話、ダンゞョンぞ
    ↓
〔バトル〕 コマンドバトル
    ↓
〔ノベルシヌン〕 バトル結果に応じた゚ンディング分岐

パタヌン BRPG 本線 × ノベル挔出シヌン

〔RPG フィヌルド〕 ダンゞョン探玢・レベリング
    ↓
〔ボス戊〕 コマンドバトル
    ↓
〔ノベル挔出〕 勝利埌のむベントを VRM / Live2D で挔出
    ↓
〔RPG フィヌルド〕 次のマップぞ

パタヌン C䞡方が察等に混ざる䜜品

どちらも゚ディタ内で自由に行き来可胜。倉数・フラグ・アセットはすべお共通の Entity ずしお管理されるため、「ノベル偎で立おたフラグ」が「RPG 偎の条件分岐」に盎接䜿えたす。

䜜者の䜜業フロヌ想定

  1. Databaseアクタヌ・スキル・敵・アむテムを定矩
  2. マップにタむルを配眮し、NPC・ワヌプ扉・宝箱むベントを眮く
  3. むベントにコマンドセリフ・条件分岐・戊闘開始・マップ転送を䞊べる
  4. ノベル偎からは call ブロックで RPG シヌンを呌び出し、戻っおくる

蚭蚈思想

「RPG ツクヌル MV/MZ ず同等の機胜を提䟛し぀぀、内郚蚭蚈は別物」 — これが kaedevn の RPG の立ち䜍眮です。同じような䜜品䜓隓を䜜れるように倖芋は揃え぀぀、以䞋 4 ぀の本質で根本的に異なるアプロヌチを採っおいたす。

1. すべおが Entity、参照はすべお Relation ずしお明瀺

ツクヌルでは Actor / Skill / Enemy / Item が固定スキヌマのテヌブルに入り、盞互参照は数倀 IDで衚珟されたす「倉数 #42」「スキル #5」等。@kaedevn/entity-graph はこれをグラフ構造に眮き換えたした。

// packages/entity-graph/src/types/entity.ts
export interface Entity {
  id: string;
  type: string;           // "actor" / "skill" / "map_event" / "variable" ...
  properties: Record<string, unknown>;
}

export interface Relation {
  sourceId: string;
  targetId: string;
  type: string;           // "learns" / "writes" / "reads" / "unlocks" ...
}

アクタヌもスキルもマップむベントも倉数も、すべお同じ Entity 型。䟝存関係は Relation ずしお明瀺的に蚘録されたす。

// apps/rpg-studio/src/sampleData.ts
createRelation(hero.id, slash.id, "learns"),       // Hero が Slash を芚える
createRelation(oldMan.id, questFlag.id, "writes"), // 老人むベントが questFlag に曞き蟌む
createRelation(gateGuard.id, bossFlag.id, "reads"), // 門番が bossFlag を読む

→ 「この倉数、どこから曞き蟌たれるの」「このスキル、誰が䜿える」が store.getRelated(id, type, dir) でク゚リできる。ツクヌルでは grep するしかなかった䟝存関係の可芖化が、ビルトむンで成立したす。

2. Schema 駆動 UI゚ディタが自動生成される

ツクヌルでは新プロパティ䟋アクタヌに「職業」を远加を入れるず、editor.js / database.json / game.js を党郚曞き換える必芁がありたす。

kaedevn では スキヌマ定矩を 1 か所倉えるだけ で、TableView / DetailView / PropertyEditor / CommandEditor がすべお自動察応したす。

// packages/entity-graph/src/types/schema.ts
export interface EntitySchema {
  type: string;
  properties: PropertyDef[];       // UI はここから生える
  allowedRelations: RelationDef[]; // 「Actor は Skill に learns する」等
}

3. 型安党なむベント DSL

ツクヌルのむベントコマンドはプリミティブな value オブゞェクトの配列で、パラメヌタの型チェックは実行時たで無い。kaedevn はこれを TypeScript の discriminated union で曞き盎したした。

// apps/editor/src/types/eventCommand.ts
export type EventCommand =
  | ShowTextCommand
  | ConditionalBranchCommand
  | ControlVariablesCommand
  // ... 21 çš®
  ;

export type ConditionalBranchCommand = {
  type: 'conditional_branch';
  condition: BranchCondition;
  thenCommands: EventCommand[];     // 再垰型ネスト無制限
  elseCommands?: EventCommand[];
};
  • 各コマンドが独立した型IDE 補完・型怜査が効く
  • 条件匏も union 型{ type: 'switch'; ... } | { type: 'variable'; ... }
  • thenCommands が再垰的な EventCommand[] なので、ネストに制限なし

4. 静的解析・バランスシミュレヌタがビルトむン

ツクヌルには「未䜿甚倉数を怜出」「ダメヌゞ蚈算匏を事前評䟡」ずいったツヌルは基本ありたせん。プラグむンで頑匵る領域でした。

kaedevn の packages/entity-graph にはこれがパッケヌゞ機胜ずしお内蔵されおいたす

  • analysis/staticAnalyzer.ts — 未䜿甚倉数、未曞き蟌み倉数、埪環呌び出しを怜出
  • analysis/balanceAnalyzer.ts — ダメヌゞ公匏をパヌスしお「ワンショットキル」「0 ダメヌゞ」のバグを怜出
  • analysis/impactGraph.ts — 遞んだ゚ンティティから BFS で 3 段階の圱響範囲を可芖化

Graph ビュヌ はこの impact graph をリアルタむムで力孊挔算グラフずしお衚瀺するためのビュヌ — ツクヌルには存圚しない抂念です。


比范衚ざっくり

芳点RPG ツクヌル MV/MZkaedevn
䜜れるゲヌムRPG 単独ノベルは別ツヌルノベル × RPG を 1 プロゞェクトで
デヌタ構造固定テヌブル + 数倀 ID 参照Entity + Relation任意の type
゚ディタ UI蚀語でハヌドコヌドSchema から自動生成
むベントコマンドプリミティブな value 配列TypeScript discriminated union
条件匏文字列ID ベヌス型付き unionswitch / variable / item ...
倉数远跡grep 頌みRelation ク゚リで即時
バランス怜蚌プラグむン任せコア機胜balanceAnalyzer
䟝存可芖化なしGraph ビュヌimpact graph
スクリプト拡匵Ruby / JavaScript を自由に曞くKaede ScriptKS / KSCの DSL 経由

蚭蚈のトレヌドオフ

埗たもの倱ったもの
✅ 䟝存関係がすべお explicit で解析可胜❌ ツクヌルナヌザヌが慣れた「数倀 ID」の手軜さが枛る
✅ スキヌマ倉曎の圱響範囲が最小❌ スキヌマ定矩のメタデヌタが増えお孊習コストがある
✅ 型安党なむベント DSL❌ TypeScript の union 型に慣れが芁る
✅ 静的解析で事前にバグ怜知❌ 「たず動かす」たでの実装量が倚い

なぜ完成に時間がかかっおいるか

䞊蚘の蚭蚈ぱディタ偎 UIrpg-studioずバック゚ンドentity-graphの䞡方を同時に䜜り蟌む必芁があり、既存ツクヌルの fork より劎力が倧きくなっおいたす。具䜓的には

  1. バック゚ンドentity-graphは 67 tests all-pass の品質で安定
  2. フロント゚ンドrpg-studioの各機胜Database / Map / Events / Graphは個別に動くが、「ナヌザヌが䜜ったゲヌムデヌタを読み蟌んで実際にプレむできる」たでの配線Phase 1-3が未完
  3. fileStorageAdapter.ts が Node fs を䜿っおいるためブラりザで動かない → 2026-04-21 解消枈みバレル export から陀倖し、ブラりザ偎は LocalStorageAdapter のみ読み蟌む構成に

䜜者公開ぞの次のハヌドルは「゚ディタで䜜ったゲヌムデヌタを実際にプレむできる画面」の完成Phase 1-3です。


関連資料

Ad: inContent (336x280)
Ad: stickyBottom (728x90)
kaedevn - ノベルゲヌムを䜜れるプラットフォヌãƒ