Slide 1

Slide 1 text

MLAPIでマルチゲームを 作ってみた Roppongi unity #8 Lighting Talk

Slide 2

Slide 2 text

自己紹介 【名前 / ハンネ / Twitter】 Denik / デニキ / @xrdnk 【職歴】 TIS 株式会社 19年度入社 インキュベーションセンター XR チーム - XR エンジニア (20.5 ~ 現在) - システムエンジニア (19.04 ~ 20.05) 本発表は個人の見解です. 所属組織の意見云々ではありません.

Slide 3

Slide 3 text

アジェンダ ➢ MLAPI の説明 ➢ MLAPI の機能 ➢ おわりに

Slide 4

Slide 4 text

MLAPI の説明

Slide 5

Slide 5 text

MLAPI で作った簡単なマルチゲーム

Slide 6

Slide 6 text

MLAPI とは 昨年12月に Unity が買収し, Unity 公式の GameObject 向けネットワークソリューションになりました. これからネットワークソリューションを利用するなら, MLAPI を使用していくようになりそうです. https://blogs.unity3d.com/jp/2020/12/03/accelerating-unitys-new-gameobjects-multiplayer-networking-framework/

Slide 7

Slide 7 text

現在の MLAPI (1/2) じゃあとりあえずマルチプレイに MLAPI 使ってみるか! と思ったらアナタ… 現在の MLAPI には問題点があります. ➢ ドキュメントが充実していない. 最低限のことしか書かれていなく, マルチプレイ開発に慣れてない人が 一から初めても苦労してしまう. そして全部英語です.それはそう. ➢ 公式提供のサンプルがほぼ皆無に等しい github上で MLAPI 関連のサンプルは数件あります. 黒河さんの Unity Chan のサンプルが一番の希望. ちなみに MLAPI 作者 TwoTen 氏が作成した MLAPI-Examples は最後の更新が3年前レベル.

Slide 8

Slide 8 text

現在の MLAPI (2/2) ちなみに公式では,「 MLAPI のサンプル作成が苦痛 」という発言も出る始末…

Slide 9

Slide 9 text

これからの MLAPI MLAPI は現在改修中です 具体的には ・ RPC の改善 ・ Singleton 依存の設計改善 などなど. なので本格的に MLAPI を触るなら, New MLAPI に触れるとよいでしょう. じゃあ,今の MLAPI を使う理由があるのか…? 一応,あります. ➢ 無料版のPhoton より同接数を増やすことができる(30は楽に) ➢ オフラインLAN内での接続が可能 Mirror でええやんというツッコミは今回はなしで.

Slide 10

Slide 10 text

本発表の主旨 とりあえず今の MLAPI を触ってみたという発表です. 日本語ドキュメントが少ないので,このスライドで少し助けになれれば. New MLAPI では破壊的変更が多く含むため,将来的には参考にならないかもしれない.

Slide 11

Slide 11 text

検証環境 本発表における検証環境は以下の通りです. ➢ Unity 2019.4.17f1 ➢ MLAPI v12.1.7 ➢ Unity Chan ➢ Standard Assets

Slide 12

Slide 12 text

Parrel Sync マルチプレイの動作確認には Parrel Sync がおすすめ. プロジェクトをクローンして UnityEditor 複数台立ち上げで実行テストしやすくなります. ParrelSync / UnityProjectCloner で Unity マルチゲーム開発効率を上げる https://xrdnk.hateblo.jp/entry/2021/01/05/222709

Slide 13

Slide 13 text

MLAPI の機能

Slide 14

Slide 14 text

MLAPI 接続方式 ➢Hosted (Listen Server) ➢ Relay Server ➢ DGS(専用サーバ) Host Server Client Client Client Client Host Server Client Client Client Client Relay Server Dedicated Game Server Client Client Client Client

Slide 15

Slide 15 text

MLAPI.Relay ➢MIT で提供.自前でリレーサーバ実装できます. .NET Core https://github.com/MidLevel/MLAPI.Relay ちなみに自ブログで簡単に WSL 2 で MLAPI.Relay Server を立てた記事があるので 参考になれば. WSL 2 で MLAPI.Relay 鯖を立ち上げて MLAPI.Relay 鯖経由で マルチゲームを行う【MLAPI / MLAPI.Relay】 https://xrdnk.hateblo.jp/entry/2021/02/11/090000

