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で広げるゲーム性【ModBookmark入門】ModBookmarkによるデータ永続化と、KAG3互換の変数システムを理解する

0
Last updated at Posted at 2026-01-23

ModBookmarkとModSnapshot

ModBookmarkはセーブデータに関するモジュールになります。
ModSnapshotはスナップショットに関するモジュールです。

まずは、モジュールを読み込みます。

/src/goki2/system/construct.gs
; スナップショット機能
@load_module name=ModSnapshot
; ブックマーク機能
@load_module name=ModBookmark

これでスナップショットとセーブデータの機能が組み込まれました。

セーブデータのフォーマット設定

まずは、セーブデータのフォーマットを設定します。

@bookmark format=bmp24 width=150 height=auto keep_aspect_ratio mode=z quick=quick store_skipping

順番に見ていきましょう。
初めにformat=bmp24でformat属性にbmp24を指定しています。
他にbmp32/bmp8/bmp(bmp32と同じ)が指定できます。
これはセーブデータにサムネイルを含める事を意味します。

次にwidth=150 height=autoでサムネイルのサイズを指定しています。
幅が150で高さは自動的に計算させます。

サムネイルのアスペクト比を固定するためにkeep_aspect_ratioを指定しています。
この属性を指定するとアスペクト比を固定してサイズ計算します。

mode=zで保存するデータの形式を指定します。
zを指定するとデータを圧縮します。
cを指定するとデータを暗号化します。
両方指定する事はできません。

quick=quickはいわゆるクイックセーブデータの名前を指定します。
クイックセーブを行うとここで指定した名前のセーブデータに保存されます。

store_skippingはスキップ中にセーブデータをストアするかどうかを指定します。
これは高速化のヒントとして機能します。
この属性にtrueを指定するとスキップ中はセーブデータをストアしません。
そのためスキップ時の高速化が期待できます。
ただし、sタグで止まる時などは最後の状態のセーブデータをストアする必要があるため、
セーブ可能ラベル名にforce_storeを含めると、この属性がtrueでもセーブデータをストアする事ができます。
例えば選択肢を使った場合、以下のようにするとよいでしょう。

*force_store|
@select caption=選択肢1 target=*choice1
@select caption=選択肢2 target=*choice2
@select show
@s

こうしておく事でstore_skippingがtrueでも、スキップ中に*force_store|でセーブデータが強制的にストアされます。

サムネイル

サムネイルモジュールはスナップショットの確保と解放を管理しています。
通常は特に意識しなくてもよいモジュールです。

手動でスナップショットを取る事も出来ます。

; 現在の画面でスナップショット確保
@lock_snapshot
; スナップショットの解放
@unlock_snapshot

lock_snapshotとunslock_snapshotの呼び出しは数が一致していないと不具合が発生します。
直接このタグを使う機会は少ないと思います。

変数領域

ModBookmarkが管理する変数領域は、ユーザー変数、システム変数、一時変数、の3つの領域があります。
ユーザー変数はセーブデータに保存される領域です。
システム変数はシステムセーブデータに保存される領域です。
一時変数は一時的に使える使い捨ての領域です。ファイルに保存される事はありません。
この辺はKAG3と同じ設計になっています。

ユーザー変数に保存された内容は各セーブデータに保存されます。
ユーザー変数に値を保存するには以下のようにします。

@eval exp="f.testVal = 99999"

システム変数に保存された内容はシステムセーブデータに保存されます。
システム変数領域はゲーム全体にかかわる設定値などを保存します。
例えば、ゲームクリアしたかどうかという情報はセーブデータに保存してもあまり意味がありません。
どのセーブデータを読み込んでも同じ情報にアクセスしたい場合などに使います。
システム変数領域に値を保存する実際のスクリプトは以下のようになります。

@eval exp="sf.gameClear = true"

一時変数はその名の通り一時的に使う変数領域です。
保存はされないのでとりあえず値を保存しておきたい場合などに使います。
セーブはされませんのでゲームを再起動したら失われる情報です。
使い方は以下の通りです。

@eval exp="tf.tempVal = 'string'"

一つ前に戻る/タイトルに戻る

「一つ前に戻る」や「タイトルに戻る」機能もModBookmarkが管理しています。
一つ前に戻る機能はrecordタグとgo_backタグを使います。
recordタグが書かれた一つ前のセーブ可能ラベルの状態を保存します。
go_backタグで一つ前に戻ります。

タイトルに戻る機能はstart_anchorタグとgo_to_startタグを使います。
start_anchorタグが書かれた一つ前のセーブ可能ラベルの状態を保存します。
go_to_startタグでstart_anchorが書かれた場所(一つ前のセーブ可能ラベル)に戻ります。
例えば以下のように書きます。

*game_start|
@start_anchor

通常は一つ前に戻る/タイトルに戻るはメニューからユーザーが実行する事になるでしょう。

ダイアログ

ModBookmarkでは最初に戻る実行時やセーブ時などに、ユーザーに確認するダイアログを表示する事ができます。
ダイアログにオリジナルの画像を使いたい場合はask_saveask_startask_recordタグを使うとよいでしょう。
これらのタグで各UIの画像を指定する事ができます。
各属性に指定する値についてはマニュアル(/doc/goki2/index.html)を参照してください。
これらのタグを使わなければ、デフォルトのUIが使われます。

関連する記事の一覧

GOKI2の関連する記事一覧

ダウンロード

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

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?