VR鈴鹿高専に行ってみたら地獄だった話。

##前置き
####なんでこの記事書こうと思ったのか
先日、弊校で行われたチーム開発の授業(創造工学)が終了しました。
我々のチームではVRゲームの開発を行いましたが、反省すべき、というかしなくてはならない部分が多すぎる！
ということで、発生した問題などを反省日記的にまとめようと思いました。
私はUnity周りの作業に関わっていたので、その時にとても困ったこととかはちょっとだけ詳しく書きます。
記事書くのほぼ初めてなので読みにくかったらすみません。

(ちなみに同じ題材の記事が同じアドカレに存在しています。同じチームの人間の記事です。)
##つくったもの
とりあえずプロダクトの軽い説明から。
作品名 __CARDINAL__
概要 __我らが鈴鹿高専の3Dモデル内に没入するVRホラーゲーム__
開発環境 __Unity(バージョンは2020.3.18)__
使用VR機器 __oculus quest 2__
チーム人数 __8人__

PV動画(音量注意)↓
<iframe width="1280" height="720" src="https://www.youtube.com/embed/qkEQnTedb48" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


はい、まあまあな人数でVRゲームつくりました。
この人数で開発したならきっとゲームは素晴らしい出来なんやろなぁ...

##何が起きたのか
####そのとき、不思議なことが起こった！
破綻する３Dモデル[^1]！
![kabetouka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542467/a709495a-5e09-9db7-5d7f-ca8bab675bfa.png)

30FPSを前後する処理スピード！
![30fps.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542467/38627e77-1922-b0a2-a72c-cb62fe3503b2.png)

そして、UnityC#のコードは食べ応えのあるスパゲティ[^2]と化した！

```cs
using UnityEngine;
using UnityEngine.UI;
public [SerializeField] GameObject camaera;
//~~~省略~~~
camera.setActive(true);
```
( errorCS1061) << cameraってなんすか？なんかそういうデータでもあるんですか？

発表当日の朝________

そこには、燃え尽きたチームメンバーと泥船と化したプロダクトが...!!

##Unity周りで破綻したところ

* 作業を後回しにするな

* 知識不足でコード書くのに時間めっちゃかかる(しかも機能実装に至らない)

* ３Dモデルをインポートするとモデルが崩れる

* プレイするとカックカクになる

上から順にみていきましょう。

<dl>
<dt>作業を後回しにするな</dt>
  <dd><p>
期限がまだ先だからという理由で作業を先延ばしにしてはいけない！！！！！<br>
いいか、一か月前の自分ってのは他人なんだ。<br>
他人が書いた目的不明のクソコードとにらめっこするのが楽しい人種なんていないんだよ。わかるか？？？？</p>
<br><p>
ということだけ書いておきます。　　サボるとマジでろくなことにならない。マジで。<br>
</p><br>

</dd>
  <dt>知識不足でコード書くのに時間めっちゃかかる</dt>
  <dd><p>Unityでゲーム開発するだけならまだしも、今回はVR開発。<br>
ただでさえ知識がないことに加えインターネット上の記事も少ないため、一つの機能を実装するだけでもかなり労力と時間がかかりました。<br>
コードも複雑になりがちで、後から見直したときにひたすら？が頭の上に浮かんでいました。
</p>
<p>
特に困ったのはnavigationという機能についてです。<br>
この機能は敵がプレイヤーを追いかけるようにしたり、名前の通り経路案内の機能を実装したりすることに使われます。<br>
しかしながら目的地(プレイヤーなど)の設定がどのタイミングで行われるのかがさっぱりわからず、経路案内などの機能がデモ当日までに完成しませんでした。<br>
</p><p>
いきなり最悪の展開です。まだまだ困ったことがあるってマジですか？？？？
</p><br>

</dd>
<dt>３Dモデルをインポートするとモデルが崩れる</dt>
  <dd><p>
これに関しては件の他メンバーが詳しく書いていると思うので割愛。
<br>
丸投げされました。<br>
</p><p>
先ほどの第三講義室のように一部の壁が透過するだけならまだしも、この現象は校舎全体に及んでいました。<br>
↓廊下から下の階に存在する物理実験室が透けて見えている様子。画像ではわかりづらいが廊下床が斜めになっている。<br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542467/927afc58-5cc0-d2c6-a6cb-28f75bdf18ba.png" alt="HTML 4 + CSS "width="800" height="500">
<br>
他にもマテリアル情報がオブジェクト内でランダムに入れ替わっていたりするなど、３Dモデル周りは散々でした。
<br>
同じような現象についての記事を探しても全く出てこなかったことが昨日のように思い出されます。
</p><br>

