好感度やパラメータを使って物語を変化させよう!変数の仕組みと分岐パターンの使い方ガイド
ノベルゲームにおける「変数」とは、プレイヤーの選択によって変化する数値を記録しておく「透明なスコアボード」のようなものです。
本ツールでは、最大3つの変数(内部名:charaA, charaB, charaC)があらかじめ用意されており、キャラクターの好感度や「体力・筋力・知力」といったパラメータとして自由に使用できます。
| 内部キー | デフォルト表示名 | 用途の例(恋愛ゲーム) | 用途の例(育成・RPG) |
|---|---|---|---|
charaA |
ほのか | ほのかの好感度 | 体力 (HP) |
charaB |
裕也 | 裕也の好感度 | 筋力 (STR) |
charaC |
三月 | 三月の好感度 | 知力 (INT) |
シナリオファイル(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
favor:charaA:10 (ほのかの数値に 10 を足す)favor:charaB:-5 (裕也の数値から 5 を引く)favor:10 と書いた場合は、自動的に charaA に加算されます。
蓄積された変数の値に応じて物語を変化させる @branch コマンドには、作品のゲーム性に合わせて選べる3つの分岐モードがあります。
type:single)特定の変数の数値が「指定した値以上かどうか」を判定します。好感度によってキャラの個別ルートに分岐する場合などに最適です。
# 裕也(charaB)の好感度が 10 以上なら yuya_end へ、未満なら normal_end へジャンプ
@branch: type:single|chara:charaB|border:10|target:yuya_end|else:normal_end
type:max)3人の中で最も数値が高い変数の個別ルートへ自動的に分岐します。マルチキャラのノベルゲームに最適です。
# 最も好感度が高いキャラの各種エンド(A_route / B_route / C_route)へ自動分岐
# 全員の好感度が 0 以下の場合は normal_end へジャンプ
@branch: type:max|else:normal_end
type:max を使用する場合、分岐先に合わせてシナリオ内に固定ラベル(@label: A_route 、@label: B_route、@label: C_route )を用意しておくだけで自動判別されます。同値の場合はA>B>Cの順番で優先されます。
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 は「その条件を満たしていない」って意味だよ!
index.html のJavaScript内にある FAVOR_NAME_MAP を編集することで、画面左上に表示される名前を自由に変更できます。
// 画面表示用ラベルのマッピング設定
const FAVOR_NAME_MAP = {
charaA: "ほのか",
charaB: "裕也",
charaC: "三月"
};
// 【育成・RPG風に変えたい場合の例】
// const FAVOR_NAME_MAP = {
// charaA: "体力",
// charaB: "筋力",
// charaC: "知力"
// };
charaA など)はそのままで大丈夫だよ。