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のインストールフォルダに上書きコピーしてください。

使用方法

  1. スクリプトのはじめに、#include "mod_HKAG.hsp"を記述してください。
  2. feedKagLine を使ってスクリプトの各行を登録
  3. registerCmd でユーザー定義命令を登録
  4. 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'

ラベル

 「*」で始まる行はラベルとして扱われます。 cmdHkagJumpcmdHkagCallで、このラベル行に移動することができます。

メッセージ

 コメント、コマンド、ラベル以外の行は、メッセージ行として扱われます。

タブ

 行頭のタブは無視されます。コマンドやコメントの前に、タブを入れることができます。 インデントとして使用してください。

ライセンス

「mod_HKAGモジュール」は MIT ライセンスです。

更新履歴

2025/12/18 v1.00 公開開始
2025/12/20 v1.00a 説明テキストの書き方をMarkdownをやめて普通の書き方に修正

関連記事

  1. mod_SceneManagerモジュール このモジュールは HSP3 のスクリプト内でシーン管理とトランジション(フェード等)を簡潔に扱うため...