見出し画像

VRゲームコンテンツを作りたかったので、VRChatのゲームワールドを制作した

記事の概要

かねてよりVRゲームコンテンツを作りたかった私が、SteamVR/OculusQuest上で動くアプリケーション「VRChat」ゲームワールドを制作したので、
制作したものと併せて、制作意図を紹介する。

記事のターゲット

・VRゲームコンテンツができるまでの流れを追いたい方
・VRChatのゲームワールド制作に興味がある方

制作したVRChatのワールド紹介

PC/Quest向けゲームワールド。
VRChatのアバターを操作し、ワールドにあるオブジェクト(武器)を使って敵を倒していくようなアクションタワーディフェンスゲーム。
プレイ人数は1 - 4人、1回2分程度を要する。

起動方法はこちら。

1. STEAMでVRChatをダウンロードする(完了済みなら飛ばす) https://store.steampowered.com/app/438100/VRChat/

2. アプリ上でVRChatのアカウントを作る(完了済みなら飛ばす)

3. VRChatを一度閉じて、以下のリンクにアクセスする。右上のLaunch Worldをクリックする。自動的にゲームワールドに移動する。
https://www.vrchat.com/home/launch?worldId=wrld_1887b7cc-bc01-4137-ad31-f7673a35eea7

※VRChatに慣れている方なら、WorldタブにXRCと入力して検索してください。

デスクトップでも遊べるように作ったため、
興味がある&VR機器を持っていない方もSteam経由でVRChatをダウンロードしたら遊ぶことが可能。

やりたかったこと、制作の条件

今回ゲームワールドを作ったのは、以下の3点の理由に基づく。

1. VRゲームを作りたい
2. 多人数で同時に遊べるゲームをデザインしてみたい
3. 私がVRに触れることで広がった想像を形にしたい

1.に関してはVRゲームを実際に遊ぶことで持った考えだ。
VRゲームには、家庭用ゲームとは違った体験、演出などが多分に含まれており、ぜひVRで遊べるゲームを作ってみたいと思った。

2.に関しては、ゲーム制作をする知り合いが、個人でネットワークを介して動くゲームを作っていたので自分も作ってみたいと思っていた。

3.に関しては、VRChat上で1週間くらい生活する中で持った考えだ。
これまで創作/物語のひとつとして捉えていた「.hack」や「ソードアートオンライン」といった世界が身近に感じられたことで、
今まで夢, 実現の可能性が低いと思っていた想像が形にできるのではと希望を持った。

これらのやりたかったことを実現するために、以下の条件で制作を始めた。

「VRChatのゲームワールド」の形でVRかつ多人数で遊べるゲームを作る

「2. 多人数で同時に遊べるゲームをデザインしてみたい」を本気で実現するなら、ネットワークの設計からやれという声が聞こえてきそうだが…。
今回は敷居を下げるためにVRChat上で動くゲームワールドという形で制作を行うことにした。

Unityでゲーム(VRChatで「ワールド」と呼ばれる)を作り、VRChatサーバにアップロードすれば、一部の制限はあるものの、それがそのままVRゲームとして動く。
ちょうど動画の22秒くらいにワールド制作の作業風景が映っている。

VRChatのワールドを作るためには、無料で提供されているVRChat向け開発ツール「VRCSDK」をUnityにインポートした上で開発を進める必要がある。

VRCSDKに含まれる多彩な機能を利用することで、ノープログラミング[要出典]で多人数で同時に遊べるゲームを作ることができる。

VRCSDKは開発の敷居を下げるだけではない。C#を使えないため、値や参照の受け渡しに制約が発生する。この制約がゲーム制作に工夫を求めるが、それはまた別の機会があったら解説する。

(2020/3/16追記) 以下の記事で解説した。

ゲームの企画を練る

さて、前節で述べたやりたかったことと条件をもとにVRChatのゲームワールドの企画を具体的に詰めることになる。
今回、私はゲームの大枠を以下のように定めた。

・1-4人で遊べる協力型アクションゲーム
・世界観は近未来のVR空間

なぜ「協力型」かというと、
VRChatはアバターを介したコミュニケーションを通して、人との交流を作るプラットフォーム思えたからだ。

そのため、今回のゲームでもVRChatの特色を生かし「ゲームを通した人とのコミュニケーション」を実現したかった。

ゲームを通したコミュニケーションを実現するために、
「近接攻撃ができるプレイヤー2人」「遠距離攻撃ができるプレイヤー2人」で役割を分けた。
役割が明示的になることで、自ずと自分に求められるふるまいがはっきりすると考えられるためだ。

