2016年2月9日火曜日

回復アイテム使用のキーボードショートカット

今回は、回復アイテムをキーボードショートカットで使用するという機能を実装します。
実際の開発の様子を紹介する前に、ちょっと私の思想と構想について書いておこうと思います。


 ショートカット操作での回復アイテムの使用はRPGではあまり一般的ではありませんが、ゲーム好きな人であればピンと来る方も多いのではないでしょうか。

 例えばTerrariaでは、Hキーを押すとインベントリー内のHealing Portion類のアイテムを(持っていれば)使用することができます。
 Dark Soulsシリーズでは、複数のアイテムをショートカットに登録して十字キーの上を押して切り替え、□ボタンで使用することができ、ここに主要な回復アイテムである"エスト瓶"や"雫石"を登録するのが一般的なプレイスタイルです。

 「インベントリーを開き、使用したいアイテムを探し、そこまでカーソルを移動し、選択する」という操作をボタン操作一つに短縮することは、ゲームプレイ体験のうち退屈な部分を圧縮することで、全体的な質を高める意味があります。
 また、リアルタイム性のあるゲームデザインにインベントリー内の回復アイテムの使用という仕様を組み込むにあたっての問題を解決する方法として非常に有力です。

 それでは、なぜ私が自分のゲームにこの実装を取り入れようと考えたかという話をしようと思います。
 私は「おもらしのあるゲーム まとめwiki」に掲載されているゲームのうち、いくつかのRPGをプレイする中で、おしっこを我慢する女の子の一人称視点で進行していく尿ゲーにとって重要なのは、プレイヤーのモチベーションを上手くコントロールし、キャラクターのモチベーションと一致させることだと考えるようになりました。おもらし上等で尿意を気にせず攻略すればサクサク進むようではいけません。
 私がプレイした尿ゲーの中で、システム面が最も優れていると感じたのは「ウェッターズ物語」でした。「ウェッターズ物語」では、おしっこを我慢すると魔力が上がり、漏らすと下がってしまいます。装備品であるパンツの能力補正もおもらしによって失われます。また、回復アイテムには利尿作用があります。
 そのため、プレイヤーは自然とおしっこを我慢しつつも漏らさないようにするようになります。ゲームプレイの効率性を追求すると、ついついおしっこを我慢してしまう女の子と同じ行動をするようになります。
 主人公の能力傾向が魔法使い系であることと、回復アイテムが安価であることも重要な点です。

 このゲームでも「ウェッターズ物語」を優れた先例として倣い、おもらしのデメリットを大きく設定した上で利尿作用のある安価な回復アイテムを登場させようと考えています。回復アイテムを使用すれば効率よくゲームを進行できるが、おもらしは避けなければならないというジレンマの中で最適解を探ることをゲームの面白さのコアにしていければ良いと考えています。
 そのため、必然的に回復アイテム使用回数が増えるので、その部分を圧縮することの意義は大きくなります。また効率化を探る点にゲームの面白さのコアを据える以上、プレイヤーのモチベーションからUIの煩雑を避ける意識を極力取り除きたいのです。
 ついでに言えば、このゲームは完全にリアルタイムなゲームにするつもりはありませんが、尿関連パラメーターの変化はある程度リアルタイム性のある実装にする予定です。どのタイミングでそれらの変化を一時停止するかは未定ですが、ショートカットによる回復はゲームプレイ時間中の尿関連パラメーターの動いている時間の割合を少なからず高めてくれると考えています。


 以上が、今回実装していくキーボードショートカットによる回復という機能を組み込もうと考えた理由です。では、長くなりましたが実装の様子の紹介に入っていきます。


キーボードショートカットなので、入力はダッシュと同じ感じになります。
前回のスクリーンショットにも少し映ってましたが、同じところに記述します。
押しやすいというだけの理由から、AとSに割り当てました。それぞれのキーを表す整数値はそれぞれ130と131です。
キーを押す一瞬の間に複数回イベントが実行され、複数のアイテムを使ってしまうバグが発生したため、通常変数を使ってクールダウンタイムを設けます。

回復そのものは、基本データとして既に準備されているコモンイベントの呼び出しによって行います。
てか、コモンイベントに呼び出し用の引数入力ダイアログを編集する機能があるんですね。
ここで結構詰まったのは「何ポイント?」に入力した15022003という数値です。
この入力値は基本的には数値ですが、999999よりも大きい値を入力した場合は別のデータを参照するという意味になります。
それぞれの桁の意味を分解すると以下のような意味になります。
 ・15  →コモンセルフ変数を参照
 ・0220→コモンイベントのIDは220
 ・03  →CSelf[3]


さて、これでちゃんと回復するようになりましたが、せっかくなので回復した量を主人公の頭の上に表示するようにします。
ステータス表示と同じ、テキストをピクチャとして表示する機能を利用します。
前回この機能を使った時は細かい機能を知らずになんとなく作ってできてしまいましたが、それは画面左上に画像左上を基準に表示しようとしたためデフォルトで上手く行っていただけでした。
今回は、主人公の頭の上にフワっと出したいので、画面上の主人公の座標を取得した後に、Y座標を調整し、先述の整数値による参照先指定でそこの値を入れています。

二つ目の処理は、表示した画像を移動させる処理です。
同じピクチャ番号を指定しているので、一つ前の処理で表示させたピクチャを対象に処理が行われます。
相対モードにチェックを入れたので、最初に表示された位置から10ピクセル上に移動します。
処理フレームに15を入力したので、移動に15フレームの時間がかかります。なお、表示と消去にこれを指定した場合、フェードインアウトします。

さて、できました。
なお、テスト用に接触するとダメージを受けるキノコを設置しました。
マップも制作中です。


次回は立ち絵付きの会話やメッセージ表示させるためのコモンイベントを作っていこうと思います。
コーディングばかりやっていると、脳味噌の同じところばっかり使って辛いので、
もしかしたらマップの紹介やキャライラスト制作を先にやるかも知れません。

0 件のコメント:

コメントを投稿