書く場所迷いましたが、一旦このいにしえのブログを掘り起こしました……
下記「第21回UE5ぷちコン」に参加しました。
正直作成中は全くまとめたりしていなかったので、抜けがあるかもしれませんが、今が一番記憶が残っている状態ということで書いておくことにしました。
ある程度実際の作業に準じて記載しますが、並行している箇所も多いです。
参考ページも見つかったものは記載しますが、めちゃくちゃたくさん見たので、全部は載せられないと思います……
応募した動画はこちらです。
- 1. 何のゲームにするか
- 2. タスク出し、スケジュール作成
- 3. 仮モデル作成
- 4. ゲーム部分作成
- 5. オンライン対応
- 6. キャラモデル作成
- 7. モーション作成
- 8. ルック作成
- 9. KawaiiPhysics 導入
- 10. クロスシミュレーション
- 11. パッケージング、別PCでのマルチ対応、その他
- 12. 動画作成
- まとめ
1. 何のゲームにするか
「おす」というお題をこねてました。
洒落た言葉遊びが全く思いつかなかったため、ふつうに作りたいゲームを作ることにしました。
2. タスク出し、スケジュール作成
作りたいゲームを作るといってもお題はお代なので、押す要素として相撲、推す要素としてキャラメイクを入れた尻相撲ゲームを作ることにしました。
下記実際に書かれていたスケジュールです。
(着手が遅かったため、3月からのスケジュール)
- 3月1週
- 仮モデル作成
- ゲーム部分作成
- 3月2週
- ゲーム部分作成
- オンライン対応
- 3月3週
- キャラモデル作成
- キャラメイク作成
- 3月4週
- キャラモデル作成
- キャラメイク作成
ざっくりしすぎで足りない要素が多いですが、一人制作なので一応そのあたりも脳内には置きつつ分割しています。
とはいえ、実際はモーション作成後に生じるゲーム対応、オンライン対応が結構大きかったり、そもそもモーション作成が項目に無かったりと結構がばがばです。
3. 仮モデル作成
Blender でモデルを作成 → Auto Rig Pro でリギング、スキニング → UnrealEngine に読み込んで使用、という一連の流れの検証と、ゲーム画面の画角、レイアウトの検証のために最初に行いました。
4. ゲーム部分作成
上記仮モデルと合わせて、ステップ、攻撃、勝利判定等必要なアクションの作成、検証を行いました。
C++ とブループリントで迷いましたが、せっかくなので最初はブループリントで作ろうと思い、今回は全要素ブループリントで作成しています。
5. オンライン対応
UnrealEngine はエンジン側でデフォルトでマルチプレイヤー対応が入っており、検証も簡単です。
なので、ゲーム部分の作成とほとんど同時に並行して行っています。
移動や同期についても、UnrealEngine が用意している仕組み(Character クラス等)の上でやる分については簡単なのですが、少し仕組みから外れたことをやる際に、同期される/されない、サーバー/クライアント上の動作等、いろいろな箇所で意図とは違う動作になりました。
結局、UnrealEngine のオンラインの挙動について、内容をしっかりと理解する必要がありました。
「UnrealEngine マルチプレイ」で検索するといくつも資料が出てくるので、いろいろ読みました。
UE4でマルチプレイヤーゲームを作ろう【CEDEC 2019】 | ドクセル
とはいえ、説明を読んでいるだけでは「完全に理解した」としかならなかったので、自分で組んで個別事象について調べて動作させてようやく理解が追いつくという感じ……
実際に実装して当たる問題についての情報は日本語ではほぼ見つからないので、英語で調べたほうがいいです。
6. キャラモデル作成
ネットワーク対応わからん、となってスケジュールを浪費するのもあれなので、モデル作成を進めます。
正直スケジュール的にキャラメイクもできて色替えくらいか? となりましたが、
- 体型変更
- 差し替えではない髪型変更(ボーン or ブレンドシェイプとかでなんとかできないか?)
- パーツの配置
等やりたい事自体はたくさんあったので、もしそこまでいけたときのために、短髪で体型は全体的に大きめとして作成しました。
リグ、ウェイトについて、デフォルトの構造に胸ボーンと髪ボーンを追加しています。
下記一連の記事と、公式ドキュメントで対応できました。
Blender(Auto-Rig Pro)→UE5で動かしてみた01 -エクスポートまで- | bricola
Game Engine Export — AutoRigPro Doc documentation
7. モーション作成
UnrealEngine っぽさはキャラクターのモーションから来ていると思っていて、今回の要件的には別にそれでもよかったんですが、そもそも必要なモーションが特殊で多分存在しなかったので Bledner で作成しました。
作成したのは下記
- ステップ(左右)
- 攻撃
- 被弾
これもキャラメイク用に、最近流行ってるキャラクタ回転+カメラ逆回転の演出モーションとかやりたかった……
モーションは UnrealEngine 側でアニメーションモンタージュにした上で、ルートモーションでの移動を行っています。
この辺のオンラインでの同期も必要……
8. ルック作成
時間がなかったのと、試したいのは UnrealEngine での描画だったので、テクスチャは目と顔の一部のみで、ほぼマテリアルで設定を行いました。
また、アウトラインも追加しています。
今回は、背面法とマテリアル境界の2種類を導入しています。
マテリアル境界は下記を参考にしました。
第3回:ポストプロセス エフェクトを使ったセルシェーディングの表現 | UE5でつくるセルシェーディング
9. KawaiiPhysics 導入
キャラクターの髪と胸に使用しました。
サンプルがわかりやすいのと、日本語の使用例が大量にあるので、簡単に導入できました。
パラメータの変更を再生中のアニメーションに即座に反映できるので、調整も簡単でした。
服の揺れものも今は絶対こっちを使ったほうがいい。
10. クロスシミュレーション
基本的に情報は下記のページにしかない。あったのかもしれないけどこれだけ見てやりました。
Panel Cloth Example Files (5.3) | Tutorial
現状 Experimental なので、手順が膨大でコピペ不可等いろいろ面倒です。
パラメータもどこに対応しているのかわからないものが多かったので、フィーリングで調整しました。
上記ページの説明だけだと PhysicsAsset を作成する手順がないのが難しい……
また、パッケージングしたときのみ表示されなくなって、どうやらカリングされているということに気づいたのがギリギリだったので、動画ではエディタ実行のものを録画しています。
11. パッケージング、別PCでのマルチ対応、その他
オンライン対応も本当は EOS とか触ってみたいなと思っていたのですが、時間がないので IP 直接入力の間に合わせ方式に。
パッケージングは特に問題なくできましたが、上記問題で録画しない側でのみ使用する形に……
あとは相手をターゲットする処理が微妙で怪しすぎましたが下記で一瞬で解決しました。
[UE5] アクターをターゲットの方に向ける方法|株式会社ヒストリア
12. 動画作成
台本を作成し、それに合わせてゲームを録画。
絵が単調にならないよう、デバッグカメラで画角を変更して録画してもらったものも使用しました(渡したパッケージ版が Development ビルドだったため)。
まとめ
以上、一月強の週末稼働でしたが、いろいろ初めてで見積もりが甘くできなかったことが多いのが心残り……なので、手元で追加実装はしていくかもしれません。
とはいえ、やっぱり締め切りがある開発はよかったです。
定常的にコンテストがあるありがたみ。開催してくださりありがとうございました。