多人数プレイ限定にしなかったのは、自分が割とソロプレイをしているためだ。
多人数でないと難易度が大きく上昇するバトルワールドを訪れたときに攻略が大変だったので、1人でも遊べるようなゲームにしたかった。

世界観に関して、シナリオは以下の通り。

未来。人は記憶と外見情報をXRCのストレージに共有し、意識のみで生きていた。
しかし、突如謎のプログラムによってストレージが攻撃を受け始めた。
ストレージが完全に破壊されると、記録されているデータは戻らない。
自分自身や仲間を守るため、君たちは攻撃してくるプログラムに立ち向かう。

現在のVRChatの仕様(仕様?)では、非正規な命令を実行することで他人のアバターを奪うことが可能だという。
将来アバター情報とともに意識・記憶もアップロードできるようになったとき、それらが奪われる状況が出てくるだろうか...と想定して書いてみた。

現在の延長線上に話を作っているので、現在のVRChatプレイヤーには想像しやすいのではないだろうか。(非現実的か?)

ゲームを制作する

企画を練ったところで、ゲームの制作に移ることになる。
ゲームの制作は、以下の点を念頭に置いて進めた。

・オブジェクトと演出で世界観を表現する
・状況理解を促進するワールド設計(オブジェクト配置)

オブジェクトと演出で世界観を表現することについて、ゲーム体験の一部として、世界観の表現が必要だと考えられる。

通常のゲームだと、何シーンもの遷移や画面にオーバーレイされるUIなどによって世界観が表現される。
しかし、VRChatでは1つのマップ(Unityでいう1シーン)でゲームの世界観の表現が完結する必要がある。

そのため、マップ(ワールド)が一貫性をもっていなければ世界観が崩れる可能性がある。
一貫性を保つために、同一の世界観を感じさせるオブジェクト、フォントの選定、パーティクルやアニメーションの演出、音楽の表現を取り入れる必要があると考えられる。

一方、世界観を表現することに終始して、ゲームの遊びやすさを損なうことも問題だ。
ゲームの目的や遊び方をプレイヤーに伝える必要もある。

スクリーンショット 2020-03-04 21.31.17

そこで、ゲーム中の画像に使われるフォントは「源ノ角ゴシック」「Orbitron」に統一、ゲームのルールや遊び方を示した掲示物の背景色は青とモノトーンを中心にまとめた。

また、マップを遠目に見たときに、いろいろな装飾が見えているとプレイヤーにごちゃっとした印象を与えかねない。
装飾(ルール説明の掲示物など)は、近づいた時のみ表示させるようにして、その時必要な情報だけが見えている状況を実現した。

素材の作成や入手

・ボクセルモデリング
・パーティクルとUI
・アセット
・音楽

・ボクセルモデリング

スクリーンショット 2020-03-05 21.29.28

ボクセルモデリングでマップやオブジェクトを作るのは始めてだったので、
既存のゲームを参考にしつつMagicaVoxelやBlenderで作ってみた。
特に深く参考にしたのは「真・女神転生3」無印版のラストダンジョン、
「ケムリクサ」のスマホのような葉や「新・世界樹の迷宮」に登場する近未来の建造物など。

・パーティクルとUI

パーティクルやUIまわりの表現はIllustratorでテクスチャを作成し、ShurikenやQuadに載せることで実装した。
Quest対応のワールドなので、あまり凝ったシェーダーは導入せず、ほとんどをStandardシェーダーやParticle以下のシェーダー, VRChat/Mobile/Particles/Addtiveシェーダーで表現した。
参考にしたのは「十三機兵防衛圏」の崩壊編に出てくるUIやパーティクル、「真・女神転生4」のガントレットが表示するUI、「世界樹の迷宮」の説明書やUIなど。

・アセット

使用したアセットは以下の通り。

・剣向け汎用トレイル / Black. Cat’s (剣の軌跡(<- ファルコムのゲームタイトルみがある)に使用)
・SyncSamples > TimerSystem (ゲーム内のタイマーとして利用)
・SkySerie Freebie (スカイボックス)
・Smoothie Prefabs > Simple Counter (スコア保持と計算 後述)
・Post Processing Stack v2 (PC版の見た目調整)
・Standard Assets (ゲームオブジェクトに追従させたり、NavMeshを制御したり)
・魔王魂, DOVA (SE)

スコアの値を保持するシステムが必要だったため、Simple Counterというアセットを用いた。Simple Counterがないと加算減算繰り上がり繰り下がりetc…をアニメーションで書く体験が待っていた。

・音楽

音楽は、戦闘・非戦闘とワールドの状況が変わるたびに音楽をぶつ切りにしたくなかったので、インタラクティブミュージック(プレイヤーの挙動に併せて動的に変わる音楽)を導入した。

