mod_HKAGモジュール
目次
ダウンロード
mod_HKAGモジュール Ver.1.00a (2025/12/20)
ダウンロード(18.4 KB)
HSP3で使用するためのKAG風スクリプト実行モジュール
機能
HKAG は、HSP3 で手軽にアドベンチャーゲーム(ADV)やゲーム内会話シーンを構築するための、KAG(KiriKiri Adventure Game)風スクリプトエンジンです。 構文は KAG に似せていますが、KAG の互換ではありません。HSP3 上で独自に動作する軽量モジュールです。
以下の特徴があります。
- ADV・会話パート用スクリプトを簡単に作成できる
- スクリプトの構文解析機能を内蔵
- ユーザーが命令(コマンド)を自由に登録できる
- KAG 風の制御構造を実装
- if / elseif / else / endif
- jump(ラベル移動)
- call / return(サブルーチン)
できないこと
HKAG は軽量&拡張前提のモジュールのため、次の機能はユーザー側で実装する必要があります。
- 命令の動作内容
- 変数の管理機能
- eval のような式評価
- KAG のタグ書式([l] など)
- スクリプトをファイルから読み込む
想定ユーザー
- HSP3 でゲームを制作している人
- 自作の ADV エンジン/会話エンジンを作りたい人
- KAG に近い記述方法で会話シーンを制御したい人
要件
Windows/HSP3Dishなど、環境を問わず利用可能です。
インストール
HSPスクリプトエディタのHSP3 Updateに下記アドレスを設定して、一覧からmod_Hkagを選択してインストールしてください。
https://mclab.uunyan.com/dl/package/u10_index.hspupd
手動でインストールする場合は、ダウンロードしたzipを展開してできたファイルをHSP3のインストールフォルダに上書きコピーしてください。
使用方法
- スクリプトのはじめに、
#include "mod_HKAG.hsp"を記述してください。 feedKagLineを使ってスクリプトの各行を登録registerCmdでユーザー定義命令を登録dispatchKagCmdを呼ぶと、登録した命令が1行ずつ順番に実行されます
命令・関数
| cmdHkagCall | サブルーチン呼び出し |
| cmdHkagElsif | 条件を満たしていれば実行 |
| cmdHkagIf | 条件を満たしていれば実行 |
| cmdHkagJump | ラベルジャンプ |
| cmdHkagReturn | サブルーチンからのreturn |
| dispatchHkagCmd | 次のコマンドを実行 |
| getHkagArg | 指定したキーの値を取得 |
| dumpHkagErrorLog | エラーログを取得 |
| feedHkagLine | スクリプトを1行登録 |
| initHkagParser | HKAGモジュールを初期化 |
| registerHkagCmd | コマンドを登録 |
HKAGスクリプト例
スクリプトは次のような感じになります。
HKAG
; ▼メイン開始
*start
【メイン開始】
最初に @jump で subA へ飛びます
@jump target=*subA
ここには本来戻ってこない(@jump の確認用)
;----------------------------------------
; ▼ @jump で呼び出される部分
*subA
[subA] にジャンプしてきました
次は call で subB を呼びます(サブルーチン)
@call target=*subB
[subA] に戻ってきました(call の戻り確認)
ここから if/elsif/else のテストに入ります
@if exp=true
if(true) が実行されました
@elsif exp=true
←これは実行されないはず(if が true なので)
@else
←これも実行されないはず
@endif
[subA] の処理終了 → *endへ
;return
@jump target=*end
;----------------------------------------
; ▼ call ネスト確認用
*subB
[subB] に入りました
@return
;----------------------------------------
; ▼ 終了
*end
【メイン終了】
HKAGスクリプトの文法
KAGとの違い
KAGとよく似た文法での記述が可能です。ただし、以下の点が異なるため注意が必要です。
- ラベルの「|」には対応していません。
- タグ([])には対応していません。
コメント
「;」で始まる行はコメントとして扱われ無視されます。
コマンド
「@」で始まる行はコマンドとして扱われます。 コマンドに続けて複数の引数を書くことができます。 コマンドと引数、引数と引数の区切り文字は半角スペースです。引数はキーと値のセットで指定します。例えば次のように記述します。
HKAG
@foo x=10 y=20
この例では、コマンドは「foo」、引数は「x=10」と「y=20」の2つが指定されています。 キー「x」の値は「10」、キー「y」の値は「20」です。引数の順番は自由に入れ替えることができます。例えば次の通り。
HKAG
@foo y=20 x=10
キーと値の間には「=」を記述します。キーと「=」、値の間にスペースを置くことは出来ません。 値は省略することができます。この際、「=」はあってもなくてもどちらでも構いません。例えばキーxとyの値を省略する場合は次のように記述します。
HKAG
@foo x y=
属性値が「"(ダブルクォーテーション)」か「'(シングルクォーテーション)」で開始されていた場合は、次に「"」か「'」(最初の文字と同一のもの)が出現するまでが値となります。値の中で「"」を使う場合は、「'」で囲んでください。
HKAG
@foo z="Hello World !"
@foo z="use 'single' quotes"
@foo z='use "double" quotes'
ラベル
「*」で始まる行はラベルとして扱われます。
cmdHkagJumpやcmdHkagCallで、このラベル行に移動することができます。
メッセージ
コメント、コマンド、ラベル以外の行は、メッセージ行として扱われます。
タブ
行頭のタブは無視されます。コマンドやコメントの前に、タブを入れることができます。 インデントとして使用してください。
ライセンス
「mod_HKAGモジュール」は MIT ライセンスです。
更新履歴
| 2025/12/18 v1.00 | 公開開始 |
| 2025/12/20 v1.00a | 説明テキストの書き方をMarkdownをやめて普通の書き方に修正 |