Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity as a Libraryで実現する視聴者介入型ライブゲーミング

Sugaya
October 05, 2022
230

Unity as a Libraryで実現する視聴者介入型ライブゲーミング

Sugaya

October 05, 2022
Tweet

Transcript

  1. ネイティブとUnity連携のサンプル • ネイティブからUnityへのメッセージングはsendMessageToGOを利用 • 起動中のゲームごとにパラメータに応じた処理を実行 // sendMessageToGOで情報を送る UnityFramework.getInstance()?.sendMessageToGO( withName: “ApiHandler”,

    functionName: “MiniGameInput”, message: “パラメータ”) iOS(Swift) // 同一名のオブジェクト、メソッドを用意して情報を受け取る public class ApiHandler : MonoBehaviour { public void MiniGameInput(string parameter) { // 起動中のゲームごとにパラメータに応じた処理を行う currentMiniGame.Input(parameter) Unity
  2. Unity内でのパラメータ処理 • パラメータはフォーマットルールを決めて処理を分岐 • 「,」でKeyとValueを区切る、ValueはJsonで渡すフォーマット parameterの形式例:以下のようなフォーマットでネイティブから送られる  gift,ギフト内容のJson(ID、贈ってくれたユーザー情報、時間、量など)のBase64エンコード public class MiniGame

    { public void Input(string parameter) { // 「,」でkey,valueを判定 var codes = parameter.Split(','); switch (codes[0]) { // パラメータがギフトのもの case “gift”: var input = Utility.Base64ToUtf8(codes[1]); var effect = JsonConvert.DeserializeObject(input); // ギフトの内容に応じた効果処理を実行 Unity
  3. 通信処理の特徴 • サーバーからのギフト情報はネイティブが仲介する ◦ アプリに元からあるギフトの仕組みが使える ◦ ネイティブ/Unityが二重で受け取ることを避ける ◦ Unityに対応したBCSVRのPub/Subの仕組みがない •

    所持アイテムの取得など、ゲーム固有のAPI通信はUnityが行う ◦ 以前はAPI通信もネイティブが行っていた ◦ ネイティブが中継するだけになることが多かったため、Unityとサー バーとが直接通信できるようにした
  4. ライブゲーミングでのネイティブの役割 • BCSVRから受け取るコメント・ギフト情報の管理・表示 • Unity領域の起動・終了・初期化処理 ◦ UnityでAPI通信を行うためのログイン情報の共有 • 一部UIの表示 ◦

    Mirrativ内で既にネイティブで実装しており、再利用したいUI ▪ コメント画面、ガチャ画面 ◦ Unityプロジェクトには含まれない画像を表示するようなUI ▪ ユーザーのアイコンを表示するランキング画面 • (メリット)ゲーム内容によらず共通化がしやすい
  5. ライブゲーミングでのUnityの役割 • ゲーム本体の動作 ◦ ユーザーからのゲーム操作の受付 ◦ ゲーム内UIの表示 • APIサーバーとの通信 ◦

    ユーザーのアイテム取得通信、ゲームクリア通信など • (メリット)通常のUnityでのゲーム開発と近い開発ができる