0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GOKI2で始めるADV開発【システム構築編】モジュール構造の理解と独自の構文拡張

0
Last updated at Posted at 2025-11-26

GOKI2

吉里吉里Zを使ってADV/ノベル以外のゲームを作れるようにするために GOKI2 というフレームワークを開発しています。

興味がある方は、以下サイトから「Avalanches-Release2.x.x.x.zip」をダウンロードしてください。
展開すると開発環境であるAvalanchesのソースとバイナリ、開発に必要なツール類が入っています。
まずはreadme.txtを読む事をお勧めします。

Avalanches:開発環境
GOKI2:ゲーム用フレームワーク

ダウンロード

気になった方は以下サイトのリリースタグ(Avalanches release version 2.x.y.yという表記)からAssetsにあるAvalanches-Release2.x.y.y.zipのリンクから最新の環境をダウンロードできます。

モジュール

GOKI2では各タグはモジュールという単位で管理されており、各モジュールはそれぞれ必要なタグを実装しています。
現在多数のモジュールが開発され、ユーザーは必要なモジュール(機能)のみを取り込む事で独自の構成でゲーム開発を行う事ができます。
モジュールの読み込みは/src/goki2/system/construct.gsで行います。
とりあえず、ADVゲームを作るなら以下のような構成となると思います。

construct.gs
; スナップショット機能
@load_module name=ModSnapshot
; ブックマーク機能
@load_module name=ModBookmark
; 画像関連機能
@load_module name=ModImage
; メッセージレイヤ関連機能
@load_module name=ModMessage
; 音楽関連機能
@load_module name=ModSound
; ビデオ関連機能
@load_module name=ModVideo
; 右クリック関連機能
@load_module name=ModRightClick
; ADV機能
@load_module name=ModADV
; システムボタン
@load_module name=ModSystemButtons
; セーブロード画面
@load_module name=ModSaveLoad
; システム画面
@load_module name=ModSystem
; 選択肢
@load_module name=ModSelect
; タイトル画面
@load_module name=ModTitle
; CG/回想画面
@load_module name=ModCGMemory
; バージョンウインドウ
@load_module name=ModVersionWindow

各タグの詳細はマニュアル /doc/goki2/index.html を参照してください。

GOKI2は独自のタグを実装していますが、GOKI2の構文拡張機能によりKAG3と互換のタグも用意できます。
GOKI2でデフォルトで提供しているのはKAGCompatible.gsというGOKI2のタグをKAG3の書式で記述するためのスクリプトです。

内容は以下のようになっており、読み込んだモジュールに対してKAG3互換タグを作成するスクリプトを指定しています。

KAGCompatible.gs
@que unshift storage=KAGCompatibleDefault.gs
@que unshift storage=KAGCompatibleBookmark.gs
@que unshift storage=KAGCompatibleImage.gs
@que unshift storage=KAGCompatibleMessage.gs
@que unshift storage=KAGCompatibleRightClick.gs
@que unshift storage=KAGCompatibleSnapshot.gs
@que unshift storage=KAGCompatibleSound.gs
@que unshift storage=KAGCompatibleVideo.gs

ファイルの内容を少し見てみましょう。

KAGCompatibleDefault.gs
@!cursor /default_cursor=<DEFAULT> /pointed_cursor=<POINTED> /click_cursor=<CLICK> /draggable_cursor=<DRAGGABLE>

@redirect alias=loadplugin name=load_plugin
@!load_plugin /name=<MODULE>

@redirect alias=resetwait name=reset_wait

@!wait /skip=<CANSKIP> /no_skip=<NO_CANSKIP> /!skip=<!CANSKIP>

@redirect alias=waitclick name=wait_click

🎮 GOKI2におけるsyntaxタグとredirectタグの活用

GOKI2は、「タグ名や属性名を省略しない」という基本方針を持っていますが、長くなりがちな記述を簡潔にするために、syntaxタグredirectタグ を組み合わせるスタイルを採用しています。


🏷️ syntaxタグ: タグの構文拡張

syntaxタグは、既存のタグに対して新しい構文パターンを定義し、記述を簡略化するために使用されます。
ただし、拡張された構文はセーブデータに保存されないので、必ず初期化時に設定してください。

1. タグ名に!を付けて構文を拡張する

syntaxタグを使う際、定義したいタグ名に ! を付けることで、新しい記述パターンを定義できます。