Slide 16

Slide 16 text

Server Build Build Settings の Server Build にチェックを入れてサーバーで起動する

Slide 17

Slide 17 text

Networking Manager MLAPI ネットワーク管理クラスです.シーンには必ず必要になってきます. 同期するオブジェクト を設定 プレイヤーオブジェクト としたいならチェック トランスポート層を設定 UnetTransport Ruffles, 自前等

Slide 18

Slide 18 text

同期方法 Transform の同期なら Networked Transform, Animator の同期なら Networked Animator が提供されてます. どのアニメーションの パラメタを同期するのか 事前に設定する必要有

Slide 19

Slide 19 text

NetworkedVar (1/2) データの同期を行います. Bool, Byte, Short, Int, Long, Float, Vector, Color, Ray, Quaternion 等対応してます NetworkedVar を用いた変数同期【MLAPI】 https://xrdnk.hateblo.jp/entry/2021/01/07/235920

Slide 20

Slide 20 text

NetworkedVar (2/2) ➢ 第一引数: NetworkedVarSettings ➢ WritePermission : 書き取り可能な権限設定 (デフォルトは ServerOnly) ➢ ReadPermission : 読み取り可能な権限設定 (デフォルトはEveryOne) ➢ SendTickrate : データ同期の最大時間を秒単位で指定 (デフォルトは 0) ➢ SendChannle: 送信するチャネルの指定可能 ➢ 第二引数: NetworkedVar の初期値 値を設定・読取する場合は, Valueプロパティを通じる必要がある. データの同期を行う変数として [SyncedVar] もありますが, こちらは将来なくなる予定です. NetworkedVar を用いた変数同期【MLAPI】 https://xrdnk.hateblo.jp/entry/2021/01/07/235920

Slide 21

Slide 21 text

RPC RPC も提供されてます. 関数に以下のアトリビュートをつけるだけで RPC対応します. Server → Client : [ClientRPC] Client → Server : [ServerRPC]

Slide 22

Slide 22 text

これらを組み合わせれば 一応簡単なマルチゲームは MLAPI で作れる!

Slide 23

Slide 23 text

おわりに

Slide 24

Slide 24 text

新ドキュメント(1/2) 実は昨夜新しい MLAPI のドキュメントが公開されました.(オイオイオイ… https://mp-docs.dlt.it.unity3d.com/

Slide 25

Slide 25 text

新ドキュメント(2/2) ただし更新内容は Message Systemの内容が増えたり, Glossary が追加された程度. Tutorial もまだこれからと.今後に期待.

Slide 26

Slide 26 text

MLAPI 参考資料 ➢ GitHub ピンポンのサンプル https://github.com/DatBlindArcher/MLAPI.PongSample UnityChanサンプル(黒河さんのサンプル) https://github.com/wotakuro/MLAPI_UnitychanSample ➢ YouTube SRCoder氏の動画 https://www.youtube.com/channel/UCYaNsGvyvIupxpecr4rZY9A 黒河さんの動画 https://www.youtube.com/watch?v=Fl1TP2expZE 私のブログにもちょくちょく MLAPI 関連の記事をあげてます(ほんのちょびっとですが) https://xrdnk.hateblo.jp/archive/category/MLAPI

Slide 27

Slide 27 text

所感など ➢ MLAPI 現時点で触れるのはつらい ➢ 素直にドキュメントやサンプルが整ってから触れよう ➢ 暫くはマルチゲームを作る際は Photon または Mirror に触れてマルチゲームの仕組みに慣れよう ➢ もし現時点のMLAPIに触れる場合は,ドキュメントを読むより実際のコードを読む方が理解が早い ➢ 一からMLAPI サンプル作る場合,胆力が必要 ➢ MLAPI の今後についてリアルタイムで追いたい場合は Discord に参加しましょう https://discord.com/invite/FM8SE9E