προφε 2021/01/30 18:32

きょだいむすめしみゅれーたver.2.0.2(アルファ版リリース)

あけましておめでとうございます。今年もよろしくお願いします。(…と言ってももう一月も終わってしまいそうなんですがね。٩( ᐛ )و)


今回はタイトルで題打った通り「きょだいむすめしみゅれーた」のアルファ版についてのお話になります。一応自分が目安にしていたところまで完成しましたので、ひとまずはこれをひと段落として、アルファ版としてリリースしてみました。そんなわけで、今回はYoutubeの方であげた「ゴーストリプレイ機能」の補足や、今後の課題などについて書いていこうかと思います。

きょだいむすめしみゅれーた(アルファ版)ver2.0.2

alpha2021.zip (331.50MB)

ダウンロード

フリーVRMモデル

VRM_Model.zip (9.24MB)

ダウンロード

ファイルを解凍後、「GTS_Alpha」が実行ソフトになります。
本バージョンではお使いのPCのスペックに合わせて四種類のマップを用意しました。
なお、アルファ版になりますのでゲーム画面のヘルプテキストは消せませんのでご了承ください。またSE設定や細かい修正等は済んでいません。こちらもご了承ください。


☆操作方法☆

移動:AWSD
視点移動:マウス操作
ジャンプ:スペース
ダッシュ:左シフト
しゃがむ:左コントロール
ロール:Rボタン
クイックアクション実行:右クリック
クイックアクション選択:マウスホイール(テンキー8or2、アロー←→)


☆アクション内容☆
(*矢印は実行時における派生アクションの有無。格ゲーのような連続技ではなく単発です。)

スケールアップ
スケールダウン

パンチ(←/↑/→)
キック(←/→/ダッシュ時スライダーキック)
フミ潰し(未完成:右クリックを押した後離すと実行)
ロール(←/→)
寝る(実行時左コントロールで寝がえり)

ソードモード(クリック後に移行・解除)
ソードアタック(←/→/↓:ソードアタックは5コンボまであります)
ソードジャンプアタック(ジャンプ中ソードアタック:実用性はあまりないw)
ソードキック
ソードロール


☆レコーダー操作☆

F5:録画開始・停止
F6:巻き戻し
F4:リプレイ再生・停止

F2:リプレイ保存
F1:リプレイ読み込み


☆フリーカメラ操作☆

移動:AWSD
上移動のみ:”「”(レフトブラケット)
下移動のみ:”」”(ライトブラケット)
視点移動:マウス操作
移動速度変更:左シフト
スケールタイムアップ:アロー↑
スケールタイムダウン:アロー↓


☆システム関係☆
シーンリセット:Pボタン
マップ選択:Lボタン
ゲーム終了:エスケープボタン


*現在判明しているバグ
(リプレイ中にタイムスケールを変更したのちゲームに戻るとそれが反映されたままになる)
(ロールアクションの設定ミスで通常時の前方ロールアクションができない)



さて最初に「目安にしていたところまで完成した」と書きましたが、これは

『考えていた機能を全て導入した(実はまだ残ってるけど)』
『できる限りのオブジェクト制作が終わった』

ことを指します。つまるところゲームのコアとなる機能やモノはほぼ実装している状態になるのがこのバージョンになります。


まぁ言ってみればGUIや効果音など細かいところは抜かしてもう完成と言えるのですが…ここまで作ってみてわかったのが「現状、機能を実装しただけで実用面では色々とツメが甘い点」、そして「ゲームの方向性について曖昧になってきた」という問題でした。


以上のことから、とりあえず現状を「ひと段落」とすることで一度自分の考えを真っさらにしようというのが実は今回の趣旨でもあります。そうすることで色々と目に見えなかったものが見えてくるものもあるでしょう。とりわけ建物の破壊演出については手詰まり感を感じています。効果音の種類やタイミング、またスモークなどのエフェクトなど暫く自分でも遊んでみなければ答えが出ないと感じました。


