Vketにおける配置支援ツール「VioRama」

◆序


VirtualMarket(以下Vket)は発足から僅かな期間で、その規模は爆発的に大きくなった。ひとえに、応援していただいている皆様、会場に遊びに来ていただいている皆様、そして情熱溢れる制作物をブースとして入稿していただいている出展者の皆様のおかげであり、誠にありがたいことである。ありがとうございます。


回を重ねるごとに拡大する規模・出展者数

イベントの規模が大きくなると何が起きるのか? 超ざっくり言うと、イベントの準備にかかる工数も増えていく。増えた工数はどうにかしないと、準備にかかる期間も際限なく伸びていく。

この問題を解決するためには、「作業人員を増やす」「作業を効率化して工数を圧縮する」等の対応が求められる。わたしはエンジニアという立場から、「作業支援ツールを導入することで工数を圧縮する」後者の手段を選択した。


Vketの配置作業とは

Vket1時には、わたしはまだVketスタッフではなく、配置作業に直接関わってはいない。副主催である水菜がVket配置作業をライブ配信していたが、その光景はまさに阿鼻叫喚であった。

https://youtu.be/KJI69oW3Zk8
ここで発生していた問題は「GUIDの上書き」である。これについては後述する。

Vket2時にはわたしが配置統括をすることになり、配置班と手分けして各会場の配置・設営をおこなっていた。このときの入稿方法は「Googleフォームを介したunitypackageのアップロード」であり、入稿された各ブースunitypackageを技術班が手動及び目視でブースが正常か、描画負荷は問題ないか、ギミックに齟齬はないか、レギュレーションは問題ないかを確認していた。

出展者の数だけ? 否、入稿の数だけである。再入稿されたブースは当然前回から更新されているため、一通りの確認が再度必要になる。結局のべ入稿数で1000以上のパッケージを数人で確認している。気が遠くなる。技術班には頭が上がらない。
配置作業も手動である。unitypackageのインポート、ディレクトリの整理、シーン上への配置、全てが手動である。気が遠くなる。


◆問題


Vket2までの入稿~配置フローには、ざっくり下記のような問題があった。

- 出展者が増えるに従い、インポート・技術確認・配置作業の工数爆発
- 再入稿のたびに発生する再インポート・技術確認・再配置作業による工数爆発
- 配布アセットやシェーダを使用しているブース同士のGUID競合問題
    - Unity内での管理番号である「GUID」が競合すると、インポート時に同GUIDアセットへの上書きが発生する。複数のブースで別設定のMaterialが入稿されていても、GUIDが同じであると「あとからインポートしたほうで上書き」されてしまう。

きっとまだたくさんある。けどこのくらいにしておこう。


◆支援


これらの問題を解決するため、Vket3時には、企画段階から「入稿ツール」および「配置ツール」を開発・導入することを決めていた。

- 入稿ツール
    - 入稿フローを一元化し、描画負荷やレギュレーション等のチェックを自動化し、同時に出展者データベース等への紐づけをおこなうことができる
- 配置ツール
    - インポートを含む、シーンへのブース配置作業の効率化

わたしは「配置ツール」の開発をおこなった。

配置ツール名は「VioRama」
「Diorama=ジオラマのもじり」「Virtual IO=入出力」「略称がVR」の言葉遊びである。

VioRamaは出展者データベースと接続されていて、GUIで出展者一覧を確認することができ、各出展者の入稿パッケージの新規インポートおよび再入稿更新インポートをボタン一発でおこなうことができる。この機能および画面は「VioRama Importer」と命名した。

VioRama Importerの画面(サークル情報を含むためモザイク処理)


また、ワールドにあらかじめ設定しておいた「配置場所」一覧をGUIで表示し、任意の配置場所へ任意のブースをリストから選択することで配置できる。この機能および画面は「VioRama Builder」と命名した。

VioRama Builderの画面(サークル情報を含むためモザイク処理)


これらにより、ある配置スタッフからは「Vket2時には人力で数時間掛かっていた配置作業が、VioRama導入により数十分に短縮された」との評価をもらった。実際、手作業に比べて作業時間は大幅に圧縮された。

Vket3,Vket4を経て、VioRamaは機能を拡張している。たとえば以下のような。

- 各ブースを取り囲むライトプローブを自動配置
- unitypackage段階でGUIDをあらかじめ書き換えてからインポートすることでGUID競合を回避
- ワールドの拡張メニューやギミックとブースの自動接続


◆課題


しかし、依然課題は残っている。すぐ列挙できるものだけでも以下のようなものがある。

- 入稿物のデータ形式やシリアライズ状態によってはGUID置換が正常に働かないことがある
    - 率としては少ないのでそのときは手動インポートで対応した
- ワールドの配置場所が多いとVioRamaの処理が重い
    - 無駄で冗長な参照が内部でされていると推測されるため、データフローの整理とリファクタリングが必要
- VioRamaの機能開発(ワールドギミックとブースの自動接続等)を配置と並行しておこなっていたため、リリース済みの最新バージョンの適用タイミングに齟齬があり、古いバージョンで配置を進めていたなど(その後もちろん最新状態を適用している)
    - 旧バージョンを使用している場合は警告を発する等の対策が必要

これらのほかに、さらに追加機能として配置状況の自動チェックや全体負荷等の健康度チェックによる会場最適化支援も強化していきたい。

やりたいことは枚挙に暇がない。基本的に決まったフローの操作は自動化すべきであり、それによる工数の圧縮とヒューマンエラーの回避は必須である。


◆結び


Vketは機会である。わたしたちのしていることが、まだ見ぬ誰かの創作の機会になったり、あるいは良く知るあなたの新たな創作の機会となってもらえたら嬉しい限りである。

そのために、スムーズでエラーのない会場設営を支える、そんな存在でありたい。


車軸制作所