2020年6月11日(木) – 2020年7月12日(日) に開催されたclusterゲームワールドコンテストに参加しました。提供されているトリガーやギミックを理解するのにそれほど時間はかからなかったのですが、当初計画していたゲームが想定外にうまく動作しなかったことで、制作時間が大幅に伸びてしまいました。
なので、今後clusterでワールドを制作しようとするクリエイターたちに向けて、少しでも役立つ情報が残せたらと思い、この記事にまとめます。
この記事は、2020年7月13日時点での機能をもとに執筆しています。今後のバージョンアップでclusterの動作が変わっている可能性がありますので、その点はご注意ください。
なお、初めてclusterでワールドを制作する人でも参考になるように、ステップを意識した段落構成にしました。
Contents
Step1. サンプルワールドを遊んでみる
まずは公式が作例として紹介しているサンプルを遊んでみるのがいいです。おすすめなのは、以下の3つです。現時点でclusterできることが割とわかりやすく紹介されているワールドとなっています。
今回のコンテストに参加するにあたって自分もプレイしてみました。その感想が以下の通りです。
- シューティングが安定して遊べる。ただし、当たり判定は物理ベースなので、レイであたり判定を取ったり、高速弾を発射したりとかはできない
- 協力してクリアするゲームは、 チュートリアルを展開するのが難しいため、遊び方の導入が特に難しい
- 物を置く系のゲームは、操作性の悪さが前面にでる(….むしろ、操作性の悪さをゲームにするのはありかも)
- ポータル系のゲームは、ワールドに人が多く、アイテムが足りてなかったので遊べなかった。…待機時間は注意すべし
- 迷路系のゲームは….プレイが単調になりがち。繰り返し遊べるかといわれると、それは微妙
- 対戦物はいいかも。そもそもclusterはミートアップに強い
- スマホの画面タップによる当たり判定がひどい、これはひどかった…..アイテムが拾えない
Step2. キットのサンプルを触ってみる
github(こちら)から提供されているパッケージには、いくつかサンプルシーンが含まれています。ワールド制作初心者は、ギミックとトリガーでできることを理解するために、まずはこれらのシーンを一通り遊んでみることをおすすめします。サンプルシーンはAssets > ClusterVR > Scenes にまとめられています。
自分の場合、サンプルシーンを一通りあそんでみた感想は、以下のとおりでした。
- Unityでのデスクトップ操作も、思った以上に操作しにくい…..
- 良くも悪くもマルチプラットフォーム。デバイスによって操作性が大きく違うこと考慮すべし
- リアルタイムシャドウは使えない。光源をベイクする前提の絵作りが重要
- ランタイムスクリプトは使えない。使える道具でいかにゲームをデザインするか
- シェーダーの工夫がワールドの作り込みにつながりそう
Step3. 使えるギミックを整理
サンプルシーンを一通り触ってみると、clusterのギミックとトリガーでできることがだいたいわかります。大まかに一覧にしてみました(今回の制作でよく使用したものは太字にしてます)。
- アイテムを持つ
- アイテムのグリップ位置の指定
- 物理マテリアル(ex. ゴム、氷…..)
- アイテム所持中を使う(クリックのみ)
- アイテム所持中か否かの状態取得
- (所持せずに) アイテムをクリックしてイベントを発火
- コライダーのenter, exit
- アイテム生成時にイベントを発火
- 強制的な方向転換
- 別ワールドへの転生
- アイテム/プレイヤーのワープ
- アイテムの破壊
- アイテムの生成
- アイテムにトルクを与える
- アイテムにパルスを与える
- アニメーションの再生
- タイムラインの再生
- オーディオの再生
- オブジェクトの表示非表示(SetActive)
いろいろ実験して気が付いたこと
Unityに詳しくないなら、ここのコラムは飛ばして構いません。サンプルをめぐっていて気が付いたことがいくつかあるので紹介しておきます。
アニメーターとタイムラインを活用しよう
clusterではランタイムスクリプトがまったく使えません。しかし、スクリプトはアニメーションとタイムラインで代用できる部分がおおく(色、ポジション移動など)、実はそれほど困ることはありませんでした。事前にキーを打っておく必要があり、これが結構面倒ではあったのですが、かなりの部分を代用できるので、アニーメーションもしくはタイムラインで何とかできないか探ってみることが、ワールド制作の近道です。
シェーダーエディターが優秀
スクリプトが使えない分、シェーダーでなんとかするのは非常に有効です。おそらく、Unityになれている人ならシェーダーでの表現を試みるはずです。しかし、clasterはURPではなく、従来のBuilt-in pipelineを使用しています。これはつまり、Unityが提供するShaderGraphは使えない、ということです。一方で、Built-in pipelineの環境なら、古き良きシェーダーエディターがまだまだ使えます。今回の制作には、Amplify Shader Editorを使用しました。
実は、Amplify Shader Editorは、ShaderGraphよりも高性能です。また、URPやHDRPに対応しています(←意外と知られてない)。もしclusterでシェーダー芸をするのであれば、こうしたシェーダーエディターを取り入れてみることも検討してみてください。
ちなみにカスタムなシェーダーを使えば、アニメーションを使わずにアニメのような表現をすることができます。アニメーションよりもずっと軽量なので、Unityに慣れているならシェーダーでできることを考えるとより一層魅力的なワールドが作れると思います。
Step4. ゲームデザインの方向性を決める
ちょっと遊んで見た感じ、あきらかに向いてなさそうなジャンルがあるので、それを避けつつアイデアを出します。なお、今回意識した点としては、以下の通りです。
- 物を持つ置くの動作にストレスを感じるので、できるだけワンクリックでフィードバックを返したい
- 視線を動かすだけでも、ワンテンポかかるので、 操作がシビアなゲームにはしない
clusterで作るゲームの基本は、「クリックorタップで完結するゲーム性」が重要かなぁ、と思いました。
ちなみに、今回のコンテストで思い浮かんだアイデアは下のようなものでした。
- リアル野球盤
- ポータル
- ホッケー
- フットボリン(卓上サッカー)
- エレベーター
- ロシアンルーレット …etc.
ゲームデザインがなかなか決まらない場合は、実験しながら考えることをおすすめします。ちなみに、今回のワールドで行っていた自分の実験は、下のような感じでした。
Step5. 必ずcluster上でテストプレイする
締め切り一週間前に、勤務先の社内でレビューの時間をいただき、何人かにテストプレイをしてもらいました。テストプレイしてもらったバージョンでは、チームに分かれてゴールを奪いあう、というホッケーのようなルールでした。
…….結果、惨敗でした。
実際にプレイを始めてみると、プレイヤーが瞬間移動したり、ボールがフィールドから消失したりと、予期せぬ動作によってまともに遊べるものではありませんでした。これらはローカルなUnity上だと全く問題なかったことなのですが、clusterのサーバー上だと、オブジェクトの同期に時間がかかってしまうため、同期の遅延が頻発したことが原因でした。
このとき明らかになった改善ポイントとしては、
- オブジェクトの同期がうまくいっていなかった。物理で動くオブジェクトに対して、同期を使うのはほぼ無理
- 物理で動作する時計も、上と同じような理由で、時間が正確に測れなかった。残り時間といったルール設定をワールドで共有するのは難しい
つまり、「同期することが重要なゲームデザインは、ゲームとして成立しない」ということがわかりました。
シビアな時間管理も避けたほうがいいです。プロトタイプでは、物理でカウントを取っていたのですが、これもうまく同期できていませんでした。正確に測れない時計ほど意味のないものはないので、削除です。(逆に適当でいいのであれば、下のように重力落下を利用して時間を計ることは可能です)
このように、テストプレイをしてみると、想定しないことがかならず起こります。自分の場合、ワールドを実際に解放して人を入れて遊ぶ、というテストを最後の方にしてしまったため、修正に非常に大きな労力がかかりました。 ですので、ある程度ゲームデザインが形になったら、必ず人を入れてテストプレイしましょう。Unity上の動作とcluster上の動作は、必ずしも一致しません。
Step6. レビューをもとに改善
このまま出しても、当然遊んでもらえないので、仕様変更を決意しました。ただし、作った世界観やモデルを投げ捨てるのはあまりにもったいないので、なんとか再利用する方向でゲームデザインを練り直すことにしました。
改善案として、対戦形式のゲームデザインを廃止しました。これは苦肉の策だったのですが、同期が思ったように動作しない以上、ゲームから省かざるをえませんでした。
対戦ゲームからの方向転換により、一人でも遊べるゲームにシフトチェンジしました。ゲームの根幹をすべて差し替えるのは難しかったので、面白いと思った「すべる」という要素を残しながら、マスターコインを相手のゴールに入れたら勝ちというルールに変更しました。
Step7. 完成
そして完成した作品がこれです。
まとめ
というわけで、clusterゲームワールドコンテストに参加して、その振り返りをざっと紹介させていただきました。ゲームを作るのに、コードを一行も書かなくていい時代になったのは、とても革新的だと思います。
ただし、最適化はほとんどできないと思った方がよいです。シビアな同期を求めるゲームデザインには、まったく向かないので、ワールドを作り込む前に実現可能か検証しましょう。
本格的なゲームには向かないものの、普段ゲームを遊ばないライト層には受けがよさそうなので、ちょっとした遊びを取り入れたワールド制作に参入してみてはいかがでしょうか。
意外と知られていないテクニック
追記:大賞を受賞しました!!
結果発表があり、大賞をいただきました! また、賞品としてVIVE Proをもらいました、やったね!