構文拡張の例:

拡張定義 (@!) 実際の記述 変換後の解釈 (@)
@!make_character image=立ち絵有り->true,立ち絵無し->false @make_character 立ち絵有り @make_character image=true
@make_character 立ち絵無し @make_character image=false

2. 属性に/記号を付けてパターンを指定する(パターン置換)

syntaxタグの属性に / 記号を使用すると、属性値のパターン置換を指定できます。<KEY>の部分は、指定された属性の値で置き換えられます。

パターン置換の例:

拡張定義 (@!) 実際の記述 変換後の解釈 (@)
@!ハロ /storage=A_<POSE>_<FACE> @ハロ pose=ポーズ1 face=顔1 @ハロ storage=A_ポーズ1_顔1

3. 組み合わせた利用

これらは組み合わせて利用できます。

組み合わせの例:

拡張定義 (@!) 実際の記述 変換後の解釈 (@)
@!ハロ /storage=A_<POSE>_<FACE> pose=ポーズ1->p1 face=顔1 @ハロ ポーズ1 顔1 @ハロ storage=A_p1_顔1

🔁 redirectタグ: 長いタグ名を短縮する

GOKIの基本方針としてタグ名や属性名は省略しないようにしていますが、redirectタグsyntaxタグを活用して名前を省略していくというスタイルを採用しています。

redirectタグは、syntaxタグと併用することで、GOKI2の長いタグ名や属性名をユーザー側で任意の短縮名に変換するために活用されます。これにより、記述の簡潔さとコードの明確さを両立しています。

redirectタグで指定したデータはセーブデータに保存されるのでどこで書いても問題ありません。


📜 KAG3互換性への対応

GOKI2のタグはKAG3と比べて名前が長いため、従来のKAG3形式で記述できるようにするための設定ファイルが予め用意されています。
これを必要なものだけ読み込むようにしてください。
例えば、ModBookmarkモジュールを読み込んでいないなら KAGCompatibleBookmark.gs を読み込む必要はありません。(エラーになります)

  • これは主に/src/goki2/system/KAGCompatible***.gsファイル群で行われています。

最後に

とりあえず、簡単に GOKI2 について紹介しました。
今後は定期的に GOKI2 および Avalanchesについて投稿してゆきます。

GOKI2の関連する記事

GOKI2で始めるADV開発【システム構築編】モジュール構造の理解と独自の構文拡張

GOKI2で始めるADV開発【ModADV入門】キャラクターの画像・音声パス設定からセリフ表示まで

GOKI2で始めるADV開発【ModADV入門】背景・時間帯の定義と画面更新の制御タグ

GOKI2で始めるADV開発【ModSystem入門】システム画面の構築と設定項目定義

GOKI2で始めるADV開発【ModSaveLoad/ModSystemButtons入門】セーブ・ロード画面のレイアウトとシステムボタンの配置

GOKI2で始めるADV開発【ModCGMemory入門】CG・回想モードの実装とエクセルによるデータ管理

GOKI2で始めるADV開発【ModTitle入門】タイトル画面の実装とボタンレイアウトの定義

GOKI2で広げるゲーム性【ModSelect入門】ModSelectで作る分岐シナリオと選択肢の実装

GOKI2で広げるゲーム性【ModBookmark入門】ModBookmarkによるデータ永続化と、KAG3互換の変数システムを理解する

GOKI2で広げるゲーム性【ModMessage入門】KAG3を超えたメッセージ表示と「cmタグ不要」のデータ管理

GOKI2で広げる演出力【ModImage入門】高度なレイヤ移動とasdxによるアニメーション制御

GOKI2で広げる演出力【ModSound入門】BGMフェードと多チャンネルSEで空気感をデザインする

GOKI2で広げる演出力【ModVideo入門】全画面動画からレイヤ合成まで、ダイナミックな画面作りを極める

GOKI2で広げる拡張性【Mod***MenuItems/ModVersionWindow入門】旧メニュー対応とバージョンウインドウ

GOKI2で広げる拡張性【ModRightClick/ModResult入門】右クリック機能の実装とスコア演出の作り方

GOKI2で完結させる製品化【makeツール入門】マスターデータの全自動生成とSVNによるパッチ管理

GOKI2で加速するシナリオ制作【convgs入門】config.iniによる独自フォーマット解析とキャラ名の自動変換

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?