Slide 1

Slide 1 text

REALITY株式会社 クライアントエンジニア 三宅広大 "人がいるメタバース" を実現する REALITYのワールド機能

Slide 2

Slide 2 text

• 三宅広大/yaegaki • 2020年 REALITY株式会社 入社 • Unityエンジニア/テックリード • アバター関連 • ビデオ通話 • ワールド • etc 自己紹介 2


Slide 3

Slide 3 text

REALITYについて 3


Slide 4

Slide 4 text

スマホひとつでアバター作成、ライブ配信による交流やゲームまで楽しめるメタバース REALITYについて 4
 アバター
 ライブ配信
 コミュニケーション
 ゲーム
 ワールド


Slide 5

Slide 5 text

REALITYについて 5


Slide 6

Slide 6 text

REALITYについて 6


Slide 7

Slide 7 text

スマホひとつでアバター作成、ライブ配信による交流やゲームまで楽しめるメタバース REALITYについて 7
 アバター
 ライブ配信
 コミュニケーション
 ゲーム
 ワールド


Slide 8

Slide 8 text

ワールドについて 8


Slide 9

Slide 9 text

9
 ワールドの概要

Slide 10

Slide 10 text

ワールドの概要 10


Slide 11

Slide 11 text

ワールドの機能(特徴) まとめ ● REALITYアバターで最大8人で遊べる仮想空間 ● 座る機能 ● アイテム装着 ● 動画配信視聴 ● etc 11


Slide 12

Slide 12 text

ワールドの機能(特徴) まとめ ● REALITYアバターで最大8人で遊べる仮想空間 ● 座る機能 ● アイテム装着 ● 動画配信視聴 ● etc 12


Slide 13

Slide 13 text

ワールドの機能(特徴) まとめ ● REALITYアバターで最大8人で遊べる仮想空間 ● 座る機能 ● アイテム装着 ● 動画配信視聴 ● etc 13


Slide 14

Slide 14 text

動画配信視聴 ● ワールド内に設置したスクリーンで動画を再生する機能 ● HLS(HTTP Live Streaming)を用いたライブストリーミング視聴 にも対応 ○ ワールドにいる人と一緒に視聴できる ● タイムテーブルを用いた動画再生機能 ○ ライブストリーミングと静的なファイルによるCMを切り替え可能 14


Slide 15

Slide 15 text

動画配信視聴 15


Slide 16

Slide 16 text

動画配信視聴 16
 ここがスクリーンに なっていて映像が流 れる

Slide 17

Slide 17 text

ワールドの機能(特徴) まとめ ● REALITYアバターで最大8人で遊べる仮想空間 ● 座る機能 ● アイテム装着 ● 動画配信視聴 ● etc 17


Slide 18

Slide 18 text

その他機能 ● テーマ機能 ○ 同じワールドで見た目が変わる ● アニメーション同期機能 ○ オブジェクトのアニメーション再生時間を同期する ● オブジェクト状態同期機能 ○ オブジェクトの任意のデータを同期する ● SE再生機能 ○ 特定のタイミングでSEを再生する機能 18


Slide 19

Slide 19 text

”人がいるメタバース”としてのワールド ● 配信とシームレスに繋がっている ○ 誰かと遊びたかったら配信を開けば”人”がいる ● トライアルでは延べ来場者数が400万人*を超える ○ ”箱”をつくっても”人”がいないを解決 ● 世界中のREALITYユーザーに展開が可能 ● さまざまな種類のワールドをリリース 19
 *:2022年4月22日~2022年6月12日 自社調べ

Slide 20

Slide 20 text

桜ワールド これまでにリリースしたワールド 20


Slide 21

Slide 21 text

ミュージックフェスワールド これまでにリリースしたワールド 21


Slide 22

Slide 22 text

4周年記念ワールド これまでにリリースしたワールド 22


Slide 23

Slide 23 text

これまでにリリースしたワールド 23


Slide 24

Slide 24 text

コラボワールド これまでにリリースしたワールド ● 他社様とのコラボワールドを複数リリース 24


