はじめに
こんにちは、Unityエンジニアのおはぎ @ohayo_ohayo_ です。 前職ではスマホゲームの開発をしており、今年の5月にジョインして約半年が経ちました。 現在はMirrativ内でエモモというアバター部分の開発をしています。 スマホゲーム開発とは結構違うなあと思ったので、 その辺をカジュアルに書こうという試みです。
プロダクト
大前提としてMirrativはゲーム配信アプリであり、ゲームではありません。 Unityを使っている部分は主にエモモの制御部分であり、一つのシーンで完結しています。 そのシーンに様々な機能を追加していくため、大きな一つのシーンとなります。 機能としては着せ替え、アニメーション、Cinemachineを使った演出が主であり、 それぞれはゲーム開発でも使われることがある技術です。 体力や攻撃力などのパラメータがないため、 パラメータのほとんどが見た目に直結しています。 また、ソーシャルゲームと同様にイベント運営が行われており、 週に1回のペースで衣装の追加が行われています。
全体的には3Dキャラを着せ替えるというゲームに近く、 そのような経験があればキャッチアップが多少は楽になったと思います。
上には書かれていませんがUnityを使用した例外として、 エモモRUN・エモバトなどのミニゲームがありますが、 これについてはまだキャッチアップできていない部分です。
技術
Mirrativはネイティブアプリであり、エモモはUnity as a Library(UaaL)で実現しています。 これはざっくりいうとUnityをライブラリとしてネイティブアプリに乗せられるという技術で、 過去の記事にて詳しく説明しています。
UaaLはとても便利な技術なのですが、難しい点がいくつかあります。
まず、この技術を使っているプロダクトが少ないためインターネット上に転がっている情報も必然的に少ないです。 ネットの情報よりも社内のエンジニアの方が詳しく、ある意味最先端です。
また、Unityだけで完結しないためビルドパイプラインがどうしても複雑になってしまいます。 UnityプロジェクトをiOS/Androidのフレームワークとしてビルドし、 それぞれのプロジェクトにインポートしてビルドするという手順なのですが、 私がネイティブアプリに関してそこまで詳しくないのもあり、把握には時間がかかりました。 iOS/AndroidエンジニアもUnityについてあまり詳しくはないため、 CI/CD環境の整備や実機での確認はUnityのみで作られていた場合よりも非常に面倒です。
また、エモモ周りのエラーの特定はネイティブのエンジニアにも難しく、 原因がネイティブの実装にあってもUnityエンジニアが特定することがよくあります。 そのため、エモモの表示がおかしいなどの不具合は基本的にUnityエンジニアが担当し、 原因の特定をしています。
その他にも、Unityエンジニアに必要なスキルはそこそこ高度かつ広範で、 シェーダやアニメーションやCinemachineなどの3D全般、 アセットバンドルやCI/CDなどの運用効率化などを少人数で対応しています。
組織
ミラティブのUnityエンジニアは2名で、小さなエンジニアチームで開発・運用をしています。 その分、デザイナーとの距離が近く、様々な要望を吸い上げています。 Unityチームでは「デザイナーのやりたいことを叶える」ことを目標にしており、 できるだけ柔軟に、リッチな表現ができるように日々開発をしています。
エモモチーム全体でも侃々諤々と議論がかわされており、 「わかりあおうとし続ける」ことに向き合っていろいろな施策を試しています。 みんなで考えて良くしていこうという風土を強く感じます。
また、全社の風土もみんなで楽しもうの精神が強く、 通話しながらできるゲームを業務の一環でやったり、 社員の登壇するイベントをSlackで実況したりしています。
終わりに
という感じでゲームエンジニア的にミラティブの話をしました。 3D周りの技術としてはそこまで難しいわけではないのですが、 UaaLや設計まわりの学習コストが高めのプロダクトだと思っています。 今後はいかに学習コストを下げたり運用の面倒臭さをなくすかが課題かなと思っており、 日々奮闘中です。
We are hiring!
というわけで、積極採用中です!
TwitterにリプライやDMでもいいです。気軽にお話しましょう!
↓エンジニア向け採用資料です。