Mais conteúdo relacionado
Mais de エピック・ゲームズ・ジャパン Epic Games Japan (20)
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
- 3. スピーカー紹介
ソレイユ(株) エンジニア 衣笠 友宣
Devil’s Third SeriesでGame Rule周りを担当
UE3のReplication周りはよく触っていた
それ以前はXbox・Xbox 360・PC・PS3でのOnline機能開発を経験
C++の勉強会などを聴きに行っている
3
- 5. Dedicated Server と Listen Server
UE4でのMultiplay Gameの通信方式には2種類の形式がある
一つ目はDedicated Server。もう一つはListen Server
Full Mesh P2Pには対応していない
5
- 6. Dedicated Server
● Game Clientとは別にGameを制御するServer
● Dedicated ServerはGame運営側に設置されているのが一般的。開発中はLocalで
起動することも
● Dedicated ServerはClientと同じPlatformである必要は無く、WindowsやLinuxで稼
働し、PS4のClientと通信するなどの運用も可能。描画は行わないので、Resourceは
少なくて済む
● 1つの対戦Group毎に1つのDedicated Serverを起動する必要がある
● 一台のServer内で複数Process起動することが可能
6
- 12. Listen Serverの欠点
● Listen ServerになったClientに処理と通信が集中しやすい
● Listen ServerになったClientの通信状態が悪いとSession全体に影響する
● Listen ServerになったClientが切断するとSessionがそのまま終了してしまう
※回避方法が無くはないが、実装が大変になる
12
- 15. Listen Serverでの開発
Listen ServerはServerとClient両方の処理が必要になる
● Listen ServerにRepNotify Eventは来ない
○ 各Clientに変数Replicateした時の処理はListen Serverも呼ぶ必要がある
● Server Typeの方針変更時にServer処理Client処理の修正が入る
Dedicated ServerとListen Server両対応の複製処理を書いておくと変更に強い
● World::GetNetMode()で分岐する
● BlueprintCosmetic関数指定子(未経験)
15
- 18. REST API Plugin
REST APIでJSONを扱う通信Plugin
● Json Query
○ https://wiki.unrealengine.com/JSON_Query
✗ License未記載!
● VaRest
○ https://wiki.unrealengine.com/VaRest_Plugin
○ MIT License
● WebApiプラグイン
○ https://github.com/HogeTatu/UE4Plugin_WebApi
○ MIT License
Object配列など未対応の場合もある。採用時は使用構造に対応しているか確認を
18
- 23. TCPの罠: Signalの問題
TCP socketで送信関数(send, sendto, sendmsg)を呼び出した時、
通信相手が接続を切断した状態だと、
● POSIX: SIGPIPEのSignalが発生する(抑制されてなければ)
● Winsock: SOCKET_ERRORを返す (Windows「Signal is 何?」)
Signal Handlerが何も設定されていないProcessは異常終了する
23
- 25. TCPの罠: Signalの問題
PS4: WebRTCには4.12で対応しているが、BSD Socketは4.16時点で未対応
https://www.unrealengine.com/ja/blog/unreal-engine-4-12-released
● Bugfix: Fixed occasional WebRTC crash on SIGPIPE.
SIGPIPEが発生したらcrash不可避。抑制するしかない
● 対応方法
○ 送信関数のflagにMSG_NOSIGNAL bitを立てる
○ SDK提供の送信APIを使用する
UDNには報告されているのでそのうち直るはず
25
- 27. まとめ
● Dedicated ServerとListen Serverの特性を考慮して採用検討を
● 開発段階ではどちらにも対応しておくとmeritがある
● Application ServerとのREST API通信はPluginがある
● TCP通信とまつわるBugの対応(Bugは見つけてUDNに報告しましょう)
● 64bit値とUEの相性
27