みなさまこんにちは、よこて @n0mimonoです。段々とすごしやすい気温になってきましたがいかがお過ごしでしょうか。今日の話は
- ミラティブとライブゲーム
- ライブゲームはUnityを利用したWebGLベースで動いているよ
- バックエンドアーキテクチャの紹介
行ってみます!
ミラティブ × ライブゲーム
ミラティブは、スマホで簡単にゲーム配信ができるサービス『Mirrativ』を展開していますが、今年(2022年)からゲームとライブ配信を融合させた『ライブゲーミング』に特に注力してます(次は4月次点のプレスリリース)。
「ライブゲーミング」とは、配信中のゲームに視聴者が介入できる、ゲームとライブ配信が融合した次世代のゲーム体験となります。
視聴者は従来のライブ配信のようにコメントやギフトアイテムを贈るだけでなく、実際に配信者といっしょにゲームをプレイする「参加型ライブゲーム」や、ギフトアイテムを通じてゲームに対して影響を与える「介入型ライブゲーム」など、今までのゲームやライブ配信とは全く違った体験を楽しむことができます。
ほぼ読んで字のごとくですが
- ゲームを一人で遊ぶ →楽しい
- ゲームを遊びつつ、何人かでわいわいする(=ゲーム配信) →もっと楽しい
- 何人かでわいわいが能動的にゲームに影響する(=ライブゲーム) →もっともっと楽しい
マルチなプレーヤーがいるゲームと何が違うんじゃろ?例えば、ゲームセンターで他の人が遊んでいるのを後ろから見ていたというような体験をもっていればわかりやすいかもしれません。ゲームを誰かと楽しむときってそれを遊ぶ前に「見て」「一言言いたくなる」体験があるんですね。ライブゲームはこういう体験をシームレスにつなぎます。この観点で、ライブゲームはゲームをさらに発展させるというより、ゲームを中心としたコミュニケーションの楽しさという切り口で新しい遊び方を生み出そうとしています。
開発者的な視点だとマルチ対戦のゲームって作るのめっちゃ大変なんですが、そういうあたりを別の形で解決しようとしているとも言えます。
- リアルタイムごにょごにょのバックエンドが大変
- エラーハンドリングとかチート対策とか考え出すとさらに大変
- そもそも人が集まらないと成立しない
- そもそもマルチプレイングが必須要件なのかわからない
結果的に開発費が高騰しやすくそれに比例して開発期間が長くなるわけですが、こういう問題に対する解答を提示することがメタバースの時代のプラットフォームの仕事かなと思っています。
Mirrativ × WebGL × Unity
技術的な話へ、理解を深めるためにまずライブゲームの前を話しておきます。
Unity as a Libary
ミラティブではUnityをUnity as a Libaryという形ですでに利用しています。
特に、MirrativにおけるアバターたるエモモはUaaLで動作しています。ここでは詳細を割愛しますが、興味がある方はリンク先を読んでもらえると幸いです。
ライブゲーム 2019 with HTML5
ライブゲーミングですが2019年頃(たぶん)にミラティブは似たようなことをやってました。当時、Mirrativを遊んでいた方は覚えていらっしゃるでしょうか・・。ここでは当時の技術的な側面をラップアップします。
- Mirrativアプリ上のWebview上で動作させる(=ゲーム単体はWebアプリである)
- WebアプリはHTML5ベースである
- 視聴画面上に透過させたWebviewを配置し、これを「視聴者のUI」とする(=これもWebアプリとしてゲーム側から提供する)
もともとMirrativには配信者と視聴者にコメントが流れる仕組み(技術的にはPubSub)があるので、これを利用する形で視聴者がゲームへ介入する仕組みを実現していました。
現在ミラティブが提供するライブゲームも似たような部分と異なる部分があります。
ライブゲーム 2022 with UaaL
今の話の1つ目をします。UaaLベースでゲームを作るのは(理論的には)可能なため、ここから派生させたライブゲームがあります。
このあたりの開発も以前より拡大させています。
ライブゲーム 2022 wih WebGL
今の話の2つ目をします。WebGLについて。
- Mirrativアプリ上のWebview上で動作させる(=ゲーム単体はWebアプリである)
これは現在でも採用しています。さて、この手のシステムを作る時に考えられる選択肢は次のいずれかになります。
- アプリ内の機能(UaaLの一部)として動作させる
- 独立したモバイルアプリとして動作させる
- ブラウザまたはWebview上のWebアプリとして動作させる
どれを選ぶかは事業、製品、市場、技術の諸々を考慮する必要があります。プラットフォームを構築するというビジョンだと多くの開発者が低コストで開発しデリバリーできることが必要であるため、UaaLへの全振りは選択肢から外しました(UaaLは万能ではないという話)。2番目を選ぶか3番目を選ぶかは悩ましいところですが、これは市況に大きく左右されると思います(2022年時点のミラティブは3番目を選択したわけですが、3年経ったら全然違うことを言っている可能性があります。実際、ビジネス検証という観点でミラティブは上の全てを実験しています)。
以前と異なる点として
- WebアプリはUnity WebGLである
これを採用しています。主要な理由で言うと次辺りです。
- モバイルアプリサイズのゲーム開発のコストパフォーマンスはUnityが最高である
- UnityのWebGLとモバイルデバイスのハードウェアが十分に進化している
- ネイティブアプリへのスピンアウトのオプションを取ることができる
実際、私としては色々検討したわけですが返ってくる反応としては「それ動くんですか?」が多く、実際触ってもらった感想としては得られるものは「・・(意外と)普通に動いてますね」でした。
Unityの利用は今後の展開を広げやすいというのと、開発者を確保しやすい(私自身もUnityエンジニアなので)という事情もあります。ありがたいことに色々な会社さまからお声を頂いています。
今月リリースしたものも紹介しておきます。
一方、メジャーでない技術を使うということはそれ相応のトレードオフもあるわけで、そのうちメンバーの誰かが書いてくれると思います。よろしくおねがいします。
LiveGame × Backend Architecture
最後にバックエンドと開発インフラについて簡単に触れておきます。
ライブゲームそのものは独立したWebアプリなので、極端な話としてMirrativのバックエンドから見た場合はUnityで作らなくても動きます。今までの話を全否定しているわけですが、Webアプリであればシステム上は動きます(バックエンドから見た場合は。というよりWebアプリである必要すらないです)。
問題になるのは、Mirrativと接続する次の3点です。
- Mirrativへのinput
- Mirartivからのoutput
- Mirrativの開発環境
1つ目はMirratvのバックエンドへのリクエストですが、これは開発者向けのAPIを提供しています(以下、4月時点の動画から引用、現在のものと異なりますがご容赦ください)。
2つ目は例えばMirrativの配信上に流れたコメントを拾いたい(表示したい、あるいはゲームに利用したい)という場合どうするかで、これはWebhookという形で提供しています(=どう使うかは開発者に委ねる)。
最後にMirrativの開発環境について。当然ですがライブゲーム(Webアプリ)の開発中にMirrativのプロダクション環境に接続したらダメなので、それに対応した環境が必要になります。これも開発者向けに提供しています。
詳しい話はそのうちメンバーの誰かが書いてくれると思います。よろしくおねがいします。
おわりに
今までライブゲームの技術的な話をほぼしてこなかったので今回書いてみました。細かい話はそのうちメンバーの誰かが書いてくれると思います。よろしくおねがいします。
We are hiring!
ミラティブでは『メタバースにおけるキラーコンテンツ』ライブゲームを一緒に作りたいエンジニアやクリエーターを募集中です!