分岐(ブランチング)とは|プレイヤーの選択によって、物語や展開が枝分かれする構造
言葉の意味
分岐(ブランチング)は、読む人や遊ぶ人が選んだ選択肢によって、物語がそれぞれ別の展開に枝分かれすることです。
たとえば Ren'Py(ノベルゲームを作るためのエンジン)でも、この意味で使われています。選択肢を出す命令に、文字列と、そのあとに続く内容の組を並べておくと、選ばれた文字列に対応する内容が実行されます。
選んだあとに別の場所へ移る書き方もあります。Ren'Py では、menu 文の選択肢が選ばれたときに実行される文のかたまりに jump 文を書くと、label 文で付けたラベルの位置へ制御が移り、そのラベルのあとの文が実行されます。ink では、物語を knot(名前を付けた内容の区切り)に分け、選択肢の行に ->(divert arrow。ある knot から別の knot へ物語を移す矢印)を書いて、選ばれたあとに別の knot へ物語を移します。
ティラノスクリプトのタグにも、テキストをリンク化して選択肢の表示として使える [link] タグと、指定シナリオファイルの指定ラベルに移動する [jump] タグがあります。
選んだ結果を変数に残して、あとの場面で分岐させる書き方もあります。Ren'Py で、選んだ結果を変数に入れて、あとで使う流れの例は次のとおりです。
- label start の前で、default 文を使って変数を初期化します。たとえば default book = False と書くと、変数 book は、設定されていないことを意味する False で始まります。
- 選ばれた道のラベルで、変数に True を代入します。たとえば $ book = True と書きます。行頭にドル記号($)が付いた行は、Python の文として解釈されます。
- あとの場面で、if 文を使って変数を調べます。条件が true なら、その if 文のあとのかたまりが実行され、そうでなければ飛ばされます。
if 文には、0個以上の elif 節と、省略できる else 節を付けられます。menu 文の選択肢にも if 節を付けられ、その式が true のときだけ、その選択肢が表示されます。たとえば、変数 drank_tea が true のときだけ表示される選択肢を置けます。ただし、config.menu_include_disabled が True のときは、条件を満たさない選択肢が無効なボタンとして表示されます。
ティラノスクリプトでは、[eval] タグで変数に値をセットし、[if] タグで条件分岐します。[eval] タグは、exp に指定した JavaScript の文を実行し、主に変数に値をセットする際に活用できます。[if] タグは、exp に指定した JavaScript の式を評価し、結果が true なら、[elsif]・[else]・[endif] のいずれかまでにある文章やタグを実行します。false なら、次の [elsif]・[else]・[endif] のいずれかに移動します。
ink では、選択肢で分かれた流れを、gather(分かれた流れを1つに戻す合流点。- で書きます)で1つに戻せます。また、VAR 文で定義するグローバル変数(物語のどこからでも読み書きできる変数)を調べて、選択肢の表示を制御できます。
ノベルゲームを作るソフトとして、ティラノスクリプトに対応するティラノビルダーの案内は、プログラミングできなくてもゲームは作れる?にあります。
混同されやすい言葉
物語の分岐と、バージョン管理のブランチは別のものです。前者は遊ぶ人の選択で物語が枝分かれすることを指し、後者の branching は、開発の本流から分かれて、その本流を乱さずに作業を続けることを指します。
次に読む
情報源
- Ren'Py — Quickstarthttps://www.renpy.org/doc/html/quickstart.html確認日 2026-10-23
- Ren'Py — In-Game Menushttps://www.renpy.org/doc/html/menus.html確認日 2026-10-23
- Ren'Py — Labels & Control Flowhttps://www.renpy.org/doc/html/label.html確認日 2026-10-23
- Writing with ink(inkle)https://github.com/inkle/ink/blob/master/Documentation/WritingWithInk.md確認日 2026-10-23
- ティラノスクリプト — タグリファレンスhttps://tyrano.jp/tag/確認日 2026-10-23
- ティラノビルダー — 公式トップhttps://b.tyrano.jp/確認日 2026-10-23
- Ren'Py — Conditional Statementshttps://www.renpy.org/doc/html/conditional.html確認日 2026-10-23
- Git — Branches in a Nutshellhttps://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell確認日 2026-10-23