← ドキュメント一覧

バトルシステムガイド

kaedevn には、ノベル作品に RPG 風のバトルを組み込めるターン制コマンドバトルシステムが搭載されています。外部依存ゼロの独立パッケージとして実装されており、シード付き乱数による決定論的な結果再現が可能です。

概要

ターン制のコマンドバトルで、プレイヤーは毎ターン行動(攻撃・スキル・回復など)を選択して敵と戦います。物語の中にバトルイベントを自然に挿入でき、勝敗によってシナリオを分岐させることも可能です。

バトルの構成要素

アクター(味方キャラクター)

  • HP number — 体力。0になると戦闘不能
  • MP number — スキル使用に消費するポイント
  • ATK number — 攻撃力(ダメージ計算に使用)
  • DEF number — 防御力(被ダメージ軽減)
  • SPD number — 行動順に影響する素早さ

エネミー(敵キャラクター)

味方と同じパラメータを持ちます。敵の行動は内蔵 AI(simpleAi)が自動で選択します。

スキルシステム

  • 攻撃スキル — ダメージを与える。パラメータ: power(威力)、MP コスト
  • 回復スキル — HP を回復する。パラメータ: power(回復量)、MP コスト
  • バフ / デバフ — ステータスを増減する。パラメータ: 対象ステータス、持続ターン
  • 状態異常スキル — 毒・麻痺・スタンなどを付与する。パラメータ: 付与確率、持続ターン

ダメージ計算

ダメージは以下の要素で計算されます:

  • 攻撃者の ATK
  • 防御者の DEF
  • スキルの power(威力倍率)
  • 命中判定(checkHit

状態異常

  • 毒(poison) — 毎ターン HP が減少。持続: 数ターン(duration で指定)
  • 麻痺(paralyze) — 一定確率で行動不能。持続: 数ターン
  • スタン(stun) — 1ターン行動不能。持続: 1ターン

シナリオへの組み込み

ブロック編集

エディタで「battle」ブロックを追加し、以下を設定するだけです:

  • バトル ID
  • 勝利時のジャンプ先ページ
  • 敗北時のジャンプ先ページ

KSC での記述例

// バトルを開始し、勝敗でジャンプ先を分岐
battle("boss_battle_01", "victory_scene", "defeat_scene")

*victory_scene
#hero
「やった、勝ったぞ!」
#

*defeat_scene
#hero
「くっ...やられた...」
#

battle() コマンドは3つの引数を取ります:

  1. バトルID: 敵構成などの定義を参照する ID
  2. 勝利時ジャンプ先: 勝ったときに移動するラベル
  3. 敗北時ジャンプ先: 負けたときに移動するラベル

KS での記述例

@battle id="boss_battle_01" win="victory_scene" lose="defeat_scene"

バトルの流れ

  1. バトル開始 → バトル画面に切り替わる
  2. プレイヤーが味方キャラクターの行動を選択
  3. 素早さ(SPD)順に全キャラクターが行動を実行
  4. ターン終了 → 状態異常の処理(毒ダメージ、麻痺解除判定など)
  5. 勝利条件(敵全滅)または敗北条件(味方全滅)を判定
  6. 結果に応じたラベルへジャンプし、シナリオに復帰

バトルのシミュレーション

バトルエンジンには simulate() 関数が用意されており、バトル全体を一気にシミュレーションすることもできます。シード付き乱数を使用しているため、同じ入力に対しては常に同じ結果が再現されます。

主要な関数:

  • simulate(state, actions) — バトル全体のシミュレーション
  • applyAction(state, action) — 1アクションの適用
  • calcDamage(attacker, defender, skill) — ダメージ計算
  • checkHit(attacker, defender) — 命中判定
  • checkVictory(state) — 勝敗判定(win / lose / escape / ongoing)
  • simpleAi(enemies, actors) — 敵 AI の行動選択

マルチプラットフォーム対応

バトルパッケージは外部依存ゼロで、純粋な TypeScript ロジックのみで構成されています。Web(packages/web)でバトルシーンの描画に使用されるほか、ネイティブエンジンへの移植も容易です。

注意事項

  • バトルシステムは現在開発中の機能であり、今後パラメータやスキルの拡張が予定されています
  • バトルデータ(敵構成・スキル定義)の設定方法は今後のアップデートで改善されます
  • バトルログの記録機能が搭載されており、デバッグや演出の微調整に活用できます

関連ドキュメント

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