投稿記事

2023年 04月の記事 (1)

προφε 2023/04/29 19:00

4月までの進捗状況

どうもです。ご無沙汰しております。少し間が空いてしまいましたがゲームの方は順調に製作が続いておりますので4月までの進捗状況について報告します。次回バージョンのリリースはまだ先になるのですが現時点で完了しているアップデート箇所をまとめてみました。今回は主にプレイヤーコントローラー関連の紹介をします。


ロードしたモデルの揺れものが動きます(MagicaCloth2)

次回バージョンよりロードしたVRMモデルの揺れものが動くようになります。今まではVRMをRuntimeでインポートする関係上、揺れもの制御には既存のVRMSpringBoneしか使えなかったのですが、このVRMSpringBoneはモデルのサイズを変更すると物理モデルが破綻する欠点があるので現行バージョンではVRMのインポート時には意図的にこのスクリプトを削除していました。しかし揺れもの制御の定番であるMagicaClothでは下の動画を見ればわかるようにサイズを変更しても問題なく動いてくれました(まぁこの方が非現実的な超重力挙動なんだけどw)。

方法としてはVRM生成時に創られる”Secondary”にあるVRMSpringBoneから揺れもののTransformを取得してそれをMagicaCloth2に渡してRuntime生成するといった感じになります(MagicaCloth2からRuntime生成が正式にサポートされた)。そのため揺れもの指定したい場合はSecondaryにデータを纏めておく必要があります。…と言っても今のところはVRoidStudioで製作したモデルであるならば特に設定を弄る必要はありません(まぁ最終的にUnityでパッケージしているならどんなモデルでも大丈夫だと思うけど)。

ちなみにこんなにすんなりできたのはChatGPTによるアシストのおかげですね。ChatGPTによるコード生成とエラー修正は本当に素晴らしく、作業効率を大幅に削減することができました。そんなわけでこの作業改善のおかげで今後はかなりスムーズに開発が進むことが予想されます(素晴らしい!)。

ただし現時点ではBingMaps同様にどういう訳か初回起動時にはスクリプトが機能しないというバグが存在しています。おそらく原因となっているのはMToonにあるらしく(もしくはOculus側かも)、VRMをインポートすると必ず下記のエラーを吐いているようです。


Property _ReceiveShadowTexture already exists in the property sheet with a different type: 5
Property _ShadingGradeTexture already exists in the property sheet with a different type: 5
Property _RimTexture already exists in the property sheet with a different type: 5
Property _OutlineWidthTexture already exists in the property sheet with a different type: 5
Property _UvAnimMaskTexture already exists in the property sheet with a different type: 5
Property _SphereAdd already exists in the property sheet with a different type: 5


このエラーはどうやらUnity2021とUniVRMとの仕様による問題らしいです(いずれもUnityEngine.Material:SetVector (string,UnityEngine.Vector4)が引っかかっている模様)。実はMagicaCloth2の導入にあたって今回からUnity2020からUnity2021にアップデートしました。Unity2020では大きな問題にはなっていなかったのですが今回からは完全にエラー扱いになってしまったようです。まぁこのゲームはUnity2019から制作しているのでかなりレガシーな機能を使っている部分が多いのが現実になります。とりわけ今まで問題にはしてきませんでしたがUniVRMの仕様変更も今後は問題になってきそうです。実を言えばこのゲームではUniVRM v-0.58という非常にレガシーなものを使っているのですが、最新版にあたるv1.0以上ではVRMのロード方式から一新されています。おまけにVRMモデル自体もバージョンが上がっており、今後はいわゆるVRM-1.0モデルが主流になっていくと思われます。

つまり、このゲームは今後数年のうちにVRMモデルをロードできなくなる可能性があるということになります……(もちろんコンバーターは誰かしら作ってくれると思いますが)。

まぁここは中々難しい問題ですね。汎用性を求めても結局のところ仕様変更に悩まされるのは変わらないという事でしょうか。そんな訳で今後はここも課題になってきそうです。


プレイヤーモデルにGrounderIKを入れました。

UE5のサードパーソンコントローラーには標準で装備されていましたので自分のゲームにもそれを取り入れてみました。ちなみにGrounderIKはFinalIKに入っているスクリプトの一つですが、このゲームではFinalIKを既に導入していたので実装面での問題はほぼありませんでした。なお後述しますがカメラ追従やジャンプ関連もUE5のサードパーソンコントローラーを意識して作り直してあります。