ということで、ウザったいこととは思いますが今回は初回起動時にアルファ版を閉じた際にはGoogleフォームの「アンケート画面」に飛ばされます。バグ報告や要望などがありましたら、今後のために答えていただけたら幸いです。一応こちらにも載せておきます。


アンケート(Googleフォーム)
https://forms.gle/NcxTddSjixnrCBnEA
(*この集計データを今後修正点として反映させます*)





ここからが機能解説になります。…と、まずはその前に未実装の機能について書いておきましょう。アルファ版なので見ての通りGUI関係やSE関連はありあわせの突貫工事で済ましております(苦笑)。その他、実装していない機能は以下の通りになります。


・ロングソードの持ち手微調整機能
・カメラのレンズ調整機能
・キャラクターの表情変更機能
・フリーカメラ中のモーションブラー
・AIM機能(敵がいないので今回はなし)
・SE演出などオーディオ面
・敵AI出現機能


以上が未実装の機能になります。「まだ沢山あるじゃねーか…」いやはや、全くその通りです。ただ、これらの機能はGUIと合わせて機能するものを考えているので後回しにしました。詳細については後ほどお話しします。


さて、それではゴーストリプレイ機能から紹介していきましょう。上で書いた通りGUIは未実装になるのでリプレイ時のGUI描写は経過時間しかありません。見づらいですが画面左下にあるカウンターが録画時間を表す時計で、「左が経過時間」「右が録画時間」になります。カウンターは二桁しかありませんが録画制限はありません。ちなみに録画ファイルは100秒で10MBくらいになります。保存、実行の手順は以下を参照してください。

録画
①F5で録画開始
②録画時にF5で停止
③F6で巻き戻し
④F4で再生
⑤再生中F4でリプレイ終了


保存
F2でファイル保存

ロード
F1でファイルロード


*なお負荷軽減のためにプレイヤー以外のオブジェクトにリプレイ機能は入っていません。またプレイヤーの一部機能はランタイム生成している点もあり、リプレイ後は動作が正常に機能しないものもあります(例:録画時間いっぱいまで行かずにリプレイを終了すると、その時間に入力されていたキー入力がループされてしまう)。そのためリプレイをする際は一度シーンをリセットしてから行うことをお勧めします。また後述しますが、リプレイ時におけるアクション選択はテンキーの8or2、もしくはアロー←→を使うことを推奨します


簡単にリプレイ機能のロジックについて書いておきます。Unityでゴーストリプレイ機能を実装する方法ですが調べてみてもこれはそれほど種類が多いわけではありません。方法としては「プレイヤーの入力を保存する方法」や「モーション自体を保存する方法」等が挙げられますが、自分の場合は前者の方法を採用しております(ランタイム生成キャラでも使えるリプレイ機能を構築する場合はこれしかない?)。この方法で今回使用しているのはEddie Cameron氏がGitHubで公開している「InputVCR」というものを主軸として使わせてもらいました。


この「InputVCR」はプレイヤーの入力を1フレームごとに記録(jsonファイルとして保存されます)し、それを再生することで「プレイヤーの入力を擬似的に再現する」ことが可能になる素晴らしいプログラムでした。おまけに・位置情報・方向・スケールもオブジェクトごと指定して記録することも可能なので、複数キャラでもリプレイが可能になる優れものです(しゅごい)。


ただ位置情報・方向・スケールは保存されると言ってもアニメーションは保存されていないのでリプレイ時にはそれを同期させる必要があります。もっとも「擬似入力に対応したコントローラー」を作れば同期方法は簡単で、Unity側のInputをInputVCRに変更すれば簡単に修正できました。(ちなみに自分はプログラミングが得意ではないのでUnityでは視覚的に把握できるビジュアルスクリプトのPlaymakerをメインとして使っているのですが、ここでもInputVCRは問題なく使用できます)


上の画像はPlaymakerを用いたスクリプトの一つで、一番の根幹であるプレイヤーコントローラーのロジックになります。かなり複雑ですけど視覚的に追えるので問題が把握しやすかったりします。


