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

MLAPIでマルチゲームを作ってみた / xrdnk-roppongiunityLT8-presentation

270b0c7883545117a9a618dc7ca7cc83?s=47 Denik
February 24, 2021

MLAPIでマルチゲームを作ってみた / xrdnk-roppongiunityLT8-presentation

270b0c7883545117a9a618dc7ca7cc83?s=128

Denik

February 24, 2021
Tweet

Transcript

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

  2. 自己紹介 【名前 / ハンネ / Twitter】 Denik / デニキ /

    @xrdnk 【職歴】 TIS 株式会社 19年度入社 インキュベーションセンター XR チーム - XR エンジニア (20.5 ~ 現在) - システムエンジニア (19.04 ~ 20.05) 本発表は個人の見解です. 所属組織の意見云々ではありません.
  3. アジェンダ ➢ MLAPI の説明 ➢ MLAPI の機能 ➢ おわりに

  4. MLAPI の説明

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

  6. MLAPI とは 昨年12月に Unity が買収し, Unity 公式の GameObject 向けネットワークソリューションになりました. これからネットワークソリューションを利用するなら,

    MLAPI を使用していくようになりそうです. https://blogs.unity3d.com/jp/2020/12/03/accelerating-unitys-new-gameobjects-multiplayer-networking-framework/
  7. 現在の MLAPI (1/2) じゃあとりあえずマルチプレイに MLAPI 使ってみるか! と思ったらアナタ… 現在の MLAPI には問題点があります.

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

  9. これからの MLAPI MLAPI は現在改修中です 具体的には ・ RPC の改善 ・ Singleton

    依存の設計改善 などなど. なので本格的に MLAPI を触るなら, New MLAPI に触れるとよいでしょう. じゃあ,今の MLAPI を使う理由があるのか…? 一応,あります. ➢ 無料版のPhoton より同接数を増やすことができる(30は楽に) ➢ オフラインLAN内での接続が可能 Mirror でええやんというツッコミは今回はなしで.
  10. 本発表の主旨 とりあえず今の MLAPI を触ってみたという発表です. 日本語ドキュメントが少ないので,このスライドで少し助けになれれば. New MLAPI では破壊的変更が多く含むため,将来的には参考にならないかもしれない.

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

    Chan ➢ Standard Assets
  12. Parrel Sync マルチプレイの動作確認には Parrel Sync がおすすめ. プロジェクトをクローンして UnityEditor 複数台立ち上げで実行テストしやすくなります. ParrelSync

    / UnityProjectCloner で Unity マルチゲーム開発効率を上げる https://xrdnk.hateblo.jp/entry/2021/01/05/222709
  13. MLAPI の機能

  14. 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
  15. 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
  16. Server Build Build Settings の Server Build にチェックを入れてサーバーで起動する

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

    Ruffles, 自前等
  18. 同期方法 Transform の同期なら Networked Transform, Animator の同期なら Networked Animator が提供されてます.

    どのアニメーションの パラメタを同期するのか 事前に設定する必要有
  19. NetworkedVar (1/2) データの同期を行います. Bool, Byte, Short, Int, Long, Float, Vector,

    Color, Ray, Quaternion 等対応してます NetworkedVar を用いた変数同期【MLAPI】 https://xrdnk.hateblo.jp/entry/2021/01/07/235920
  20. 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
  21. RPC RPC も提供されてます. 関数に以下のアトリビュートをつけるだけで RPC対応します. Server → Client : [ClientRPC]

    Client → Server : [ServerRPC]
  22. これらを組み合わせれば 一応簡単なマルチゲームは MLAPI で作れる!

  23. おわりに

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

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

  26. 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
  27. 所感など ➢ MLAPI 現時点で触れるのはつらい ➢ 素直にドキュメントやサンプルが整ってから触れよう ➢ 暫くはマルチゲームを作る際は Photon または

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