前提知識
構文拡張については以下を参照してください
https://qiita.com/halo1234/items/09fd22503ed3ac11014d
ModADV
GOKI2にはModADVというADV/ノベルに特化したモジュールが存在します。
ModADVはModMessage/ModImage/ModSoundに依存しているため、
ModADVを読み込むと自動的にこれらのモジュールが読み込まれます。
キャラクター定義
まずは make_characterタグでキャラクターを定義します。
とりあえず、make_characterの構文を拡張しておきます。
@!make_character image=立ち絵有り->true,立ち絵無し->false
@!make_character voice=ボイス有り->true,ボイス無し->false
; mobタグ作成(リダイレクト)
@redirect alias=mob name=make_character
; パターン指定で変数を指定しなければ、指定した値が必ず展開されます。
@!mob /mob=true
続けて、キャラクターを定義します。
以下のようにします。
@make_character name=ハロ 立ち絵有り ボイス有り
@make_character name=ハロ sub_directory_name=images part_of_directory_path=A
@make_character name=ハロ voice_sub_directory_name=testcase
@make_character name=ハロ shadow_color=0x808080 edge_color=0xFF0000
@make_character name=ハロ history_shadow_color=0x808080 history_edge_color=0xFF0000
@make_character name=ハロ history_icon=history_icon_ハロ history_icon_left=18
一行ずつ見ていきましょう。
@make_character name=ハロ 立ち絵有り ボイス有り
これはキャラクター「ハロ」は立ち絵とボイスがあるキャラクターという事を定義しています。
@make_character name=ハロ sub_directory_name=images part_of_directory_path=A
これは立ち絵を自動検索パスのサブディレクトリに配置した場合にパスを計算するために必要な情報です。
この場合、立ち絵は以下のようなフォルダ構成となります。
images/A/立ち絵ファイル名.png
!注意! 立ち絵をサブディレクトリに配置するなら、リリース時にファイル名を変更する必要があります。 これを自動的にやってくれるのが /tools/makeツールです。 /tools/makeツールはマスターデータを生成するために使います。@make_character name=ハロ voice_sub_directory_name=testcase
これはボイスをサブディレクトリに配置した場合にパスを計算するために必要な情報です。
この場合、ボイスは以下のようなフォルダ構成となります。
testcase/<シナリオファイル名>/ハロ000.ogg
<シナリオファイル名>には、現在実行中のシナリオスクリプトのファイル名(拡張子なし)が指定されます。
実行中のシナリオがtest.gsの場合、<シナリオファイル名>にはtestが指定され、最終的に以下のようなパスになります。
testcast/test/ハロ000.ogg
@make_character name=ハロ shadow_color=0x808080 edge_color=0xFF0000
@make_character name=ハロ history_shadow_color=0x808080 history_edge_color=0xFF0000
これはキャラクター「ハロ」のセリフや履歴のテキストカラーを指定しています。
@make_character name=ハロ history_icon=history_icon_ハロ history_icon_left=18
これは履歴のテキストの横に表示するアイコンを指定しています。
キャラクタータグ
これでキャラクター「ハロ」が定義されました。(タグ「ハロ」が使えるようになりました)
タグ「character」と「ハロ」を構文拡張しておきます。
ちなみに、内部的には「ハロ」は「character」にリダイレクトされます。
ここで、「character」タグに構文拡張をしておくと「ハロ」にも適用されます。
逆に「ハロ」タグに構文拡張をしておくと「ハロ」には適用されますが、「character」には適用されません。
@!character center_x=左->200,中->400,右->600,中左->300,中右->500,左端->100,右端->700
@!character gray_scale=セピア->true r_gamma=セピア->1.5 g_gamma=セピア->1.3
@!character visible=表示->true,消去->false
@!character no_voice=nv->true
@!ハロ /storage=A_<POSE>_<FACE>
@!ハロ face=表情1->face1,表情2->face2
@!ハロ target=ポーズ1->*target
@!ハロ pose=ポーズ1->pose1,ポーズ2->pose2
もう解説は必要ないですね。
これでシナリオスクリプトは以下のようになります。
; シナリオテキストをModADVで処理する
; これをしないとテキストは何も表示されません
@using_mod_adv
; [r]タグや[p]タグも省略したい場合、以下のタグを実行します。
@cr_handling !ignore
; このシナリオ内でのみ有効なキャラクター「モブ」を定義する
@mob name=モブ 立ち絵無し ボイス無し
@ハロ ポーズ1 表情1 中 表示
[ハロ]ハロのセリフ。
; 立ち絵をセピア表示にし、左側に移動させる
@ハロ ポーズ2 表情2 左 セピア
[ハロ]ボイスがあれば再生されます。
[モブ]モブのセリフです。立ち絵もボイスもありません。
@ハロ ポーズ1 表情2 中
[ハロ nv]ボイス再生しません。
@ハロ 消去
[ハロ]立ち絵を消去します。
以上がModADVを使ったキャラクターの定義方法です。
GOKI2を使ってみたいと思った方は以下から最新の環境をダウンロードできます。
https://github.com/Halo1234/Avalanches/releases