身体はUnityで闘争を求める。⑧。機体のカラーリングと、機体データのセーブ&ロード

機体の色変更と機体データのセーブ&ロードをできるようにしました。

今回の実装は以下がポイントでした。
・テクスチャを重ねて表示する
・データ及び表示画面の保存・読み込み
これらは長くなりそうなので別々に他記事に後日まとめようと思います。

身体はUnityで闘争を求める。⑦。アセンブル機能追加

自機をカスタマイズできるようにしました。

ScriptableObjectによるデータ管理

ゲームにおけるアイテムの情報だとか、敵の情報、等々の普遍的なデータ群はScriptableObjectで管理するのが、Unityでは一般的です。
例えば、アイテムオブジェクトに各アイテム全部の情報を配列で保持し、アイテムIDによって配列から個別の情報を取り出すようにした場合、アイテムオブジェクトを10個生成したときに、各アイテム全部の情報配列10個分がメモリを圧迫してしまいます。これを避けるために、データ群は独立したScriptableObjectにもとめて格納します。

とはいえ、素の状態でScriptableObjectのままデータ群を管理するのは、編集し辛く現実的ではないと思います。

そこでExcelからScritableObjectにデータ群を変換するプラグインを用いて。
Excel上でデータ群を管理できるようにします。

Excel⇒ScriptableObject

おなじみのテラシュールブログ様で上記プラグインが公開されています。
使い方とプラグインは下記リンクから

http://tsubakit1.hateblo.jp/entry/20131010/1381411760

背景の使用モデル

背景の使用モデルは
・自作
・商用可能なフリーモデル
・商用可能な有料モデル
を組み合わせております。

自作モデル

投光器のモデルは自作しました。
いつも通りblenderで作成し、SubstancePainterで色付けをしています。
せっかくなのでBOOTHにて無料配布しています。
https://nextnext.booth.pm/items/1309666

電球の数だけLightオブジェクトを設置したけども、明らかに高負荷である。

フリーモデル

色んなサイトから集めてまわりました。
・cdtrader
・TURBO SQUID
・Free 3D
あたりから漁りました。

この中ではBTR(装甲車)、ドラム缶、箱がフリーモデルです。

有料モデル

オイルタンクだとかクレーンはフリーでいいものがなかなか見つかりませんでした。探す時間ももったいなので、いろんなタンクモデルが入ったモデルパック等を購入しました。1モデル100円以下なので、こういうのはさっさと買っちゃったほうがいいと思いましたね。

cgtraderのarmzep様のモデルが安くて中身も豊富でよかったですね。
https://www.cgtrader.com/3d-models?author=armzep

ただし、Textureは自分で作成する必要があるのと、
3DS MAX で作られたモデルだったので、blenderにobjファイルをインポートした際に、UV展開がごっちゃになっていました。仕方なく自分で雑にUV展開しなおしました・・・
TexturもSubstancePainterですぐ作れるし、UV展開も雑でいいならすぐできるので、それを加味しても安いしたくさんモデルがあるので助かりました。

身体はUnityで闘争を求める⑥。オンラインマルチプレイの仮実装。

オンラインマルチプレイを仮実装しました。
実装にあたって、Photonを用いました。
https://www.photonengine.com/ja-JP/Photon
先に以下できたもの。

Photonの使い方等は以下のページが大変参考になりました。

https://connect.unity.com/p/pun2deshi-meruonraingemukai-fa-ru-men-sono1
こちらのページが優秀すぎて特にまとめる内容はありません。(逃げ)
使用したのは 2018年8月25日 にリリースされたPUN2(
パンツ。。。 多分Photon Unity Network 2の略かな?)です。

実装した所感としましては、オンライン実装を視野にいれるなら、早い段階で組み込むほうが良いでしょう。
プレイヤー間の通信には更新間隔や一回のデータ送信料に制限がある為、どのようなデータだけをやり取りしてオンラインマルチプレイを実現させるかを考える必要があります。この実現方法によっては、今までローカル用に組んできたロジックを大きく修正する必要が生まれてきます。
以降は今回の仮実装を糧に、マルチプレイを加味したロジックでゲーム作成していきます。

身体はUnityで闘争を求める⑤ポストプロセスの導入、販売3Dモデルの導入

ポストプロセスとは

既存のゲーム画面(レンダリングされたシーン)にエフェクトをかけて、画面全体をかっちょよくすることです。
このポストエフェクトをかけるツールに
Post Processing Stackっちゅーものがあります。 Unityの公式アセットの一つで、誰でも簡単に導入できます。
https://assetstore.unity.com/packages/essentials/post-processing-stack-83912

Post Processing Stack を導入してみる

公式アセットということもあり、機能一通りのチュートリアル動画(講演動画)があります。

この解説を参考に自信のゲームにもポストエフェクトをかけてみました。

かっこよくはなりましたが、全体的に白飛びしてしまっていますね。
Bloomを強くかけすぎているのだと思います。
また、パーティクルが総じてBloomの影響を受けています。
スラスターやマズルファイア等が勝手に光ってくれるのはありがたいのですが、煙なども光ってしまっています。幾重にも煙が重なった際などは顕著に眩しくなってしまいます。パーティクルとPost Processing Stackの関係性をもう少し調べる必要がありそうです。

販売モデルの導入

Boothにて販売している商用利用可能なモデルを購入し、ゲーム内に導入しました。ボーンの数や構造に違いがありますが、FinalIKによる逆運動学で手足の動きを制御している為、難なく導入できました。

購入したモデル↓
https://booth.pm/ja/items/1207119

やはり自分で作成するよりも、購入したほうがコスパもいいしクオリティも高い。自機のパーツバリエーションを増やすのに、ガンガン購入して導入をしていきたいと思います。


次回はオンラインマルチプレイを仮実装。