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

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

Denik
February 24, 2021

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

Denik

February 24, 2021
Tweet

More Decks by Denik

Other Decks in Programming

Transcript

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

    @xrdnk 【職歴】 TIS 株式会社 19年度入社 インキュベーションセンター XR チーム - XR エンジニア (20.5 ~ 現在) - システムエンジニア (19.04 ~ 20.05) 本発表は個人の見解です. 所属組織の意見云々ではありません.
  2. MLAPI とは 昨年12月に Unity が買収し, Unity 公式の GameObject 向けネットワークソリューションになりました. これからネットワークソリューションを利用するなら,

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

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

    依存の設計改善 などなど. なので本格的に MLAPI を触るなら, New MLAPI に触れるとよいでしょう. じゃあ,今の MLAPI を使う理由があるのか…? 一応,あります. ➢ 無料版のPhoton より同接数を増やすことができる(30は楽に) ➢ オフラインLAN内での接続が可能 Mirror でええやんというツッコミは今回はなしで.
  5. 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
  6. 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
  7. 同期方法 Transform の同期なら Networked Transform, Animator の同期なら Networked Animator が提供されてます.

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

    Color, Ray, Quaternion 等対応してます NetworkedVar を用いた変数同期【MLAPI】 https://xrdnk.hateblo.jp/entry/2021/01/07/235920
  9. 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
  10. 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
  11. 所感など ➢ MLAPI 現時点で触れるのはつらい ➢ 素直にドキュメントやサンプルが整ってから触れよう ➢ 暫くはマルチゲームを作る際は Photon または

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