Slide 25

Slide 25 text

ワールドの実装 25


Slide 26

Slide 26 text

ワールドの登場人物(ロール) ● オーナー ○ ワールドを起動した配信者 ● コラボゲスト ○ 配信にコラボゲストとして参加しているユーザー ● ビジター ○ 視聴者の内、ワールドに参加しているユーザー ○ 早い者勝ちで視聴者がワールド内視聴者になる ● 視聴者 ○ ワールドには参加せず視聴だけしているユーザー 26


Slide 27

Slide 27 text

ワールドの登場人物(ロール) ● オーナー ● コラボゲスト ● ビジター ● 視聴者 27
 ワールド内にアバターが出現して 動き回れるユーザー 全てをまとめてメンバーと呼ぶ 合計で8人まで

Slide 28

Slide 28 text

ワールドの登場人物(ロール) ● オーナー ● コラボゲスト ● ビジター ● 視聴者 28
 配信を見ているだけのユーザー ワールドにアバターが登場せず オーナーと同じ視点になる

Slide 29

Slide 29 text

ワールドの登場人物(ロール) 29
 オーナー コラボゲスト ビジター 視聴者

Slide 30

Slide 30 text

ワールドの登場人物(ロール) 30
 オーナー コラボゲスト ビジター 視聴者 アバターが登場 音声通話可能

Slide 31

Slide 31 text

ワールドの登場人物(ロール) 31
 オーナー コラボゲスト ビジター 視聴者 アバターが登場のみ

Slide 32

Slide 32 text

ワールドの登場人物(ロール) 32
 オーナー コラボゲスト ビジター 視聴者 自分のアバターが 登場しない オーナーと同じ視点

Slide 33

Slide 33 text

ネットワークミドルウェア ● 外部ミドルウェアは使用せず独自実装 ● WebSocketを用いたリアルタイム通信 ● サーバー側はパケットのリレーとステートの保存を行う ○ ワールドのロジックを持たない 33


Slide 34

Slide 34 text

ワールドのメッセージング ● ワールドでの出来事を全ユーザーに共有する方法 ○ ステート更新パターン ○ ブロードキャストパターン 34


Slide 35

Slide 35 text

ワールドのメッセージング ● ステート更新パターン ● ブロードキャストパターン 35


Slide 36

Slide 36 text

ステート更新パターン ワールドのメッセージング ● 視聴者のワールド参加の例 ○ 初めは全てのクライアントは同 じステートを共有している ○ ステートには参加しているメン バーの情報が保存されている 36
 オーナー ステート:A 視聴者 ステート:A MultiGameServer ステート:A メンバー ステート:A

Slide 37

Slide 37 text

ステート更新パターン ワールドのメッセージング ● オーナーにワールド参加を要 求する 37
 オーナー ステート:A 視聴者 ステート:A MultiGameServer ステート:A メンバー ステート:A

Slide 38

Slide 38 text

ステート更新パターン ワールドのメッセージング ● 要求が正しければメンバーリ ストを更新する 38
 オーナー ステート:B 視聴者 ステート:A MultiGameServer ステート:A メンバー ステート:A

Slide 39

Slide 39 text

ステート更新パターン ワールドのメッセージング ● オーナーがサーバーにステー トを登録する 39
 オーナー ステート:B 視聴者 ステート:A MultiGameServer ステート:B メンバー ステート:A

Slide 40

Slide 40 text

ステート更新パターン ワールドのメッセージング ● サーバーがオーナー以外にス テートを送信する 40
 オーナー ステート:B 視聴者 ステート:B MultiGameServer ステート:B メンバー ステート:B

Slide 41

Slide 41 text

ステート更新パターン ワールドのメッセージング ● ステートの情報を用いて更新 する ○ 視聴者が無事メンバーになる 41
 オーナー ステート:B メンバー ステート:B MultiGameServer ステート:B メンバー ステート:B

Slide 42

Slide 42 text

