GOKI2
吉里吉里Zを使ってADV/ノベル以外のゲームを作れるようにするために GOKI2 というフレームワークを開発しています。
興味がある方は、以下サイトから「Avalanches-Release2.x.x.x.zip」をダウンロードしてください。
展開すると開発環境であるAvalanchesのソースとバイナリ、開発に必要なツール類が入っています。
まずはreadme.txtを読む事をお勧めします。
ダウンロード
モジュール
GOKI2では各タグはモジュールという単位で管理されており、各モジュールはそれぞれ必要なタグを実装しています。
現在多数のモジュールが開発され、ユーザーは必要なモジュール(機能)のみを取り込む事で独自の構成でゲーム開発を行う事ができます。
モジュールの読み込みは/src/goki2/system/construct.gsで行います。
とりあえず、ADVゲームを作るなら以下のような構成となると思います。
; スナップショット機能
@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互換タグを作成するスクリプトを指定しています。
@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
ファイルの内容を少し見てみましょう。
@!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の長いタグ名や属性名をユーザー側で任意の短縮名に変換するために活用されます。これにより、記述の簡潔さとコードの明確さを両立しています。
📜 KAG3互換性への対応
GOKI2のタグはKAG3と比べて名前が長いため、従来のKAG3形式で記述できるようにするための設定ファイルが予め用意されています。
これを必要なものだけ読み込むようにしてください。
例えば、ModBookmarkモジュールを読み込んでいないなら KAGCompatibleBookmark.gs を読み込む必要はありません。(エラーになります)
- これは主に
/src/goki2/system/KAGCompatible***.gsファイル群で行われています。
最後に
とりあえず、簡単に GOKI2 について紹介しました。
今後は定期的に GOKI2 および Avalanchesについて投稿してゆきます。