サウンドノベルプレーヤー 「のべ〜る」

【ゾウリムシでもわかるサウンドノベル制作講座】



■ 第01回:基礎編@ 最低限のノベル

くににん「まずは、最低限の仕様でノベルを作ってみよう。音も鳴らない、絵も表示され
ないシンプルなものだ。そのかわり、激しく簡単だ。」
フィー「まずは、文章(テキスト)が必要ですね」
くににん「素材は、昔の作品 ”長野旅行記” から冒頭の部分を流用することにしよう。
内容はこんなものでいいだろう」


■それはまたしても突然に決まったのさ♪

それは98年の10月も半ば・・・・私の勤務する某半導体機器メーカーの
技術部門のことであった。そう・・・・毎度のことながら金曜日の夕刻・・・・
魔の時間帯だ。

隣の課の上司「長野が大変だという話は聞いているかね」
私「・・・・その件なら、既に修正解を計算して現地に送ってありますが」
隣の課の上司「どうもうまく行かぬいらしい。なぜだろう」

私「あの旧型マシンを手直しで再生というのは元から無理があるのでは」
隣の課の上司「泣く子とお客には逆らえぬ。現地へ行ってくれるかね」
私「・・・・今からですか」
隣の課の上司「無論だ。」

・・・・重苦しい沈黙。
ああ、こうやって何度週末が潰れてきたことか。
さすがに毎回これではかなわない。
平和な休日のために、ささやかな抵抗を試みてみよう。

私「あいにく本日は直属の上司がおりませんので私だけの判断では」
とても偉い上司「あー、その件は私が了解した。行ってくれ給ゑ」
私「・・・・あううう」

■長野への道

そんな訳で長野県に向かうこととなった。それも金曜日、土曜日と半分徹夜に
近い仕事を終えた翌日、日曜日に・・・・。普段でも社内は社内で忙しいというのに、
休みもなく翌週の仕事へと突入してしまう。これで「働く喜び」とやらを感じる
人間がいたらそれはマゾに違いないと思うのだが、ここではあまり追求しない
ことにしておこう。
なにしろ、壁にミミーちゃん、障子にメアリーちゃんだ。
日本国憲法に詠われた基本的人権とやらは、その及ぶ範囲にムラがあるのだ。

【とりあえずここまで】


フィー「なんというか・・・普通の文章ですね。」
くににん「Windows付属のメモ帳で書いた、普通のテキストだよ。サウンドノベルだからと
いって、特殊な編集ツールはいらない。ただし、次の半角文字は制御用に
予約してあるから使えない制限がある。これだけ注意してもらえれば、あとは
自由に文章を書いていいんだ」

【文章としては使えない半角文字】

#\{/}*半角カナ

【特別な文字】

;改行文字(画面には表示されず、改行動作になります)

TABTABは無視されます

くににん「この文章を "のべ〜る"で表示するには、最低限、冒頭と末尾に次のような
記述をすればいい。記述を追加したものを sample.txt という名前で保存
しておこうか」

【冒頭】*TOP:

【末尾】#halt


【sample.txt】

*TOP:
■それはまたしても突然に決まったのさ♪

それは98年の10月も半ば・・・・私の勤務する某半導体機器メーカーの
技術部門のことであった。そう・・・・毎度のことながら金曜日の夕刻・・・・
魔の時間帯だ。

隣の課の上司「長野が大変だという話は聞いているかね」
私「・・・・その件なら、既に修正解を計算して現地に送ってありますが」
隣の課の上司「どうもうまく行かぬいらしい。なぜだろう」

私「あの旧型マシンを手直しで再生というのは元から無理があるのでは」
隣の課の上司「泣く子とお客には逆らえぬ。現地へ行ってくれるかね」
私「・・・・今からですか」
隣の課の上司「無論だ。」

・・・・重苦しい沈黙。
ああ、こうやって何度週末が潰れてきたことか。
さすがに毎回これではかなわない。
平和な休日のために、ささやかな抵抗を試みてみよう。

私「あいにく本日は直属の上司がおりませんので私だけの判断では」
とても偉い上司「あー、その件は私が了解した。行ってくれ給ゑ」
私「・・・・あううう」

■長野への道

そんな訳で長野県に向かうこととなった。それも金曜日、土曜日と半分徹夜に
近い仕事を終えた翌日、日曜日に・・・・。普段でも社内は社内で忙しいというのに、
休みもなく翌週の仕事へと突入してしまう。これで「働く喜び」とやらを感じる
人間がいたらそれはマゾに違いないと思うのだが、ここではあまり追求しない
ことにしておこう。
なにしろ、壁にミミーちゃん、障子にメアリーちゃんだ。
日本国憲法に詠われた基本的人権とやらは、その及ぶ範囲にムラがあるのだ。

【とりあえずここまで】
#halt


フィー「この *TOP: とか #halt とかいう記号は何ですか?」
くににん「冒頭のはラベル・・・つまり ”ここから始まる” というマークだね。べつに *TOP: で
なくても、* で始まり : で終わる32文字以内の英数字なら何でもいい。末尾の
#halt は "ここで終わり" というコマンドだ」
フィー「すると、プログラムはこの文書を読み込んで、*TOP: のところから表示を始めて、
#halt で終了するわけですね」
くににん「正確には、文書の表示の前にいくつかのステップがある。のべ〜るの txt フォルダ
を見ると、config.txt というファイルがあるだろう」
フィー「あ、これですね」