</dd>
<dt>プレイするとカックカクになる</dt>
  <dd><p>突然ですが皆さんは日頃からゲームをプレイされていますか？<br>
あ、VRのゲームではないですよ？<br>
ここでいうゲームというのは、某FPSバトルロワイヤルや某大乱闘ゲームなどのことです。
<br>
そういったゲームをプレイされる方の中には、『ラグ』や『S〇ftBank Air』といった言葉にアレルギーを持っている方もいるかと思います。
<br>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542467/faa802f9-b333-8c0e-bf7b-a5269404b908.png" alt="HTML 4 + CSS "width="300" height="500">

</p>
<p>昨今では多くのオンラインゲームが流行っていますが、このゲームはあくまでもオフラインのゲームです。<br>
じゃあなんでカクツキが出るんだよ！！いい加減にしろ！！<br>
と思った人間は、多分私ぐらいなものでしょうが何が起きたのか説明します。</p>
<p>
カクツキの原因は、ゲーム上にオブジェクトをたくさん置き過ぎたことでテクスチャの読み込みに時間がかかり、結果として描画処理のパフォーマンスが著しく低下していたことにあります。<br>
すごい量のオブジェクトを読み込んでからそれぞれに紐付けしてあるテクスチャを「オブジェクトのマテリアルの個数分」読み込んでいたのでそりゃあカクつきますよねといったところ。<br>
「ドローコール」という描画処理の負荷の指標になる数値があるのですが、目標が１００前後だったのが一時期１００００とかになっていました。つまり１００倍ですね。ここが地獄か。<br></P><p>
今回の開発で二番目に足りてなかったのは処理の高速化への関心だったと思います。<br>
描画処理についての知識があれば３Dモデル製作の時点で対策が講じられたハズだったのでこれに関しては非常に反省しています。企画段階で既に重い処理になるであろうことは分かっていたのに...！<br>
しかしこれもまた学びなのです。たぶん。
</p>
</dd>
</dl>

##まとめ （と、あとがき）
####はじめてのチーム開発を経て得たもの

* コードのスパゲッティ力
* タイポへの憎悪
* VRへの期待感

なんだかんだでコードを書きまくったりUnityと向き合う時間が増えたので技術力は間違いなく上がりました。
が、粗削りな状態の技術力(笑)であることは間違いないので研鑽を積み重ねていきます...
タイポについてですが、最近、近所の自販機に現れたよくわからないスープみたいなやつの次ぐらいに嫌いです。
タイポは疲れがたまっている証なので疲れに耐えて納期に間に合わせましょう。

それで、VRですが、こいつはヤバイ。
私は創造工学でVRの企画になることが決定したタイミングで自費でOculus Quest 2[^3]を購入したのですが、
初めて触った時の感想は
####これが......𝑽𝒊𝒓𝒕𝒖𝒂𝒍 𝑹𝒆𝒂𝒍𝒊𝒕𝒚......!!!
って感じです。
まあ何が言いたいかと言うと、自分にとって未知の体験だったという意味です。
友人に10万ほどするVRセットを複数持っている(?)逸般人の方もいらっしゃいますが、少なくともVRを体験したことがないという方には十分すぎるシロモノだと思います。

いきなりダイレクトマーケティングしたところで、「VR」について思ったことを少し書いて締めようと思います。
VRを題材とした映画、漫画などの作品は多く存在していますが、私はそれを横目に数年前までは
「こんなモン実現するのは１００年先だろ(笑)」
なんてことを思っていましたが。
正直、今ではあと１０年もしないうちに夢に見たあの作品の世界が見られるかもしれないと息巻いております。
既にユニ〇ーサル・スタジオ・ジャパンではVRによるアトラクション[^4]の導入が決定されているように、もう未来はそこに来ているのかもしれないな.......と思ったりもします。
最近では日本メタバース協会なるものが現れたことでも話題なVR界隈ですが、そういった団体が現れる程にVRはやはりビジネスの種としての才覚を秘めているように感じます。

なんか大層なこと書いたのでこの辺でお茶を濁します。
とにかく！VRにはすっごい未来を感じた！ってことです。
時間があればVketに行ってみたいです。

おわり！！！
ここまで読んでくれてありがとうございます！！！スーパー感謝！！！！！！！！！！！


[^1]: 壁が透けた第三講義室。中の机は...？？？
[^2]: タイポでエラーが出るのでスパゲティですらない。皿うどんだろこれ。
[^3]: 無線式のVRヘッドセット。　こちら、約3万７千円となっております。
[^4]: モ〇ハンが題材らしい。行きたいね。