cluster対戦ワールド制作小話
どうもお世話になってます、PS5が届いて生活リズムが不可逆的に崩壊したFlorです。
先日(と言っても2ヶ月以上前なのですが)バーチャルSNS"cluster"で行われた大加速祭、その中のワールド制作チャレンジで弊サークル制作のゲーム『ファイト・クラブ・イン・クラスター』がバラエティ賞を受賞する運びとなりました。皆さん本当にありがとうございました。
ということで、この機会に今まで制作してきた対戦ゲームについて仕様などをふり返ると共に、その中で気づいたVRSNS上のマルチプレイ対応ゲーム制作ノウハウを共有していきたいと思います。
CCKでのゲーム制作特有の知見は引用文形式で書いていくので、興味のない方は読み飛ばしちゃって構いません。
バーチャル大相撲~秋場所~
記念すべき対戦ゲーム第一作、clusterゲームワールド杯2020に応募したワールドですね。
このワールドを作り始めたのはロジック機能が追加された直後で、まだアイテムからOwnerの状態を読み取ったりということが出来なかったため、プレイヤーのHPを管理するゲームは諦めてコライダーを活用したシンプルな押し合いゲームを作りました。
…が、この制作も一筋縄では行かず。というのもclusterではプレイヤー間の同期(特に生成直後のアイテムの同期)がざっくりとしているため、自分の端末で生成された弾が相手の端末で表示されるまで0.5秒~1秒程度のラグが発生します。
この時は弾の初速を0にしてContinuous Force Gimmickを利用し加速させることで、弾が相手に届くまでに生成した弾の同期が終わるようにしました。
『大相撲』ワールド制作時に意識したのは
①落ち着ける場所(ロビー)と熱くなる場所(土俵・観戦場)は分ける
②どこに居ても他のプレイヤーの存在を感じられるようにする
という2点です。
①について、あくまでclusterは"バーチャルSNS"なので、ゲームワールドとはいえ落ち着いて人同士の交流が生まれる場所を作るべきだと考えました。(押し合いゲームしたいだけならスマブラやるじゃん!)
お互いの肩書や立場を気にせずゲームや景色・アバターをきっかけに人とゆる〜く繋がれる、というのがバーチャルSNSのとても良いところだと思っているのでそこは活かしていきたいですよね。
このあたりを意識した結果、ゲーム自体は単純でも多くの人に長居してもらえるワールドが出来たので良かったんじゃないかと思います。(後でまた書きますが、人が長居できるというのは最重要ポイントです)
②について、clusterではVRchatと異なり、自分の今いるワールドに誰がいるかを参照することが出来ません。(👈記事をダラダラ書いている間にwebページから参照できるようになりました)
同じワールドに人がいるかどうか分からないようでは対戦の始めようがないので、ここはなんとかする必要がありました。
本ワールドではプレイヤー入室時にアナウンスを鳴らすことで土俵にいてもロビーの人の気配を感じられるように、また土俵を俯瞰するカメラをロビーに置くことでロビーから土俵上の人を認識できるように工夫しています。
上記の2点は『ファイト・クラブ・イン・クラスター』でも意識しているので確かめてみてください。
ボンバイエナジー!
対戦ゲーム二作目、ClusterGameJAM in winterに応募したワールドです。製作期間が2日(うち1日は予定と被っていたので実質稼働1日)と短かったのですが、逆凪・朝月葵・brと泊まり込みでロジック・モデリング・説明文などを分業することで何とか間に合わせることができました。
この頃にはアイテムからOwnerの参照が出来るようになり、またUIも作り込めるようになったのでHPギミックを導入したゲームを作ることにしました。
折角だから、と思いHPに応じて移動速度が変わるギミックも積みました。
…が、このギミックが曲者でした。プレイヤーの保持する変数から移動速度・ジャンプ力を動的に変化させようとすると毎秒ItemTimerを回すしかないのですが、cluster上だとたまにTimerが動かなくなることがあったのでしばしばゲームが続行不能になってしまいました。
加えてclusterには『状態の上限』が存在、すなわち一つのワールドで発火できるTriggerやGimmickに上限が定められています。プレイヤーが遊んでいようが遊んで無かろうがTimerは回り続けるので、『ボンバイエナジー!』は長時間プレイヤーが滞在するだけで不具合が生じるようになるというバーチャルSNSとして最悪の状況が生まれてしまいました。Timerをループさせて使う場面は最小限に抑えたほうが良いかもしれないです。
大相撲よりギミックを凝った対戦ゲームとして出したボンバイエナジーでしたが、結果として人と交流するのにはあまり適さないワールドとなってしまいました。
ファイト・クラブ・イン・クラスター
対戦ゲーム三作目、大加速祭2021ワールド制作チャレンジに応募したワールドです。今回はワールド制作期間が非常に短かったこともあり、"UnityCollaboration"という複数人で一つのUnityプロジェクトを制作できる機能を使いました。
共同制作してくれたのは『ねがいましては』でロジック実装直後からその機能を使いこなしていたbrと、高校時代からプログラムの扱いに長けていたじぇい(どちらも弊サークルメンバー)でした。改めてありがとう。
ワールドの原案を出してくれたフォカ、細かい部分のモデリングを手伝ってくれた逆凪にも感謝です。
さて、『バーチャル大相撲』の項で書き『ボンバイエナジー』の項で反省したように、たとえ対戦ゲームであっても(二人以上必要な対戦ゲームだからこそ、かもしれません)バーチャルSNS上にワールドを作るからには人と交流できる空間を用意することはかなり重要です。
『ファイト・クラブ』ではこの"人が交流する空間"にこれまで以上に重きを置きました。具体的には、この交流空間自体にカジノゲーム要素を加えることで一人で遊びに来た方にも長く遊んでもらえるようにし、ユーザー間の交流のきっかけが生まれやすいように工夫しました。
また、BGMに関してもユーザーが長時間滞在することを意識してスローテンポなジャズを選択しました。(加えてカジノの筐体稼働音といった環境音を若干混ぜることで一人で遊んでいる時の孤独感も緩和しているつもりです)
先程書いたように人が長居できるというのはワールドに人を呼び込む上で最も重要なポイントで。というのも、今のclusterでユーザーがワールドにjoinするための最も太い導線は
①フレンド欄に表示される現在地
②clusterトップページに表示される『今遊ばれているワールド』
の2つだと思われるからです。(肌感覚ですが…)
つまり一人のユーザーに長時間滞在してもらうことができれば、そのユーザーのフレンドがjoinしてくれる可能性や、はたまたトップページから初見さんが入って来てくれる可能性が高まるワケですね。
そうして人が集まれば自然に対戦ゲームも始まり、さらにワールド全体に活気が生まれるようになるはずです。
(2021/06/02追記)
書き忘れていましたが、この大加速祭が始まるちょっと前にCCKにセーブ機能が追加されましたね。変数をユーザーごとに保存できるという機能で、これにより入室時に前回遊んだ時のステータスや進行状況が引き継がれるようになりました。(⇒長く複雑なゲームが作れるようになった)
とはいえゲームジャムでそんな長いゲームを作り込む余裕はないので、本ワールドでは簡潔にセーブ機能を活用してもらうため所持金(コイン)を導入していました。
結果として多くの人に複数回ワールドを遊んでいただけて(特に剥ぎ汁さん、ありがとうございます!)とても嬉しかったです。
所持金のような形でなくとも、何かしらのパラメータを次回入室時に引き継げるようにしておくと複数回ワールドを訪れる動機付けができるので導入して損はないと思います。スタンプカードとか。
ここで、なるべくパラメータを可視化する工夫をする、というのも重要なポイントになります。(スクショをSNSでシェアしやすくなるほか、ワールド内で自分の所持金を他の人に共有できると交流のきっかけにもなるため。)
ただし、Set Text GimmickでPlayerの変数を直接表示できるのはPlayerLocalUIの中に限るので、本ワールドではGrabbable Itemを経由してownerの変数を表示する仕組みを作りました。
まとめ
・clusterのようなバーチャルSNSで対戦ゲームを制作する時には"対戦ゾーン"と"交流ゾーン"を分けるべし
・"交流ゾーン"ではなるべくユーザーに滞在してもらえるような工夫を施すべし
・Timerは多様するべからず
今後のワールド制作方針
正直対戦ワールドはもうお腹いっぱいです(これはJAMの度に言っていますが)
なので、次のワールド制作イベントに参加することがあればエモいノベルゲームなど作ってみたいなあと思ってます。
そもそもTRPGサークルが何で対戦ゲーばっかり作ってたんですか?(素)
おわり
この記事が気に入ったらサポートをしてみませんか?