Unityを使ったcluster開発と面白さについて/SYNC 2022登壇レポート

先日行われたUnityに関する大規模オンラインカンファレンスイベント『SYNC 2022』

クラスター社でも社員が登壇し「Unityを使ったcluster開発」と「cluster開発の面白さ」について発表しました。

この記事では、イベントの登壇内容を要約してお伝えします。

アーカイブ視聴はこちらから可能です。(クラスターのパートは22:05からです。)

今回のイベントの登壇者

ねおりん

美術大学でデザインを学ぶなか、ゲーム作りの面白さに魅了されグラフィックよりもプログラミングに熱中。大学を中退し株式会社Aimingにソフトウェアエンジニアとして入社。約3年間勤めたのち、2018年11月にクラスター株式会社にジョイン。Unityアプリケーション開発にかかる設計から実装までを担当、現在はEngineering Managerとしてclusterのユーザー体験向上を担うチームのリードを務める。

クラスターについて

クラスター社のミッションは「人類の創造力を加速する」、ビジョンは「バーチャル経済圏のインフラをつくる」です。これらの実現のために、バーチャルUGCプラットフォーム  clusterを開発しています。

Unityのエンジニア目線で見たclusterは、モバイルとPCに対応したマルチプラットフォームアプリケーションです。 Meta Quest2とPC VRにも対応しています。さらに、多人数のリアルタイム通信や、user generatedな3Dデータを扱うといった切り口もあります。

これらの要素によって、clusterでは、プラットフォームをまたいで、自分の好きなアバターで、同じ空間に集まることができます。仲間と一緒にワールドをつくったり、他のユーザーがつくったワールドのゲームをプレイしたり、コミュニケーションを取って楽しめるのが特徴です。

▼モバイル、PC:

概ね同じ画面ですが、それぞれのプラットフォーム向けにUIを最適化しています。

▼VR(PC、Meta Quest2):

空間上にUIが浮かんでいるような画面になります。

Unityを使ったcluster開発

clusterのビルドターゲットは、 Windows, Mac, Android, iOS,  そしてMeta Quest2向けの5つです。AndroidとiOSのビルドでは、 Unity as a Libraryを用いて、Unity実装部分をネイティブモバイルアプリケーションに埋め込んでいます。

コードの設計としては、全体的にはlayered archtectureを採用し、UIなどを含む Presentation layerの中では基本的にMVPを採用しています。

clusterでは、project全域でasmdefを定義しており、下記の設計が強制されているのが特徴です。

使用ライブラリとして有名どころでは、 UniRx, UniTask、DIにはZenjectを採用しています。clusterではこれらのライブラリをだいぶハードに使っていると思います。

Unityのversionに関しては、今年 2019.4 から最新のLTS 2021.3 へのアップグレードを実施しました。target-typed newが使えるようになったのは、嬉しいポイントです。コーディング規約でも、早速推奨しています。

cluster開発の面白さ

clusterを開発していて、技術的に面白いと感じることは、マルチプラットフォーム対応であること、そしてその上でuser generatedな3Dのデータを扱うことです。

clusterでは、PC,モバイル,VRデバイス、それぞれのデバイスごとに、アバターを動かせる自由度やポインティングの方法が異なります。そこに冒頭にお伝えした様々な体験を実装しているということから、clusterの開発は非常に複雑です。しかし、だからこそ面白いと感じています。

何をどう共通化するか、あるいはあえて共通化しないのかという設計判断には、プロダクト的にも技術的にも深い理解が必要です。すごく大変そうに聞こえるかもしれませんが、エンジニアとして取り組むのに面白い課題のひとつだと思います。

また、アバターやワールド、アイテムなど、 cluster上で扱う3Dのデータのほぼすべては、ユーザーが作成したものです。そのため、一般的なゲーム開発では使える前提が当てはまらないことがあります。例えば、 #FF00FFは通常描画されないはず、とかy座標 9999 は main cameraには写らないはず、のようなことです。一般的な最適化のテクニックとは異なるアプローチをあえて取ることも多くあります。

一定の制限を設けることで回避することもありますが、clusterでは「人類の創造力を加速する」ために、いかにこの制限をなくしていくか、というのが重要な課題です。この点では、ゲーム開発とツール開発、どちらの難しさも面白さもあるのが、 clusterの開発だと感じています。

まとめ

クラスターではUnityエンジニアや3DCGデザイナーの方を積極採用中です!

もっと詳しく知りたいという方は11月24日(木)に開始されるCluster Unity Talk Vol.1にてclusterにおけるUnity開発についてざっくばらんにお話しします。ぜひご覧ください。