hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

VR空間で遊びながら2ヶ月かけてゲーム開発した話 in NeosVR


NeosVRはVR空間内で企画/実装/テストを複数人で行え、そのままゲームワールドやアイテムとしてNeosVR内で公開出来ます。
今回はそうした環境下で「Ultimate Chicken Horse」インスパイアされたOTAMAxSTEPゲームを2ヶ月掛けて作った話を書きます。

事前に

本エントリーはゲーム内容を理解しておいた方が何を書いているか分かりやすい内容となっています。なのでまずは以下動画を視聴ください。
www.youtube.com

開発するきっかけ

ginjakeさん主催の「ClusterGAMEJAM 2022 in SPRING」ワールド巡りの中にUltimate Chicken HorseインスパイアされたであろうTRAPPER's BRIDGEゲームワールドが楽しかったので、NeosVRに合わせたUltimate Chicken Horseっぽいゲームシステムを試しに作ってみようかな―と作り始めました。

完成までの流れ

2022/4/3から開発スタート。

第1週

はじめは一人で開発しており、スタートからゴールまで移動するだけの機能を実装しました。
ホワイトボードに作りたいギミックを書いたり、何人かの方にギミック実装やモデリングして貰い始めました*1

  • コーディングしているところ

  • プレイヤーのヒット判定をどうしようか考えているところ*2



第2週

何個か配置オブジェクトが完成し、ゲームサイクルである以下の機能実装及びテストをしていました。

  1. ゲームスター
  2. 各人が1つずつブロック配置
  3. レーススタート
  4. 2-3を繰り返し、勝者を決める

  • 回転バー(お団子)の動作チェックしているところ


  • 爆発演出を実装しているところ

  • 配置ブロックのアイディアとタスク管理をホワイトボードに書いていた




第3週

ユニークなステージを作ってもらったり、配置可能なブロック種類を増やす作業、そしてひたすらテストをしていました。
この段階での大きな課題は配置ブロック数が増えていくと激重になる事でした。

  • 死亡箇所にアバターをBakeしたモデルを配置し続けると重くなる&ゲーム本体の子Slotに入れるとアバタープロテクションのせいでゲーム本体が消える問題を確認しているところ*3

  • 書いて貰ったコード眺めつつ改造しようとしてるところ

  • なにかしているところ

  • Blenderで作って貰った王冠アニメーションを確認しているところ

  • 配置ブロックが何なのか分かりにくい...に対する改善策を試してるところ


第4週

配置可能なブロック種類を増やす作業、配置ブロック周りのパフォーマンスチューニング、そしてひたすらテストの繰り返し。

  • ベルトコンベアの動作を確認しているところ

  • コーディングしているひと

  • コーディングやめたところ


第5-6週

ゲームのマニュアル/設定/各配置ブロックの説明などのUI作成。その他、プレイ時に分かり難いそうな点のブラッシュアップをしていました。

  • マニュアルのゲームライフサイクルの説明どうするか話しているところ

  • 忘れたけどどっかのUIについて話してそうなところ

  • インスペクターで何か確認しているところ

  • 何故かすぐ散らかる作業ワールド


第7週

ゲームのリザルト画面を作っていました。

ゲーム上に表示するテキストはEN/JP/KRの3言語で、EN/KRはDeepL/Google/Bing翻訳で訳したものだったため意味が通じにくい箇所が多かったです。
なのでEN/KRネイティブ言語の方に協力して頂き、翻訳校正して貰いました。

  • 全然ゲームと関係ないコード書いているところ

  • 完成したスコアボード


第8週

全体的な調整、ゲームを遊ぶための専用ワールドを作成してリリース。

  • 最後に完成したステージ


  • 終盤のテストプレイしているところ*4


第9-10週 (延長線)

公開後のバグ対応を現在進行系でしています。ローカライズミス、FPS依存や同期ズレなどなど...遊んで貰う人や環境(ヘッドレス外)が変わることで色々とバグが出ては潰していっています。

突発PV撮影会を開いて、15人くらい集まって頂いた中で4人のカメラマン(視点)でPV用の動画撮影をしてPVが完成しました。


おわり


多くの方に協力頂いたお陰で完成しました。どうもありがとうございました。直接制作に関わって頂いた方はゲーム本体から閲覧可能な状態にしています。
あとmiraさんにはゲーム開発用セッションをヘッドレスで建てて頂き、そのお陰で開発が捗りとても助かりました。

VRSNS空間内で誰かとゲームを作る体験は新感覚です。

  • 企画
  • モデリング
  • コーディング
  • テスト
  • ゲーム公開
  • PV撮影

VR空間上で行え

  • 距離減衰がある空間での会話
  • アバターによる身振り手振り
  • ペンで描く
  • 画像を共有
  • 動画を共有

も同じくVR空間上でコミュニケーション取れるため、共同開発しやすいです*5



NeosVRの場合は作ったその場で試せるため、短い時間でも試行回数が多く確保出来ます。
特にマルチプレイを想定したVRゲームのテストは他だとどうしても大変で、テスト用ワールドをプライベートでアップして人を招いて...と実際テスト出来るまで時間が掛かりがちです。
ですがNeosVRは作業しているワールドに居る人にお願いするか、ゲーム本体をインベントリに保存して他ワールドで取り出してテストをお願い出来るので短時間で検証し終えられコスト安です。



PCスペックや使っているHMD/デスクトップモードなのかという環境差、プレイ人数で問題が発生するので試行しやすい環境であればあるほど品質向上します*6

VR空間上でワールドやアイテムを作って、その場に居る人に遊んで貰うor人の居る別ワールドへゲームを持って行って遊んで貰う...そんなNeosVRの良いところを他VRSNSでも参考にしてアップデートされていくと個人的には嬉しいですね*7

*1:人のjoinはワールドへ遊びに来られた方を誘ったり、何かで知って作りに来られたりと人それぞれでした

*2:OnCollisionStartがセッション内の全員呼ばれるよくないコードなので参考にしないでください

*3:ラウンド開始時に前ラウンドの死体を消すことにした。死体はRoot直下に専用フォルダを作成し、そちらへ格納する事にした。

*4:ちなみにゲーム名は画像奥に映っている通り複数案の中から投票で決めました

*5:なお流石に100%NeosVR内で完結させていた訳ではなく、一部モデルはBlenderサウンドDSP Motion等の外部ツールで作成していました。なのでゲームの95%はNeosVR内で作り、残りの5%は外部ツールで作ったものをNeosVRへインポートして出来上がっています。

*6:必ずするとは限らないですが

*7:そういうのが無いと静的ワールド作るのはいいけど動的ワールド作るのが大変過ぎる