こちらがInputVCRを用いた入力の一例。InputVCRでは一般的な「Axis」「button」「Key」の入力軸を保存できるので応用は簡単ですね。InputVCRは録画制御を行う「InputVCR Recorder」を指定することで入力が反映されるようになります。

ところでYoutubeやゲーム内の注意書きにも書いたのですが、「プレイヤーの入力を保存する」ことでリプレイ機能を作っている関係上、この機能の最大の弱点でもあるのですが「必ずしも再現率は100%にはならない」問題があります。特に顕著なのは「プレイヤーのアクション選択」でした。


例えば「キック」や「スケール変更」などのアクションを選択するときは利便性を考慮してマウスホイールを使用して選択できるようにしているのですが、このマウスホイールのAxis入力軸は感度の問題でリプレイ時に選択が反映されない場合があります(というかほぼ100%反映できない)。そのため苦肉の策ではありますがアクション選択には複数の軸を使うことで対応しました。それがテンキーの8or2、もしくは「アローRIGHT」「アローLEFT」になります。ちなみに自分の環境ではbutton判定なら問題なく使えました。なので録画をメインで楽しみたいかたは後者をお勧めします。雰囲気的に再現率は90%前後といったところでしょう。また、buttonの入力のみを保存するので録画時のアクションステートと再生時のアクションステートが異なっていると正しく反映されませんのでご注意ください(例:録画時「None」でスタート、再生時「Scale_UP」でスタート。こうするとアクションが一つずれて再生されてしまいます。)


簡単ではありますが、以上がゴーストリプレイ機能の内容になります。また補足ですがリプレイ時のスケールタイム変更はキーボードの「アローUP」「アローDOWN」を使用します(上下ボタン)。スケールタイムは0~2まで変更できるのでリプレイ中には是非使ってみてください。ちなみにこれはグリッチになってしまうのですが、リプレイ中にスケールタイムを変更したままリプレイを終了するとプレイヤー操作時もその速度が反映されてしまいます。今後修正します。。。


それでは最後に今後の展開と未実装機能についての説明です。先ほどあげた未実装機能ですが、すでに形としては出来上がっています。


まずロングソードの持ち手の微調整機能ですが、これはRootmotionのFinalIKのInteractionObjectを使って実装するつもりです(アルファ版でもすでに使用していますが最終的な微調整は手動しかないので後回しにしました。ちなみにアルファ版ではソードモード時にキックをするとInteractionObjectをディアクティブにしていないのでIKが崩れますw)。


次にカメラレンズですが、これはUnity側の機能を入れればいいだけなので大丈夫でしょう。前作同様DoFやFoVの項目を入れるつもりです。


続いてキャラクターの表情変更項目ですが、これもVRMの「VRM Blend Shape Proxy」を変更できるようにすればいいので問題はあまりなさそう‥ですが、アクションに連動させて表情を変えるようにするのか、それとも後付けで自由に変更できるようにするのかで迷っていますね。


カメラ中のモーションブラーはCinamechine側で指定すればすぐに実装できそうです。またプレイヤールック機能も入れられたらと思います。


AIM機能は出来上がっていますが、ボタン関連の操作性に難があるのでとりあえずエイムターゲットを抜かしています。(敵AIがいないのでたぶん機能しません。)


オーディオ関係は種類とタイミングが重要でしょうね。ただちょうどいい感じの効果音がなかなか見当たらないので、何か良いものがありましたら教えてください。


最後に敵AIについては元旦に買ったモデル、クリーチャーのうち1体だけならすでに完成してたりします。ちなみにこんな奴↓


ただ凝ったAIではないのでまだまだ雰囲気だけのものですねー。地球○衛軍みたいにクリーチャーがいっかな〜って思っていたのですが、個人的には戦車とかヘリとかの方が好みのようです。ちなみにテストをかねて20体ほどリプレイ機能を入れてみましたがあっさり動きました。もともとAIの攻撃判定はコライダー制御で行うものが殆どですので、リプレイ時もちゃんと攻撃モーションに移行できました(飛び道具はどうなるかは不明だけど)。ただ手持ちの素材が少ないのがネックですね。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

記事を検索