‹ マニュアルへ戻る

変数とシナリオ分岐の徹底解説

好感度やパラメータを使って物語を変化させよう!変数の仕組みと分岐パターンの使い方ガイド

目次

1. 「変数」とは?

ノベルゲームにおける「変数」とは、プレイヤーの選択によって変化する数値を記録しておく「透明なスコアボード」のようなものです。

本ツールでは、最大3つの変数(内部名:charaA, charaB, charaC)があらかじめ用意されており、キャラクターの好感度や「体力・筋力・知力」といったパラメータとして自由に使用できます。

内部キー デフォルト表示名 用途の例(恋愛ゲーム) 用途の例(育成・RPG)
charaA ほのか ほのかの好感度 体力 (HP)
charaB 裕也 裕也の好感度 筋力 (STR)
charaC 三月 三月の好感度 知力 (INT)
ほのかのワンポイントアドバイス!
ほのか
プレイヤーがゲーム中で選んだ選択肢に合わせて数値がプラスやマイナスに動いて、ゲーム画面左上の表示もリアルタイムで更新されるよ!

2. 選択肢で数値を増減させる方法

シナリオファイル(scenario.txt)の @choice コマンド内で favor:変数名:数値 を記述すると、選択肢が選ばれた瞬間に指定した変数が加減算されます。

記述ルール

「ボタンの文章|next:移動先ラベル|favor:対象キー:変化量」の順で記述し、複数選択肢は「/」で区切ります。

# ほのかの好感度を+10、裕也の好感度を+10、三月の好感度を+10する選択肢の例
@choice: ほのかと一緒に帰る|next:talk1|favor:charaA:10 / 裕也を部活に誘う|next:talk1|favor:charaB:10 / 三月と図書室へ行く|next:talk1|favor:charaC:10
亮のワンポイントアドバイス!
亮
このツールの変数は「数値の加算・減算」しかできないから気を付けてくれ。
変数に文字を代入して「名前変換機能」として使ったり、「クイズの解答をプレイヤーに入力させる」といった使い方はできないんだ。

3. 3つの分岐パターンと書き方

蓄積された変数の値に応じて物語を変化させる @branch コマンドには、作品のゲーム性に合わせて選べる3つの分岐モードがあります。

パターン1:個別判定モード(type:single)

特定の変数の数値が「指定した値以上かどうか」を判定します。好感度によってキャラの個別ルートに分岐する場合などに最適です。

# 裕也(charaB)の好感度が 10 以上なら yuya_end へ、未満なら normal_end へジャンプ
@branch: type:single|chara:charaB|border:10|target:yuya_end|else:normal_end

パターン2:最多獲得判定モード(type:max)

3人の中で最も数値が高い変数の個別ルートへ自動的に分岐します。マルチキャラのノベルゲームに最適です。

# 最も好感度が高いキャラの各種エンド(A_route / B_route / C_route)へ自動分岐
# 全員の好感度が 0 以下の場合は normal_end へジャンプ
@branch: type:max|else:normal_end

※ 最多獲得判定(type:max)のルール

type:max を使用する場合、分岐先に合わせてシナリオ内に固定ラベル(@label: A_route 、@label: B_route、@label: C_route )を用意しておくだけで自動判別されます。同値の場合はA>B>Cの順番で優先されます。

パターン3:複合条件判定モード(type:multi)

「体力(charaA)が10以上、かつ知力(charaC)が10以上」のような複数条件を同時にクリアしているかを判定します。隠しルートや育成・ステータス系のゲームに最適です。

# charaA が 10 以上 かつ charaC が 10 以上の条件を満たせば true_end へ
@branch: type:multi|cond:charaA>=10,charaC>=10|target:true_end|else:normal_end
梓のワンポイントアドバイス!
梓
分岐のコマンドによく出てくるtrue は「その条件を満たしている 」って意味で、else は「その条件を満たしていない」って意味だよ!

4. 画面上の表示名を変える方法

index.html のJavaScript内にある FAVOR_NAME_MAP を編集することで、画面左上に表示される名前を自由に変更できます。

編集場所(index.html 内)

// 画面表示用ラベルのマッピング設定
const FAVOR_NAME_MAP = {
  charaA: "ほのか",
  charaB: "裕也",
  charaC: "三月"
};

// 【育成・RPG風に変えたい場合の例】
// const FAVOR_NAME_MAP = {
//   charaA: "体力",
//   charaB: "筋力",
//   charaC: "知力"
// };
ほのかのワンポイントアドバイス!
ほのか
ここを書き換えるだけで、セーブスロットのプレビューや左上のインジケーター、デバッグツールに表示される文字が一括で変更されるよ!シナリオ側の指定(charaA など)はそのままで大丈夫だよ。