ステート更新パターン ワールドのメッセージング ● オーナーのアプリが落ちた場 合 ○ メモリ上のステートが失われる 42
 オーナー ステート:X メンバー ステート:B MultiGameServer ステート:B メンバー ステート:B

Slide 43

Slide 43 text

ステート更新パターン ワールドのメッセージング ● オーナーのアプリが落ちた場 合 ○ メモリ上のステートが失われる 43
 オーナー ステート:X メンバー ステート:B MultiGameServer ステート:B メンバー ステート:B メンバーリスト 消失の危機

Slide 44

Slide 44 text

ステート更新パターン ワールドのメッセージング ● オーナーのアプリが落ちた場 合 ○ 再接続時にサーバーからス テートが送信される 44
 オーナー ステート:B メンバー ステート:B MultiGameServer ステート:B メンバー ステート:B

Slide 45

Slide 45 text

ステート更新パターン ワールドのメッセージング ● オーナーのアプリが落ちた場 合 ○ サーバーに再接続時にサー バーからステートが送信される 45
 オーナー ステート:B メンバー ステート:B MultiGameServer ステート:B メンバー ステート:B メンバーリスト 消失の危機回避

Slide 46

Slide 46 text

ステート更新パターン ワールドのメッセージング ● メリット ○ 全てのメンバーが同じ状態を共有できる ■ 競合状態にならない ○ オーナーのアプリが落ちても情報が失われない ● デメリット ○ オーナーが処理を行うのでレスポンスが悪い ○ オーナーがいないと処理されない 46


Slide 47

Slide 47 text

ワールドのメッセージング ● ステート更新パターン ● ブロードキャストパターン 47


Slide 48

Slide 48 text

ブロードキャストパターン ワールドのメッセージング ● アイテム装着の例 ○ メンバーBがアイテムを装着す る場合 48
 オーナー メンバーB MultiGameServer メンバーA

Slide 49

Slide 49 text

ブロードキャストパターン ワールドのメッセージング ● メンバーBが装着情報を ブロードキャストする 49
 オーナー メンバーB MultiGameServer メンバーA アイテムAを装着

Slide 50

Slide 50 text

ブロードキャストパターン ワールドのメッセージング ● 装着情報を受け取ったメン バーは情報を更新する 50
 オーナー メンバーB MultiGameServer メンバーA メンバーBは アイテムA装着し ている

Slide 51

Slide 51 text

ブロードキャストパターン ワールドのメッセージング ● 新しく視聴者が増えた場合 51
 オーナー メンバーB MultiGameServer メンバーA メンバーBは アイテムA装着し ている 視聴者C

Slide 52

Slide 52 text

ブロードキャストパターン ワールドのメッセージング ● 新しく視聴者が増えた場合 52
 オーナー メンバーB MultiGameServer メンバーA メンバーBは アイテムA装着し ている 視聴者C メンバーBは なにも装着 していない

Slide 53

Slide 53 text

ブロードキャストパターン ワールドのメッセージング ● 新しく視聴者が増えた場合 53
 オーナー メンバーB MultiGameServer メンバーA メンバーBは アイテムA装着し ている 視聴者C メンバーBは なにも装着 していない データ不整合

Slide 54

Slide 54 text

ブロードキャストパターン ワールドのメッセージング ● 定期的に情報を再送信する 54
 オーナー メンバーB MultiGameServer メンバーA 視聴者C アイテムAを装着

Slide 55

Slide 55 text

ブロードキャストパターン ワールドのメッセージング ● 装着情報を受け取ったメン バーは情報を更新する 55
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている

Slide 56

Slide 56 text

ブロードキャストパターン ワールドのメッセージング ● 装着情報を受け取ったメン バーは情報を更新する 56
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている データ不整合解消

Slide 57

Slide 57 text

ブロードキャストパターン ワールドのメッセージング ● メンバーBのアプリが落ちた場 合 57
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている

Slide 58

Slide 58 text

ブロードキャストパターン ワールドのメッセージング ● メンバーBのアプリが落ちた場 合 58
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている メンバーBは なにも装着 していない