さておき早速GrounderIKを見ていきましょう。上の画像を見てもらえばわかると思いますが、プレイヤーの脚が凹凸に合わせて膝を曲げているのがわかりますね。まぁこれだけと言えばこれだけなのですが見かけ上はリッチになったと言えそうです。ちなみにこのGrounderIKはキャラクターのサイズ変更にも対応させました。方法としてはGrounderFullBodyBipedのMaxStepの数値を変更しているだけなのですが…まぁ恐らくこの数値をRuntimeで変更しているゲームはこのゲーム位ではないでしょうかw。公式にもこの部分をRuntimeで変更させるようなサンプルスクリプトもなかったので想定されていないことは間違いなさそうです(でもリアルタイムで変更したいんだから仕方ないじゃん)。ただご覧の通り中々良い感じにできているので良しとしましょう。

カメラ関係のアップデート

実を言えば現行バージョンのカメラは最初期からほぼ変更していない最もレガシーな部分になります。なのでハッキリ言ってクソ過ぎでした(*'▽')

それはさておき、先ほども書いた通り今回のアップデートではUE5のコントローラーを参考にして改良してみました。これでようやくスタートラインに立てたというところですね。今後は振り向く際に画面を即切り替えなんていう事はなくなりました。今後の予定としては各アクションに付随して画面効果も入れたいと思っています。そうすればよりゲームっぽく仕上がるんじゃないでしょうか。

ジャンプと重力関連の修正

こちらもUE5のコントローラーを参考にして改良してみました。現行バージョンではジャンプに色々と制約があったものの次回からはかなり快適に飛ぶことが出来ると思います。またこれに合わせて飛行モーションも追加してみました。

ジャンプ中にもう一度ジャンプボタンを押すと飛行モーションに移行します。ちなみにスケールごとに移動速度も変わるので変化も楽しめることでしょう。これで快適に散策をすることが出来そうですね。


アクションUIの変更

今までは簡易的なアクション表示だけでしたが、次回からはアクションゲームを意識したUIに一新しております。いわゆるアクションホイール方式を採用してみました。次回からはアクションアイコンにしてあるので視覚的にわかりやすくなるのではないでしょうか。

ただこのゲームは録画機能に重点を置いているところが強いのでこれが制約となって色々と不都合が生じているのですが…まぁここは仕方がないことでしょう。本当はマウスでもアクション選択できるようにしたりキーコンフィグをユーザーで任意に指定できるようにしたかったのですが、ユーザー入力を保存して成り立つ録画システムを採用している以上、これがネックになっています。それならInputSystem使えば?…って思うんですが、この録画システムはInputManagerに依存しており、InputSystemでRuntimeにキーコンフィグを変えてもInputManager側のボタン指定が変えられないことから結局使うことが出来ない様です(未検証だけどInputSystem側でキー入力を変更してもInputManager側のキー入力は受け付けている様なので実質InputManagerボタン+InputSystemボタンが常時受け付けている感じ?)。まぁUnity側でリプレイシステムを完備してくれることを祈るばかりですね。

アクションの追加

次回バージョンからは上記のアクションホイール導入に伴い新規アクションや既存アクションの変更を行いました。新規アクションとしては先ほどの飛行機能に加えて少し前に紹介した魔法攻撃やガンアクションの追加を行う予定です(ガンアクションは作製中です)。ちなみに今のところ魔法攻撃はチャージ式にしてあり、32種類ほど用意してあります。ただ動画を見てもらえばわかりますが攻撃が強すぎて処理が追いつきませんw。そこがネックでしょうか。

またパンチやキックと言ったものは斬撃アクション同様にコンボ方式に変更しました。反対に座ったり寝るようなモーションはFreeLookCamera側のアクションに移動しています。なおガンアクションは作成中ですがそれに合わせて敵も追加する予定です。…と言っても自キャラが無敵なのでそもそも敵と呼べるかはわかりませんがね。まぁこの情報は次回あたりに報告できたらいいと思っています。

Twitter投稿機能の削除

最後にTwitterAPI終了に伴ってTwitter投稿機能を削除しました。せっかく導入した機能なのですが…まぁAPIがない以上どうしようもないですね(現行バージョンでも既に使えません)。またImgurの方も画像削除する方針を最近取り始めたので引き際としては十分でしょう。そんなわけでこちらは削除します。ただキャプチャ機能はそのまま残してあるのでこちらは有効にお使いください。



さて今回の紹介はとりあえずこの辺で終わりにしておきたいと思います。GW中にはガンアクションのシステム構築を行うので進展があればまたご報告いたします。一応予告しておくと次回バージョンのリリースは今年の夏を目安に製作していますので気長にお待ちください。それではごきげんよう。

フォロワー以上限定無料

無料プラン限定特典を受け取ることができます

無料

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

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

月別アーカイブ

記事のタグから探す

記事を検索