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
2.2k
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
2.9k
Unity Localization で多言語対応実装しよう / xrdnk-yokohamaunity-lt10-20220513
xrdnk
0
1.9k
XR Interaction Toolkit 2.0.0 正式リリース記念パピコ / xrdnk-xrmtg-lt-20220316
xrdnk
0
2.5k
Unidux を用いたマルチシーン構成の画面遷移 / xrdnk-unity-otonanolt-2021
xrdnk
0
2.4k
Unity Cloud Save でプレイヤーデータのクラウド保存しよう / xrdnk-yokohamaunitylt9
xrdnk
0
480
Feel でゲームのエフェクトを豪華にしよう / xrdnk-yokohamaunityLT8
xrdnk
1
860
Unidux Scene Transition Hands-on / xrdnk-unidux-scene-transition-hands-on
xrdnk
1
250
新MLAPIでマルチゲームを作ってみた / xrdnk-gotandaunityLT19-presentation
xrdnk
1
3k
三種の神器とMVRPパターン / xrdnk-three-sacred-treasures-and-mvrp-pattern
xrdnk
1
3.7k
Other Decks in Programming
See All in Programming
Jetpack Compose 完全に理解した
mkeeda
1
450
社会人 20 年目エンジニア、発信で技術学びなおしてる話
e99h2121
1
140
SwiftPMのPlugin入門 / introduction_to_swiftpm_plugin
uhooi
2
100
Amazon QuickSightのアップデート -re:Invent 2022の復習&2022年ハイライト-
shogo452
0
220
データドリブンな組織の不正検知
fkubota
0
150
CDKでValidationする本当の方法 / cdk-validation
gotok365
1
190
Azure Functionsをサクッと開発、サクッとデプロイ/vscodeconf2023-baba
nina01
1
330
T3 Stack and TypeScript ecosystem
quramy
3
730
Functional Data Engineering - A Blueprint for adopting functional principles in data pipeline
vananth22
0
180
ipa-medit: Memory search and patch tool for IPA without Jailbreaking/ipa-medit-bh2022-europe
tkmru
0
130
量子コンピュータ時代のプログラミングセミナー / 20230119_Amplify_seminar _shift_optimization
fixstars
0
180
2023年にクル(かもしれない)通信ミドルウェア技術(仮)
s_hosoai
0
190
Featured
See All Featured
Fireside Chat
paigeccino
16
1.8k
Making the Leap to Tech Lead
cromwellryan
117
7.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
500
130k
The World Runs on Bad Software
bkeepers
PRO
59
5.7k
Keith and Marios Guide to Fast Websites
keithpitt
407
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
22
42k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
29
7.9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
101
6.2k
Building Your Own Lightsaber
phodgson
96
4.9k
In The Pink: A Labor of Love
frogandcode
132
21k
Facilitating Awesome Meetings
lara
33
4.6k
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