Slide 59

Slide 59 text

ブロードキャストパターン ワールドのメッセージング ● メンバーBのアプリが落ちた場 合 59
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている メンバーBは なにも装着 していない データ不整合?

Slide 60

Slide 60 text

ブロードキャストパターン ワールドのメッセージング ● 定期的に情報を再送信する 60
 オーナー メンバーB MultiGameServer メンバーA 視聴者C 装着なし

Slide 61

Slide 61 text

ブロードキャストパターン ワールドのメッセージング ● 装着情報を受け取ったメン バーは情報を更新する 61
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは なにも装着 していない

Slide 62

Slide 62 text

ブロードキャストパターン ワールドのメッセージング ● 定期的に情報を再送信する 62
 オーナー メンバーB MultiGameServer メンバーA 視聴者C メンバーBは アイテムA装着し ている (情報は失われるが) データ不整合解消

Slide 63

Slide 63 text

ブロードキャストパターン ワールドのメッセージング ● メリット ○ オーナーを経由しないのでレスポンスが早い ○ オーナーがいなくても情報を更新できる ● デメリット ○ データを定期的に送信する必要がある ○ アプリが落ちると情報が失われる 63


Slide 64

Slide 64 text

位置同期 ● ブロードキャストパターン ○ オーナーが状態を管理しない ● 定期的に現在の位置、入力の情報をブロードキャストする ○ 変更がなければ送らない ○ 現在は100ms毎に送信する設定 ● データが2つ溜まった時点で位置を予測する ○ 他のユーザーからは少し遅れて見える 64


Slide 65

Slide 65 text

メッセージのシリアライズ/デシリアライズ ● シリアライズ/デシリアライズにはProtocol buffersを使用 ○ Googleが開発 ○ IDLで構造を定義してコードの自動生成ができる ○ バイナリ形式で出力できる 65


Slide 66

Slide 66 text

メッセージのシリアライズ/デシリアライズ 66
 message WorldAvatarSyncData { int32 timestamp = 1; Habanero.ProtobufVector3 position = 2; Habanero.ProtobufVector3 rotationEuler = 3; Habanero.ProtobufVector2 velocity = 4; int32 motionState = 5; bool startEntryMotion = 6; bool startExitMotion = 7; } サンプル

Slide 67

Slide 67 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 67


Slide 68

Slide 68 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 68
 キー名などの情報が ない 値がバイナリ

Slide 69

Slide 69 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 69
 重要なので後述

Slide 70

Slide 70 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 70
 Unity標準のJSONシ リアライザでは使えな い

Slide 71

Slide 71 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 71
 IDLを書いてコード生 成しないといけないの で少し手間 開発初期はJSONを 使う、生成のフロー整 備でましになる

Slide 72

Slide 72 text

Protocol buffersのメリットデメリット メッセージのシリアライズ/デシリアライズ ● メリット ○ テキスト形式のJSONよりサイズが小さくなる ○ 互換性を保ったまま拡張できる ○ Dictionary(Map)が使える ● デメリット ○ 定義が面倒 ○ ヒューマンリーダブルではない 72
 データがテキストでは ないのでどんな値か 分かりにくい

Slide 73

Slide 73 text

互換性の話 メッセージのシリアライズ/デシリアライズ ● 配信者と視聴者で別のバージョンのアプリを使用している可能性 がある ○ 古いバージョンと新しいバージョン の組み合わせでも動作する必要がある 73
 配信者 バージョン: 1.1 視聴者 バージョン: 1.0 MultiGameServer

Slide 74

Slide 74 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる ● fieldの追加ができる 74


Slide 75

Slide 75 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる ● fieldの追加ができる 75


Slide 76

Slide 76 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる 76
 message SampleMessage { int32 hoga = 1; } { "hoga": 999 } Protobuf JSON

Slide 77

Slide 77 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる 77
 message SampleMessage { int32 hoga = 1; } { "hoga": 999 } Protobuf JSON hogeにしたいのにhogaにしてしまった!

Slide 78