くににん「config.txt を開いてみると、↓こんなふうになっている。
フィー「なんだか説明文みたいな記述もみえますけど・・・」
くににん「
## から行末まではコメント文で、のべ〜るのプログラムはこの部分を無視する。
ちょっとした説明やメモを埋め込むために使うのだけれど、いまは気にしなくて
いい」
フィー「コマンド・・・つまり命令文は # に続いて書く決まりなんですね」
くににん「そう。こういう目印に使うために、半角文字のいくつかを使用制限しているんだ」


【config.txt】

#set_font_size 22##フォントサイズ
#set_text_area 20,20,620,460
##テキスト表示エリア
#set_text_wait 15
##テキストウェイト
#set_text_color 255,255,255,30,10,10
##テキストの色(文字色RGB 影色RGB)
#g_load BG back_01.jpg
##デフォルト背景をBG面に読む
#fade_in
##フェードイン
#delay 500
##待ち
#sp
#file_change sample.txt,*TOP: ##ここで本文のラベル *TOP: に飛びます

#halt
##念のために終了コマンド(↑ジャンプに失敗したときの対策 ^^)


くににん「のべ〜るは、起動するとこの config.txt の内容を最初に実行する。
文字
の大きさとか色、文書を表示するエリア、背景画像など基本的な設定を
して、
最後に別のファイル・・・つまりサウンドノベルの本体データに処理を引き継ぐ。
細かい動作内容は、まだ知らなくていい」
フィー「引き継ぐというのは・・・」
くににん「ノベルの文章を書いたテキストを読みに行くんだよ。そのときに、テキストの
どこから読み始めるかというマークが必要になる。さっき
文章の先頭に書いた
*TOP: というのが、そのマークさ」
フィー「なるほどー」
くににん「その処理を引き継ぐ部分を書き換えてみよう。config.txt の #file_change
書いてある部分に、ファイル名 , ラベル の順で引き継ぎ先を書き加えて
やれ
ば良い。ノベルの文章本体が
sample.txt で、冒頭のラベルが *TOP: なら
次のようにすればいい」


#file_change sample.txt,*TOP


フィー「感覚としては、リンクを張るようなもの・・・という理解でいいんですか」
くににん「まあそうだね。さあ、そうしたら"のべ〜る"を起動してみよう。もちろん本文テキ
ストの sample.txt はフォルダ txt に入れておくことを忘れないように」




フィー「あっ、表示されました!」
くににん「うむ、うまくいったようだね」
フィー「でも・・・なにか変じゃありません? 改行も段落もなくて、画面の最後まで文
字がびっしりですけど」

くににん「いや、これでいいんだ。ベタ表示になるのは制御コマンドを何も書いていない
からだよ。必要に応じてこれからお化粧をしていけばいいんだ。」
フィー「ということで、次回に続きます〜」




【今回のまとめ】

1) ノベルの文章は普通のテキストを用意する。

2) テキストは、冒頭にラベル *TOP: 、末尾に #halt を書き加える

3) config.txt から #file_change ファイル名, ラベル でリンクを張ると、プログラム
起動後、初期化処理に続いてテキストが実行される




■Coffee Break



くににん「ふう。いきなり初回から休憩というのもナニだけれど、Coffee Break といこう」
フィー「この記事、読んでくれる人ってどのくらいいるんでしょうね」
くににん「いきなり核心を突いているけど、それが問題だな〜(爆)」
フィー「ノベルツールとか、ADVツクールみたいなソフトってネットを検索するといろいろ
出てきますよね。・・・後発として "のべ〜る" の機能って、どうなんですか?」

くににん「たぶん、大したことは無いんじゃないかな」
フィー「・・・そ、そんなぁ〜」
くににん「もともとプログラミングの素材として作ったものだし、複雑な機能を載せていた
らソースも読み難くなって、講座のほうが破綻していただろう。これはこれでいい
のさ。目的に対して、それに応じた結果が出ているだけだよ」
フィー「なにかメリットはないんですか?・・・じゃないと、せっかくこのページを見てくれた
人が、このさきの記事を読まずに帰っちゃいますよう〜」
くににん「メリットはあると思っているよ」
フィー「それは?」
くににん「単純でとっつきやすいってことさ」
フィー「それってメリットなんですか・・・」
くににん「重要なポイントさ。たとえば、この解説の第一回を読んで、どう思う?実質、
テキスト文章の頭と尻尾にマーキングしたのみだけど、ちゃんとプログラムで
"再生" できるだろう?」
フィー「まあ、たしかに・・・あれを"再生"というのであれば」
くににん「このツールで扱う文章は、あくまでも普通のテキスト文書だ。そこに、絵を表示
しろとか、音楽を演奏しろというコマンドを所々に追加すれば、それでサウンド
ノベルになる。これ以上簡単な仕様はない。」
フィー「つまり、敷居の低さで勝負ということですね。」
くににん「べつに勝負にこだわる必要はないと思うけどなぁ。"市販ソフトのようなもの"
を作りたい人は、それなりのツールを使えばいい。それだけの話だよ。我々は
むしろ、開発講座の副産物としてできたノベルプレーヤを公開することで、
お手軽に創作の楽しさのようなものを提供できれば良い・・・そのくらいの姿勢
でいいと思う。それ以上を望むには、まだまだ精進が足りないだろう」
フィー「創作の楽しさですか・・・いい言葉ですね。ということで、ずいぶん大きな風呂敷
を広げたところで、そろそろ休憩終了にしましょうか」
くににん「うむ、そうしよう」
フィー「使ってくれる人、いるといいですね」
くににん「お前が言うと皮肉にしか聞こえないんだが・・・(´д`)」