本サイトにおけるビジュアルノベルは、全てテキストによって制御されます。このテキストをスクリプトと呼びます。
ビジュアルノベルの作成方法は、このテキストをどのように入力・管理するかによって、現在3種類用意されています。
一つは手順が少なく単純な方法です。 こちらのページのフォーム にスクリプトを入力し、フォーム下の確認するボタンを押してください。
この方法は簡単な手順でスクリプトを再生できますが、作成したスクリプトを保存したり共有したりすることができません。
もう2つは、 github のテキスト共有サービス gist を使用する方法です。
gistを使用するには、githubのアカウントを作成し、ログインした後 gistのページ にアクセスして新規のテキストを作成してください。スクリプトを入力したら、保存して、gistのurlを以下のフォームにコピーして確認するボタンを押せば、別のタブが開き、スクリプトが再生されます。
gist側を編集して、再生タブ側をリロードすれば、編集後のスクリプトが再生されます。
ホーム にある サンプルのビジュアルノベル は、この方法で作成しています。制御しているスクリプトは、こちらのgist です。
作成した作品を共有したい場合は、作品を再生しているタブのurlをそのままTwitterなどに貼り付けてください。
githubのアカウントを持っていなくても、テンポラリなgistを作ることもできます。githubにログインせずに gist にアクセスして、スクリプトを入力し、保存してください。その後urlを上記のフォームにコピーして、確認するボタンを押せば、別のタブが開き、スクリプトが再生されます。
ただしこの方法で作成したgistは、後で編集することができないという不便な点があります。便利に使用するには、githubのアカウントを作成するのが良いです。
スクリプトは、単にセリフを表示するだけではなく、ウェイトを入れたり、改ページを入れたり、キャラクターの絵を変更したり、さまざまな機能を持っています。このための記法について解説します。
このスクリプト記法は、ビジュアルノベルを簡単に記述するために開発されました。高度な機能はなく、拡張性も低いですが、仕組みが単純で、記述量が少なくなるように作られています。この記法を、以下ではMVN記法と呼びます。
MVN記法は、@で始まるコマンド行と、そのままメッセージボックスに表示されるテキスト行で構成されます。コマンド行は、例えば以下の様なものです。
@new_page, 3
このコマンドは、メッセージボックスに表示されているテキストを消して、新しいページにするというコマンドです。,(カンマ)の横に付いている数値は、テキストを消す際にどのくらいの時間をかけてフェードアウトするかを示す数値です。MVN記法においては、時間の単位は全て1/30秒を1単位とします。例えば、上のコマンドの場合、3/30、つまり1/10秒かけてフェードアウトします。引数には数値ではなく文字列を指定することもあり、この場合""(セミコロン)で囲って指定します。
また、各コマンドの引数には、デフォルト値を設定することができます。(このデフォルト値の設定もコマンドで行います。)
@new_page
の第1引数のデフォルト値は、初期状態で3に設定されていますので、上記のコマンドは
@new_page
と記述しても同じ効果です。
テキスト行は、例えば以下の様なものです。
こんにちは!初音ミクです。
このような行は、メッセージボックスにそのまま表示されます。長くてメッセージボックスの右端を越えてしまう行は折り返されます。改行を入れて、
こんにちは! 初音ミクです。
とした場合は、そのまま改行が入った状態で表示されます。
これらの行は、1行ずつ順番に処理されていきます。スクリプトがどのような内容かは、上から順番に見ていけばわかります。
コマンドについて、より詳しくは、コマンドヘルプを参照してください。サンプルのソースを参考にするのも良いと思います。
MVN記法では、空行は無視されます。スクリプトが読みやすいように、いくらでも空行を挟むことができます。
先頭が#になっている行は、コメントと見なされ、無視されます。
#コメントです。
行の途中に#を入れても、それ以降がコメントとみなされることはありませんので、ご注意ください。
MVN記法を使用したビジュアルノベルは、基本的にはユーザーの入力がなくても自動的に流れていきます。ということは、スクリプトの書き手が、読み手が読みやすいようなウェイトを適宜入れていく必要がある、ということになります。
このウェイトを入れる作業を軽減するために、いくつかのコマンドは、コマンドの実行前もしくは実行後に自動的にウェイトが入ります。これを自動ウェイトと呼びます。デフォルトで設定されている自動ウェイトは以下の通りです。
コマンド | 機能 | タイミング | 自動ウェイトフレーム数 |
---|---|---|---|
@name | 名前の変更 | 実行後 | 5フレーム |
@modify_chara | キャラ立ち絵の表情のみの変更 | 実行後 | 5フレーム |
@change_chara | キャラ立ち絵の変更 | 実行後 | 5フレーム |
@text | メッセージボックスにテキストを表示 | 実行後 | 20フレーム |
@new_page | メッセージボックスのテキストを消去 | 実行前 | 20フレーム |
実行後 | 5フレーム | ||
@new_page_name | メッセージボックスのテキストと名前を消去 | 実行前 | 20フレーム |
実行後 | 5フレーム |
自動ウェイトは、@wait_before
及び@wait_after
コマンドで設定することも可能です。デフォルトの自動ウェイトによって、@wait
を使わなくてもある程度テキストを読めるスピードにはなっていますが、もっとゆっくりの方が良い、もしくは任意にウェイトを入れたいという場合は、@wait_before
及び@wait_after
で設定を変えたり、適宜@wait
を入れてください。
また、@text
に設定されたウェイトはテキスト行に適用されますので、1行ごとに自動で20フレームのウェイトが入ることになります。
コマンドヘルプの先頭の表に、各コマンドに処理時間という項目があり、即時とそれ以外があることがわかると思います。
この処理時間という項目は、そのコマンドがすぐに終わるのか、それとも終わるのに時間がかかるのかを示します。MVN記法においては、コマンドは順番に処理されていくため、コマンドに時間がかかるということは、そこで待ちが発生し、終わってから次のコマンドに移ることを示します。なので、この項目の把握は重要です。
処理時間が即時の場合、そのコマンドの実行には時間がかからないことを示します。即時のコマンドは、いくつ並べて実行しても、すべて即座に実行されます。次の即時でないコマンドが出てくるまでは実行される、と考えてください。
例えば同じキャラクタの画像の変更でも、即時の@set_chara
とそうでない@modify_chara
は使い分ける必要があります。
再生時に、メッセージボックス内をマウスで左クリックし続ける、もしくはタッチし続けることで、早送りすることができます。動作確認の際にご利用ください。
Internet Explorerでは、現状mp3の再生がうまくいっていないため、BGM及びSEの再生が行えません。ChromeやFirefox、Safariを使っていただくようお願いします。
また、現状では、モバイル向けブラウザのサウンド再生機能の制限により、iPhone、AndroidでのBGM及びSEの再生も行えません。