Slide 78 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる 78
 message SampleMessage { int32 hoge = 1; } { "hoga": 999 } Protobuf JSON データにはフィールド名が含まれず、 フィールド番号のみ含まれるので変更が可能

Slide 79

Slide 79 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる 79
 message SampleMessage { int32 hoge = 1; } { "hoga": 999 } Protobuf JSON フィールド名がデータに含まれるので変更すると 古いバージョンのアプリで読み込めなくなる

Slide 80

Slide 80 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● field名の変更ができる ● fieldの追加ができる 80


Slide 81

Slide 81 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● fieldの追加ができる 81
 message SampleMessage { int32 hoga = 1; } Protobuf

Slide 82

Slide 82 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● fieldの追加ができる 82
 message SampleMessage { int32 hoga = 1; int32 fuga = 2; } Protobuf fieldを追加できる 古いバージョンのアプリでは無 視される

Slide 83

Slide 83 text

Protocol buffersの互換性 メッセージのシリアライズ/デシリアライズ ● fieldの追加ができる 83
 message SampleMessage { int32 hoga = 1; int32 fuga = 2; } Protobuf 独自バイナリフォーマットを採 用するとこれができない可能性 がある

Slide 84

Slide 84 text

新規ワールドの開発 84


Slide 85

Slide 85 text

新規ワールドの開発 ● 既存機能のみを使用する場合はアセットの更新のみで新規ワール ドを作成可能 ○ アプリのアップデートなしで新規ワールドをリリース可能 ○ アセット側でワールドの細かい挙動を制御できるようになっている ● アセットで制御できる例 ○ アバターの出現位置 ○ ギフトの出現位置 ○ 装着アイテムの制御情報 ○ etc 85


Slide 86

Slide 86 text

アバターの出現位置 新規ワールドの開発 86


Slide 87

Slide 87 text

アバターの出現位置 新規ワールドの開発 87
 ワールド起動時に この付近に アバターが出現

Slide 88

Slide 88 text

ギフトの出現位置 新規ワールドの開発 88


Slide 89

Slide 89 text

ギフトの出現位置 新規ワールドの開発 89
 机の上に視聴者から 送られたギフトが 出現

Slide 90

Slide 90 text

装着アイテムの装着情報 新規ワールドの開発 90


Slide 91

Slide 91 text

プロップの装着情報 新規ワールドの開発 91
 デバッグ情報

Slide 92

Slide 92 text

プロップの装着情報 新規ワールドの開発 92
 装着情報 ● アニメーションあ り/なし ● どこに装着するか ● アイコン

Slide 93

Slide 93 text

新規機能の開発 ● 既存の機能で実現不可能な場合は新規機能を実装する ● 4周年記念ワールドで新規実装した機能 ○ ワールド内視聴者登場機能 ○ 座る機能 ○ 動画配信視聴機能 ○ アニメーション同期機能 ○ etc 93


Slide 94

Slide 94 text

新規機能の開発 ● 新規機能を実装する際は互換性を注意する ○ 新規ワールドをリリースした時に古いアプリで既存のワールドが遊べなくな ることは避ける 94


Slide 95

Slide 95 text

新規機能の開発 ● 新規機能を実装する際は互換性を注意する 95


Slide 96

Slide 96 text

新規機能の開発 ● 新規機能を実装する際は互換性を注意する 96
 既存ワールド 新アプリのリリース後 でも古いアプリでも遊 べる

Slide 97

Slide 97 text

新規機能の開発 ● 新規機能を実装する際は互換性を注意する 97
 新規機能を実装した ワールド 新しいアプリでしか遊 べない

Slide 98

Slide 98 text

新規機能の開発 ● 古いアプリで新規機能を使用する ワールドを起動する場合 ○ バージョンガード機能で起動を防ぐ ■ Webから最低起動バージョンを 指定することができる 98


Slide 99

Slide 99 text

新規機能の開発 ● バージョンガードTips ○ アプリリリース後すぐはアップデートしてない人がいる ■ 基本的にREALITYは月曜にアプリリリース、水曜にワールドリリース ○ 新規機能を必要なワールドをリリースする前に 余裕をもって対応バージョンのアプリをリリースしておく 99


