Eureka Engineering
Published in

Eureka Engineering

Mac でもできる!Cluster と JavaScriptで始めるメタバース開発

この記事は「Eureka Advent Calendar 2022」20日目の記事です。

前回は AI Team 成川による「ML System Monitoring Tips」でした。

こんにちは! Web Front-end Team の竹内( @b0xp2 )です。

一昨年は VRChat去年は NeosVR についての記事を書いて来ましたが、今回も引き続き業務とは一切関係ない内容で書き進めて行きます。予めご了承ください。

はじめに

Cluster のこたつで温まる弊社社員たち

COVID-19 の影響から弊社でリモートワークが導入されてからはや2年が経ちまして、その始まりから弊社ではリモートワークを VR により充実させるべく弊社 Slack 内で非公式団体の「 vr-team 」が密かに活動してきました。

各種 VRSNS へのアバターの導入を助ける活動からワールドの作成など、「 vr-team 」の活動は多岐にわたりましたがそこには大きな障壁がありました。弊社社員のほとんどは Mac を業務で利用しており、 VRSNS で活動するのにほぼ必須となる Windows を利用できる社員は限られているということです。

そんな Mac しか 持っていないという方でも Windows 搭載の PC と同じ様に活動できるのが Cluster で、今回はこちらを紹介していきます。かつて社内のエンジニアへ Cluster を勧めた時のように、主にソフトウェアエンジニアの方が読むことを想定して書いて行きますのでぜひお付き合いください。

Cluster の楽しみ方

Cluster は日本企業発のメタバースプラットフォームで、大人数が集まる事ができるイベントからゲームまで様々なコンテンツを作ったり楽しんだりする事ができます。

対応機種は VR にも対応する Windows PC 版の他、 VR なしでも楽しめる Mac OS/Android/iOS 版に加えて Oculus Quest 2 単体で動作する Oculus Quest 版があります。なんと Clusterではどのデバイスでもほぼ機能に制限がありませんので、手元にある好きなデバイスからすぐに遊ぶ事ができます。

Android 版の操作画面

Cluster には実に多くのコンテンツがありますが、初めて触れる場合はまず日本の地方自治体や企業とのコラボワールドを訪れてみることをおすすめします。 (2022/12 現在ではテレビ朝日さんとのコラボで六本木を再現したワールドが登場しています。)

Cluster の開発環境

もし Cluster を気に入ったのであれば何かを作ってみたいと考えると思いますが、ここでは Cluster のコンテンツを作るための開発環境について紹介していきます。

Cluster ワールド開発画面の例

Cluster はイベントやゲームができる場所となるワールドを作成できる他、アバターが手に持ったり身につける事ができるアイテムを作ることができます。

ワールド・アイテムの制作には Mac か Windows の PC が必要になりますが、どちらで開発した場合でも全てのデバイスから同じように利用できます。(また、スマートフォンだけでワールドを制作できるワールドクラフト機能というものもあります)

通常 Cluster がサポートするような膨大なデバイスへコンテンツを作るにはプラットフォームを跨いだクロスビルドのための複雑な準備を要しますが、 Cluster ではゲームエンジンの Unity に専用の開発用キット Cluster Creator Kit を用いる事で全デバイスへのクロスビルドを半自動で行ってくれるため、必要な手順は Unity のプロジェクトを準備してビルドを行うだけで完了します。

具体的な手順については Cluster 公式にてサンプルプロジェクトを使ったチュートリアルが用意されていますのでそちらを参照ください。

Cluster Creator Kit 独自のプログラミングエンジン

Cluster のコンテンツを作る場合は Unity と Cluster Creator Kit を利用する必要がありますが、その場合は通常の Unity で用いられる C# を使ったプログラミングは利用できません。

ではゲームなどのプログラミングを必要とするコンテンツはどうやって作れば良いのかと言うと、 Cluster Creator Kit に存在するゲーム制作機能と呼ばれる独自の仕組みを使用します。

Cluster Creator Kit のゲーム制作機能は Unity 上のオブジェクト(≒3Dモデル)に対して4種類の機能を与え、その組み合わせによってゲームのロジックが組まれていきます。

ゲーム制作機能の組み合わせ例(画像には3種類の機能が写っています)

