学園祭が近づいてきて、編集室作業が活発になってきましたので、スクリプトゼミを再開します。初歩的な内容に戻って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について解説します。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。