Slide 100

Slide 100 text

新規ワールドのリリースフロー 100


Slide 101

Slide 101 text

新規ワールドのリリースフロー ● 企画 ● アセット作成 ● アセットの配置 ● ワールドの公開 101


Slide 102

Slide 102 text

新規ワールドのリリースフロー ● 企画 ● アセット作成 ● アセットの配置 ● ワールドの公開 102


Slide 103

Slide 103 text

企画 ● どのようなワールドを作成するか ● 作成するワールドのイメージを作成 ○ 構成や雰囲気がわかるもの 103
 桜ワールド初期構成案

Slide 104

Slide 104 text

新規ワールドのリリースフロー ● 企画 ● アセット作成 ● アセットの配置 ● ワールドの公開 104


Slide 105

Slide 105 text

アセットの作成 ● アセットの仮作成 ● アセットの本作成 105


Slide 106

Slide 106 text

アセットの作成 ● アセットの仮作成 ● アセットの本作成 106


Slide 107

Slide 107 text

アセットの仮作成 アセットの作成 ● ワールドのレベルデザインが確認できる状態 ○ 歩ける状態 ● 企画とワールドの方針を確認する 107


Slide 108

Slide 108 text

アセットの仮作成 アセットの作成 108


Slide 109

Slide 109 text

アセットの作成 ● アセットの仮作成 ● アセットの本作成 109


Slide 110

Slide 110 text

アセットの本作成 アセットの作成 ● 本番で使用するアセットを作成する ● 完成したアセットは開発用リポジトリにpushする 110


Slide 111

Slide 111 text

アセットの本作成 アセットの作成 111


Slide 112

Slide 112 text

新規ワールドのリリースフロー ● 企画 ● アセット作成 ● アセットの配置 ● ワールドの公開 112


Slide 113

Slide 113 text

アセットの配置 ● 完成したアセットをビルドしてAssetBundleにする ● ビルドしたAssetBundleの情報をサーバーに登録 ○ AssetBundleのメタ情報を管理サーバーに登録 ● ビルドしたAssetBundleをGCSに配置する ○ この段階ではまだアプリからアクセスできない 113


Slide 114

Slide 114 text

アセットの配置 ● Jenkinsで自動化 ○ iOS/Androidビルド ○ サーバーに登録 ○ GCSに配置 114


Slide 115

Slide 115 text

新規ワールドのリリースフロー ● 企画 ● アセット作成 ● アセットの配置 ● ワールドの公開 115


Slide 116

Slide 116 text

ワールドの公開 ● ワールドの公開設定を行う ● AssetBundle公開設定を行う 116


Slide 117

Slide 117 text

ワールドの公開 ● ワールドの公開設定を行う ● AssetBundle公開設定を行う 117


Slide 118

Slide 118 text

ワールドの公開 ● ワールドの公開設定を行う ○ ゲーム一覧に表示されるようにする ○ Webから設定する 118


Slide 119

Slide 119 text

ワールドの公開 ● ワールドの公開設定を行う 119


Slide 120

Slide 120 text

ワールドの公開 ● ワールドの公開設定を行う ● AssetBundle公開設定を行う 120


Slide 121

Slide 121 text

ワールドの公開 ● AssetBundle公開設定を行う ○ アプリからAssetBundleがダウンロードできるようになる ○ Webから設定する 121


Slide 122

Slide 122 text

ワールドの公開 ● AssetBundle公開設定を行う 122


Slide 123

Slide 123 text

まとめ 123


Slide 124

Slide 124 text

まとめ ● REALITYがなぜ”人がいるメタバース”なのか ○ 配信と融合したワールド ○ 全世界の人と遊べる ● ワールドの実装方式 ○ 現状はシンプルな実装 ○ 今後さらに拡張予定 124


Slide 125

Slide 125 text

お知らせ 125


Slide 126

Slide 126 text

126