【カレッジ】スクリプトゼミ #7「LevelとSegment」

学園祭が近づいてきて、編集室作業が活発になってきましたので、スクリプトゼミを再開します。まずは、初歩的な内容に戻ってLevelとSegmentについてのお話しです。

LevelとSegmentは、キャラフレのスクリプトを書き始めると必ず目にする単語です。しかし、他のプログラム言語やスクリプト言語では、似たような概念をあまり目にすることがありません。一番近いのは、BASIC言語の行番号であったり、Gotoコマンドの飛び先に相当するラベルみたいなものでしょうか。
なぜこのようなキャラフレオリジナルの構文になったかというと、キャラフレのスクリプトがプログラミング言語に影響を受けたものではなく、ADVゲームのシナリオを、読みやすい形で実装することを目的としているからです。
つまり、Levelは「章」にあたり、Segmentは「節」に相当します。
そういう意味では、最初はChapterにしようか、Sectionにしようか迷いもしたのですが、シナリオとはいえゲームシナリオを大前提としていますので、ストーリー進行にともないLevelアップしていくという意味あいのLevel。そして、シナリオ分岐やマルチストーリー、ザッピングなどでシナリオの一部分をひとつのブロックとして考えることが多いので、小分岐に相当するブロックをSegmentと呼ぶことにしました。

【7-1】Levelは大分岐を管理する

スクリプトの設計思想としては、Levelは大分岐を管理するものと想定しています。一直線なシナリオの場合は、一章…二章…三章と進むにつれて、Level:1、Level:2、Level:3と番号を振っていきますが、途中でシナリオの変更等により、番号の振り直しの手間が軽減されるように、Level:10、level:20、Level:30と振っていくのが慣例です。
BASICの行番号が10、20、30と振られるのと似た慣例ですね。

マルチエンディングの場合は、Level:10、Level:20、Level:30と進んだあと、Level:40に進むルートとLevel:100に進むルートなどを用意したりします。もちろんこの場合も、100を使うのも200を使うのも自由です。自分と共同作業相手がわかりやすいようにつけてください。

【7-2】Segmentは小分岐をあらわす

ストーリーの流れが変わらず、セリフ違いや、シチュエーション違いなど、ちょっとした分岐を管理するのにSegment番号を使用します。Segment番号も、10、20と飛ばして使ったり、110と120に小分岐したあと、200に合流して、210と220に小分岐して300に合流などわかりやすいように番号を振ります。

ここでLevelわけをすると便利なことがあります。Segment番号はLevel内ローカル。つまり、あるレベルで10、20、30と使っておいて、別のレベルで10、20、30と使うことが許されます。

Segmentによる分岐が多くなりすぎて管理しきれなくなったら、Levelを分けるのも一つの手として覚えておきましょう。

【7-3】任意のSegmentへジャンプする

Segment番号は、ジャンプ先のラベルとしての意味をもっています。

コマンド
->[Level:番号-,]Segment:番号
//Level番号を省略した場合は、同レベル内のSegment番号へ分岐する

 

記述例1
->Segment:110
->Level:10-Segment:20

→(矢印)と読めるような表記になっていますが、-(マイナス)と>(大なり)で記述します。
実はあまり知られていませんが、飛び先のSegment:とLevel:の表記は省略可能です。

記述例2
->110
->10-20

ただ、サンプルでもあまり見かけないかもしれませんね。タイピング量は増えますが、わかりやすくするために、記述例1の書き方の方が多く使われているようです。

今回は余談が多くなってしまいました(笑)次回はmenuについて解説します。

 

 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください