人生

やっていきましょう

518日目

ゲームに実績機能を設けることにした。長編ゲームは中だるみが発生しやすく、プレイヤーにその都度動機を与えていかないと飽きられてしまう。どうにか上手い方法はないか考えていたが、やはり実績解除を与えていくことが一番効果的だと思った。

しかし自分で作ることは至難の業だろう。たしかに簡単なものであれば自力で作ることはできる。たとえば知人の作ったゲームでは、ある実績確認用のマップにいくつか空欄を用意しておき、実績を解除したところにはピンを、そうでないところは空欄のままにしておく、といった設計を行っていた。変数を利用すればこうした実装は容易にできる。

だがそれ以上のものを作るとなると難しい。自分が実装したいのは、実績を解除した瞬間に軽妙な効果音とともにメッセージが出されるあの瞬間、トロフィーの獲得内容を図鑑のように確認できる項目、それに業績の進捗をセーブデータ間で共有できるようなシステムだが、それらを実装する能力が現時点での自分にはほとんどない。

効果音とメッセージは努力次第ではできるかもしれないが、それらをデータベースに連動させたり、セーブデータ間を横断する形に実装するといったことはほぼ不可能だ。そもそもデータベース自体、自分で作る能力がない。

だからここは第三者のものを借りることにした。ウディタのコモンイベント集というサイトに実績解除用のコモンイベントがあったので、そこからダウンロードした。

https://silsec.sakura.ne.jp/WolfRPGEditor/CommonList/html/tdv212.html#16002463486001

このイベントはutという方が作った『実績コモン』を、大佐という方が共通セーブ管理化したものだ。基本的には『実績コモン』の形を踏襲しているため、こちらのリンクでコモンのおおまかな概要を確認することができる。

utso.seesaa.net

このコモンイベントは自分にとっての理想そのものだが、自分のゲームで問題なく扱えるかどうかが分からなかった。そこで今回はこのイベントの導入と運用について、自分の学習の意味も込めて記録をつけることにした。

まずは準備からはじめる。ゲームのシステムを少し上書きするため、予めバックアップを取ることにした(おそらく数年ぶりに取ったと思う)。またコモンイベントの導入に必要なファイルをダウンロードし解凍した。

つぎにファイルの中にはreadmeがあったので、以後はそれを参考に導入した。いつものように所定のファイルを所定の場所に、書かれている通りに当てはめていく。

ほとんど問題なく導入することができたが、唯一、導入手順の3番目の部分が微妙に分かりづらかった。

3. 「■実績解放・取得」の引数コモンセルフ1 対象実績の読み込み先を「タイプ(データ含む)実績リスト.dbtype」を読み込んだところにする(設定サンプル2 参考)

これは、導入したコモンイベント「■実績解放・取得」の「設定」ボタンから、「入力内容の設定」を開き、その項目の内にある「特殊指定」欄の上辺にある「入力[数値2]」欄を開き、その「データベース参照(数値)」を「可変DB」のタイプX番に変更するという意味だ。このX番はデフォルトでは23番になっているが、これを『「タイプ(データ含む)実績リスト.dbtype」を読み込んだところ』の番号に変更する必要がある。同梱されている画像(設定サンプル2)を見れば大体分かると思う。自分の場合「タイプ(データ含む)実績リスト.dbtype」を読み込んだ場所は26番だったので、26番に変更しなおした。

これで導入は終わった。次に実績リストについて確認していく。

実績のデフォルトの上限は30個になっていて、一応はこれ以上増やすこともできるようになっている。しかし共通セーブ管理を行う際の都合で、最大上限は30に留めておく必要があるようで、これ以上は増やさない方が良いとメモには書いてあった。

実績数30といえばどのくらいだろうか。根幹部分の実績、例えば章ごとのクリアやボス討伐といった要素だけを見ればおそらく10程度だろうから、隠し要素を加えれば実績30は丁度いい具合だと思う。

つぎに運用について確認していく。簡単に説明すれば、運用はゲームの起動時に「実績解放・取得」のコモンイベントのモード10の「初回呼び出し」を行い、任意の条件を満たした際にモード0の「解放」と任意の番号を選択することで達成される。すべての実績をリセットする場合にはモード3の「全実績解除」を行う。

実績は実績の名前、簡単な説明文、詳しい説明文、更に実績のアイコン(画像)についても設定することができる。これは可変データベースの実績リストで調整が可能だ。今後はこの部分に色々書き込むことで実績コモンを完成させていく。

ところでReadmeには、実績解除の効果音の設定の仕方について何も書いていなかった。少し自分で調べてみたところ、コモンイベント「■実績・表示フラグ」の205行目に効果音の呼び出し項目があったので、その部分を編集することで解決した。

しばらく動かしてみて一通り使い方が分かったので、実際に実績をひとつ作ってみることにした。数分で作ったものだが、問題なく機能した。

vimeo.com

とりあえずこれで実績機能が確認できた。あとはどの実績をゲームに採用するかを考えて設定を作り、その都度ゲームの中に取り入れていくことにする。

ところでひとつ重大な問題点に気が付いた。共通セーブ管理によって実績を反映させてしまうと、一度取得した実績はそのまま残るため、テストプレーの際にいちいち全実績を削除しなければならないことになる。この点についてうまい方法が思い浮かばなかったので、やはりその都度削除していかなければならないだろう。