Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
MLAPIでマルチゲームを作ってみた / xrdnk-roppongiunityLT8-presentation
Denik
February 24, 2021
Programming
1
1.8k
MLAPIでマルチゲームを作ってみた / xrdnk-roppongiunityLT8-presentation
Denik
February 24, 2021
Tweet
Share
More Decks by Denik
See All by Denik
Oculus Interaction SDK 概説 / xrdnk-caunity-LT4
xrdnk
0
240
Unity Localization で多言語対応実装しよう / xrdnk-yokohamaunity-lt10-20220513
xrdnk
0
150
XR Interaction Toolkit 2.0.0 正式リリース記念パピコ / xrdnk-xrmtg-lt-20220316
xrdnk
0
710
Unidux を用いたマルチシーン構成の画面遷移 / xrdnk-unity-otonanolt-2021
xrdnk
0
1.2k
Unity Cloud Save でプレイヤーデータのクラウド保存しよう / xrdnk-yokohamaunitylt9
xrdnk
0
220
Feel でゲームのエフェクトを豪華にしよう / xrdnk-yokohamaunityLT8
xrdnk
1
540
Unidux Scene Transition Hands-on / xrdnk-unidux-scene-transition-hands-on
xrdnk
1
160
新MLAPIでマルチゲームを作ってみた / xrdnk-gotandaunityLT19-presentation
xrdnk
1
1.7k
三種の神器とMVRPパターン / xrdnk-three-sacred-treasures-and-mvrp-pattern
xrdnk
1
2.8k
Other Decks in Programming
See All in Programming
Quartoを使ってみませんか / quarto_get_started
s_uryu
2
310
テスト設計技法をなぜ&どのように使うのか体験しよう!
imtnd
0
470
tfcon2022_Web3Dひとめぐり.pdf
emadurandal
0
1k
デュアルトラックアジャイル× Agile Testingから 見えてきたQAのミライ
atamaplus
0
410
Reactでアプリケーションを構築する多様化
sakito
4
3.4k
Update from the Elixir team - 2022
whatyouhide
0
200
코드 품질 1% 올리기
pluu
1
1k
読みやすいコードを書こう
yutorin
0
430
Cloud-Conference-Day-Spring Cloud + Spring Webflux: como desenvolver seu primeiro microsserviço reativo em Java?
kamilahsantos
1
140
Modern Web Apps with Spring Boot, Angular & TypeScript
toedter
12
14k
LOWYAの信頼性向上とNew Relic
kazumax55
4
360
Hapticをカスタマイズしてみよう / ZOZO Tech Talk #6 Customize Haptic
endoumari
0
350
Featured
See All Featured
In The Pink: A Labor of Love
frogandcode
130
21k
Producing Creativity
orderedlist
PRO
333
37k
How to train your dragon (web standard)
notwaldorf
57
3.8k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
19
1.4k
We Have a Design System, Now What?
morganepeng
35
2.9k
Creatively Recalculating Your Daily Design Routine
revolveconf
206
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Happy Clients
brianwarren
89
5.5k
A designer walks into a library…
pauljervisheath
196
16k
The Cult of Friendly URLs
andyhume
68
4.7k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
Transcript
MLAPIでマルチゲームを 作ってみた Roppongi unity #8 Lighting Talk
自己紹介 【名前 / ハンネ / Twitter】 Denik / デニキ /
@xrdnk 【職歴】 TIS 株式会社 19年度入社 インキュベーションセンター XR チーム - XR エンジニア (20.5 ~ 現在) - システムエンジニア (19.04 ~ 20.05) 本発表は個人の見解です. 所属組織の意見云々ではありません.
アジェンダ ➢ MLAPI の説明 ➢ MLAPI の機能 ➢ おわりに
MLAPI の説明
MLAPI で作った簡単なマルチゲーム
MLAPI とは 昨年12月に Unity が買収し, Unity 公式の GameObject 向けネットワークソリューションになりました. これからネットワークソリューションを利用するなら,
MLAPI を使用していくようになりそうです. https://blogs.unity3d.com/jp/2020/12/03/accelerating-unitys-new-gameobjects-multiplayer-networking-framework/
現在の MLAPI (1/2) じゃあとりあえずマルチプレイに MLAPI 使ってみるか! と思ったらアナタ… 現在の MLAPI には問題点があります.
➢ ドキュメントが充実していない. 最低限のことしか書かれていなく, マルチプレイ開発に慣れてない人が 一から初めても苦労してしまう. そして全部英語です.それはそう. ➢ 公式提供のサンプルがほぼ皆無に等しい github上で MLAPI 関連のサンプルは数件あります. 黒河さんの Unity Chan のサンプルが一番の希望. ちなみに MLAPI 作者 TwoTen 氏が作成した MLAPI-Examples は最後の更新が3年前レベル.
現在の MLAPI (2/2) ちなみに公式では,「 MLAPI のサンプル作成が苦痛 」という発言も出る始末…
これからの MLAPI MLAPI は現在改修中です 具体的には ・ RPC の改善 ・ Singleton
依存の設計改善 などなど. なので本格的に MLAPI を触るなら, New MLAPI に触れるとよいでしょう. じゃあ,今の MLAPI を使う理由があるのか…? 一応,あります. ➢ 無料版のPhoton より同接数を増やすことができる(30は楽に) ➢ オフラインLAN内での接続が可能 Mirror でええやんというツッコミは今回はなしで.
本発表の主旨 とりあえず今の MLAPI を触ってみたという発表です. 日本語ドキュメントが少ないので,このスライドで少し助けになれれば. New MLAPI では破壊的変更が多く含むため,将来的には参考にならないかもしれない.
検証環境 本発表における検証環境は以下の通りです. ➢ Unity 2019.4.17f1 ➢ MLAPI v12.1.7 ➢ Unity
Chan ➢ Standard Assets
Parrel Sync マルチプレイの動作確認には Parrel Sync がおすすめ. プロジェクトをクローンして UnityEditor 複数台立ち上げで実行テストしやすくなります. ParrelSync
/ UnityProjectCloner で Unity マルチゲーム開発効率を上げる https://xrdnk.hateblo.jp/entry/2021/01/05/222709
MLAPI の機能
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
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
Server Build Build Settings の Server Build にチェックを入れてサーバーで起動する
Networking Manager MLAPI ネットワーク管理クラスです.シーンには必ず必要になってきます. 同期するオブジェクト を設定 プレイヤーオブジェクト としたいならチェック トランスポート層を設定 UnetTransport
Ruffles, 自前等
同期方法 Transform の同期なら Networked Transform, Animator の同期なら Networked Animator が提供されてます.
どのアニメーションの パラメタを同期するのか 事前に設定する必要有
NetworkedVar (1/2) データの同期を行います. Bool, Byte, Short, Int, Long, Float, Vector,
Color, Ray, Quaternion 等対応してます NetworkedVar を用いた変数同期【MLAPI】 https://xrdnk.hateblo.jp/entry/2021/01/07/235920
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
RPC RPC も提供されてます. 関数に以下のアトリビュートをつけるだけで RPC対応します. Server → Client : [ClientRPC]
Client → Server : [ServerRPC]
これらを組み合わせれば 一応簡単なマルチゲームは MLAPI で作れる!
おわりに
新ドキュメント(1/2) 実は昨夜新しい MLAPI のドキュメントが公開されました.(オイオイオイ… https://mp-docs.dlt.it.unity3d.com/
新ドキュメント(2/2) ただし更新内容は Message Systemの内容が増えたり, Glossary が追加された程度. Tutorial もまだこれからと.今後に期待.
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
所感など ➢ MLAPI 現時点で触れるのはつらい ➢ 素直にドキュメントやサンプルが整ってから触れよう ➢ 暫くはマルチゲームを作る際は Photon または
Mirror に触れてマルチゲームの仕組みに慣れよう ➢ もし現時点のMLAPIに触れる場合は,ドキュメントを読むより実際のコードを読む方が理解が早い ➢ 一からMLAPI サンプル作る場合,胆力が必要 ➢ MLAPI の今後についてリアルタイムで追いたい場合は Discord に参加しましょう https://discord.com/invite/FM8SE9E