インタラクティブミュージックに関しては、以下の記事がとてもわかりやすい。

インタラクティブミュージックの例として、以下の2つの手法が存在する。

「縦の遷移」(例: ゲームの状況に応じて曲のアレンジを切り替える)
「横の遷移」(例: ゲームの状況に応じて楽譜の繰り返し括弧を動的に生成する)

現状「横の遷移」はVRCSDKのコンポーネントやUnityのアニメーションで表現しづらかったので「縦の遷移」を導入した。(私は横の遷移を完全に実現するためには、Unity C#のスクリプトやミドルウェアが必要だと考えている)

「縦の遷移」の導入理由がややネガティブに思われるが、導入を後押しした理由もある。

ひとつはゲームの状態は「戦闘前後」「戦闘中」の2つで表されるためだ。2アレンジを状況に応じて変えて流すことで状況の把握を促す効果&プレイヤーのテンションのコントロールが期待される。

もうひとつは「武器の使い方を念頭に戦略を考える」「実際に戦う」という今回の作品に似たの2つの体験を「縦の遷移」を使った音楽でまとめた「ファイアーエムブレム覚醒」などの作品の存在だ。

今回の実装はアニメーションで単純に曲のクロスフェードを書いただけだ。これでは当然ながら完全には同期しなかったので、曲の実装は今後の課題だと思う。(VRCSDK3 Udonが出たら横の遷移もなんとか実現できないかと思っている。付き合ってくれる人がいればの話だが...)

世界観から、曲調はトランスをはじめとする電子的な音楽がいいとぼんやり考えていたので、トランスが上手いFutamiくんにお願いした。とてもよかった。

上のリンクからステージBGMを聴けるが、縦遷移をする2つのアレンジのうち1つは含まれていない。

テストプレイ

ゲーム制作が進んできたら、自分の作品を客観的な視点で見直すことが必要となる。その見直しに有用なのが、第三者によるテストプレイだ。

VRChatの上でゲームを作ることで得られる利点として大きなものが、テストプレイに対する敷居が下がることだと思う。

・VRChatで一緒に遊んでいる人を、その場の流れでゲームのデバッグに誘える
・ビルドしたものは即座にオンライン上に上げられるので、人が遊んでいる反応を直に見ながら開発を進められる

任天堂の宮本さんは制作中のゲームを、社内で作っているゲームを詳しくない人に遊んでもらい、その反応をもとにゲームの改善を繰り返すらしい。
(書籍「岩田さん」の記述だったか…どこに書いてあったかは忘れてしまった。不正確な情報だったらすみません)
ゲームの個人制作において何も知らない人を何度も呼んで、テストプレイをしてもらうことは環境的に難しい面もある。

しかし、VRChat上のワールドとしてゲームを作る場合はこれが可能になってくる。
さっきまで一緒に喋っていた、自分のゲームについて何も知らないフレンドの方をテストプレイに呼べることは、VRChatならではの利点だといえるだろう。

今回ワールドを作るにあたり、フレンドさんにテストプレイをしてもらった。そこでいただいた意見をもとに改善した点は以下の通り。

・難易度の追加(最初はNovice難易度のみしかなかった)
・ルールの説明文の変更
・バトルの勝利/敗北によって床や壁の色を変える
・各種武器のパーティクルを派手にする

テストプレイで意見をいただいたことにより、ワールドのクオリティが大きく改善したように思える。今後もVRChatでワールドを制作する際には積極的にテストプレイをお願いしていきたい。

画像2

剣が光る、難易度が変わるなどはテストプレイがないと無かったかもしれない...という画像です。

まとめ

VRゲームを作る上ではPC/Mobileゲーム開発と少し違った観点から作品を構成することが必要だ。

一方、制作のワークフローに関しては普通のUnityでのゲーム制作とあまり変わらず、企画->制作->テストプレイという流れでVRChat上で動作するゲームをひとつ完成させることができた。

VRChatで動くゲームを作る際には、Unity C#が制限されるなど欠点もあるが、テストプレイの環境がよいなどの利点も存在する。

余談

・作品名に「Ep.1」と表記しているが、続編はないのか

ストーリーを展開させる意味で、今回の作品に関連するものをなにか1つくらい作りたいとは思っている。

ただ、今すぐ作業に入ると今回とギミックが今回と似たり寄ったりになる可能性が高いため、すぐに制作に入るかは微妙。
VRCSDK3のUdon実装後に気が向いたらやるかもしれない。

今後

もう一作くらいVRChatでゲームワールド作りたいと思っている。グラフィックに対してボクセル以外のアプローチを試してみたい(考え中)