ゲーム制作機能でオブジェクトに付与する機能は以下の4つです

  • アイテム(Item): アイテムは、ワールドに配置できるインタラクティブなオブジェクト(の最小単位)です。 オブジェクトの位置を同期したり、プレイヤーがオブジェクトを掴んで移動できるようにする機能があります。
  • トリガー(Trigger): アイテムにトリガーを追加することで、ワールド内で起こったことやプレイヤーの動作を検知し、それをギミックに通知できるようになります。
    トリガーには、アイテムが他のものに衝突したことを通知するものや、 アイテムに「使う」動作を追加するものなどがあります。
  • ギミック(Gimmick): ギミックを設定することで、トリガーからの通知を読み取ってアイテムやワールド、プレイヤーに様々な変化を起こすことができます。
    ギミックには、アイテムを動かすものや、音やアニメーションを再生するものなどがあります。
  • オペレーション(Operation): オペレーションは、トリガーからの通知を読み取って、何らかの処理をした結果をギミックへ通知します。
    オペレーションには、通知を読み取ってから一定時間後に別の通知を行うタイマー機能や、通知内容をランダムに選ぶ機能、メッセージ同士の計算を行う機能などが含まれます。

※4 機能の説明については Cluster 公式ゲーム制作機能概要説明のページより引用しています

このゲーム制作機能は完全に Cluster 独自の仕組みであるため少しとっつきにくいかも知れませんが、あえて Web エンジニア向けに分かりやすい例を出すのであればアイテムは HTML 上のコンテンツを JavaScript から参照する getElementById や React の useRef の機能に似ていて、トリガー・ギミックはマウス入力等によって起こる event の発火と、それを検知して操作を行う event handler の挙動に良く似ています。

例えばユーザーが使用する事でどこかへワープする転移結晶のような物を作りたい場合、転移結晶の 3D モデルを用意した後それをアイテムとし、ユーザーが使用した時に通知を送る Interact Item Trigger というトリガーを与えます。その後 Interact Item Trigger からの通知によってプレイヤーをワープさせるために Warp Player Gimmick というギミックを追加する事で、ユーザーが使用する事でユーザーがどこかへワープする機能が実際に動作します。

このゲーム制作機能については理屈で理解するよりもサンプルに触れて理解して行った方が分かりやすいと思いますので、まずはこちらの公式 Creator Guide の記事 「Logicを使ったゲームワールドを作ろう」を見つつ、わからない所は公式ドキュメントで補完しながら触ってみることをおすすめします。

新機能! Cluster の開発に JavaScript を使う

JavaScript を使った Cluster のアイテム実装の例

標準的な Unity とは違いゲーム制作機能による開発が必要な Cluster ですが、 2022 年 10 月についに JavaScript による開発がサポートされる事になりました。

しかし、これによって既存のゲーム制作機能は使わずに JavaScript だけで開発ができるかどうかというとそうではなく、 ゲーム制作機能のアイテムに対して Scriptable Item を追加で付与して一部の処理を JavaScript で肩代わりする事ができると言った仕組みになっています。

とは言え複雑なゲームロジック等をゲーム制作機能だけで実装するのは困難を極めるので、日頃から JavaScript に慣れ親しんでいる人はこちらの Creators Guideの記事「clusterでスクリプト(JavaScript)を使ってみよう!【ドキュメントリンク集】」を見て試してみてください。

また、これは既に TypeScript に触れている人向けの話ですが Cluster 上の JavaScript 専用の型定義ファイルが公式から提供されていますので分かる人は活用すると非常に便利です。

まとめ

Windows の PC が無いとなかなか楽しむ事ができない VR に対応するメタバースが多い中で、 Mac でも開発できる上にスマートフォン一つでフルに遊べてしまう Cluster は非常に魅力的なサービスだと言えます。

VR やメタバースに興味はあるけど、Windows のパソコンを今から買うのはちょっと…と言う方は是非年末休みに Cluster を使ってゲームを作ってみてはいかがでしょうか。

また Cluster では年二回のペースで 48 時間内に作り上げたワールドを投稿しあうお祭りのようなイベント「Cluster Game Jam」が開催されており、優秀者には50万円もの賞金が贈られていた事があります。次回はおそらく 2023 年の春頃に開催されるかと思いますので、ぜひそちらにも参加して賞品をゲットしてみてください!

Cluster Game Jam に参加中の著者とチームメイト

なお、明日の 12/21 には弊社 SRE Team メンバーの小川による「Argo RolloutsとPairsのデリバリー戦略 -Progressive Deliveryへの移行-」が公開予定です。お楽しみに!

--

--

Learn about Eureka’s engineering efforts, product developments and more.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store