なが月・30日目

30日目

いよいよ最終日である。

幾多の苦難を乗り越えついにHalt!: VR Road Traffic Madness v0.2.0をリリースできた( https://0bsoletelab.itch.io/halt-vr-traffic-officer-simulator , Viveport審査中 )。まずいアーキテクチャで設計すると拡張が大変だということを痛感した。またコード自身も綺麗とは言い難く、例えばレイキャストが当たったオブジェクトを識別するのにはタグ名(string)を取得して処理することになるのだが、if タグ名 == "NorthSignal" 処理 else if タグ名 == "WestSignal" 変数名が違うだけの同じ処理...という悲惨なものであった。

列挙型の知識を得た今回はEnum DirectionにNone, North, West, ...を定義し、すべての信号と諸設定を内部クラスにしてList<内部クラス>にまとめ、foreachとEnum.TryParseとEnumのintキャストによって極めて簡潔な処理に書き換えることに成功した。その他JetBrains Riderの強力な指導によって数々のリファクタリングを行うことができた。この点ではアップデートの試みは成功だったといえるだろう。

とはいえ費やした時間のわりにアップデートの規模はそう大きくなかった。理由として既存資産の乏しさが挙げられると思う。

ゲームロジックそのものは毎回一から作ることになるわけだが、UI構成やユーザの行動に反応するスクリプトは既存の資産が極めて有用だと考えている。そうしたものが利用できれば時間が節約できたに違いない。

今後はスケジュールの枠内でデスクトップ・VRそれぞれに対する汎用UIを作り次回以降に活用していきたい。