Submit Search
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
Download as PPTX, PDF
•
17 likes
•
17,096 views
エピック・ゲームズ・ジャパン Epic Games Japan
2017年7月2日に行われたライセンシー様向けMO勉強会の資料です。基礎編① (登壇者: historia 原龍さま)
Engineering
Read more
1 of 102
Download now
Downloaded 123 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Most read
15
16
17
18
19
20
21
22
23
Most read
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Most read
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
More Related Content
What's hot
(20)
PDF
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
Masahiko Nakamura
PPTX
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
[CEDEC2018] UE4アニメーションシステム総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4 アセットロード周り-アセット参照調査-
com044
PDF
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
PDF
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
PPTX
UnrealBuildTool勉強会まとめ
Shun Sasaki
PDF
はじめてアンリアルエンジンで海戦をつくってみたときのお話
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
個人製作インディーゲーム”ジラフとアンニカ” のUE4 制作事例紹介 | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
historia_Inc
PDF
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
Tatsuya Iwama
PDF
UE4とUnrealC++について
Masahiko Nakamura
PDF
60fpsアクションを実現する秘訣を伝授 基礎編
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
Masahiko Nakamura
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC2018] UE4アニメーションシステム総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 アセットロード周り-アセット参照調査-
com044
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
UnrealBuildTool勉強会まとめ
Shun Sasaki
はじめてアンリアルエンジンで海戦をつくってみたときのお話
エピック・ゲームズ・ジャパン Epic Games Japan
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
個人製作インディーゲーム”ジラフとアンニカ” のUE4 制作事例紹介 | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
historia_Inc
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
Tatsuya Iwama
UE4とUnrealC++について
Masahiko Nakamura
60fpsアクションを実現する秘訣を伝授 基礎編
エピック・ゲームズ・ジャパン Epic Games Japan
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
Viewers also liked
(13)
PPTX
2017 Fighting Game AI Competition
ftgaic
PPTX
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
UE4 Lightmass for Large Console Games (UE4 Lightmass Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4.17で入る新機能を一気に紹介・解説!
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Robo Recallで使われている最新のVR開発テクニックをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
脱Unity!? UE4でVR開発のここが変わった
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Unreal Engine最新機能 アニメーション+物理ショーケース!
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
[CEDEC+KYUSHU 2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介! + UE4.18 モバイ...
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
いつやるの?Git入門
Masakazu Matsushita
2017 Fighting Game AI Competition
ftgaic
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Lightmass for Large Console Games (UE4 Lightmass Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
UE4.17で入る新機能を一気に紹介・解説!
エピック・ゲームズ・ジャパン Epic Games Japan
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
Robo Recallで使われている最新のVR開発テクニックをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
脱Unity!? UE4でVR開発のここが変わった
エピック・ゲームズ・ジャパン Epic Games Japan
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engine最新機能 アニメーション+物理ショーケース!
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC+KYUSHU 2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介! + UE4.18 モバイ...
エピック・ゲームズ・ジャパン Epic Games Japan
いつやるの?Git入門
Masakazu Matsushita
Ad
Similar to UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
(20)
PDF
「AROW」お披露目(実用編)
Drecom Co., Ltd.
ODP
"Up" with vagrant and docker
Hiroshi Miura
PDF
"Up" with vagrant and docker
Hiroshi Miura
PPTX
WebRTC on Native App
WebRTCConferenceJapan
PPTX
OSS強化学習向けゲーム環境の動向
gree_tech
PDF
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
PPTX
loggregator update
Ken Ojiri
PDF
WSL2+docker+JupyterとVS Codeリモート環境の構築
Saito5656
PDF
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
PDF
Tottoruby 20110903
Takashi SAKAGUCHI
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
PDF
Openstack SPICE console (icehouse) verification
yukihiro kawada
PDF
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
PPTX
ドリコムのInfrastructure as code
Yosuke Hiraishi
PPTX
シンラ・テクノロジー第2回クラウドゲーム開発者会議
Shinra_Technologies
PPTX
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
PDF
Let's play with Goldfish
Tetsuyuki Kobayashi
PPT
Scripting Layer for Android + Perl
Naoya Ito
PDF
20211209 lt runtime_field
Nomura Yuta
「AROW」お披露目(実用編)
Drecom Co., Ltd.
"Up" with vagrant and docker
Hiroshi Miura
"Up" with vagrant and docker
Hiroshi Miura
WebRTC on Native App
WebRTCConferenceJapan
OSS強化学習向けゲーム環境の動向
gree_tech
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
loggregator update
Ken Ojiri
WSL2+docker+JupyterとVS Codeリモート環境の構築
Saito5656
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
Tottoruby 20110903
Takashi SAKAGUCHI
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
Openstack SPICE console (icehouse) verification
yukihiro kawada
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
ドリコムのInfrastructure as code
Yosuke Hiraishi
シンラ・テクノロジー第2回クラウドゲーム開発者会議
Shinra_Technologies
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
Let's play with Goldfish
Tetsuyuki Kobayashi
Scripting Layer for Android + Perl
Naoya Ito
20211209 lt runtime_field
Nomura Yuta
Ad
More from エピック・ゲームズ・ジャパン Epic Games Japan
(20)
PDF
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4を使った映像制作 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Hair Groom入門 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Twinmotion 2021とAEC分野向けソリューションのご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
UE4を使った映像制作 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
Hair Groom入門 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
エピック・ゲームズ・ジャパン Epic Games Japan
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
Twinmotion 2021とAEC分野向けソリューションのご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
1.
© historia Inc.
#UE4DD Multiplayer Online Deep Dive - Getting Started - historia Inc. 原 龍
2.
© historia Inc.
#UE4DD https://github.com/HogeTatu/UE4Plugin_WebApi
3.
© historia Inc.
#UE4DD 本日の Deep Dive のお題目 Multiplayer Online
4.
© historia Inc.
#UE4DD Multiplayer Online (MO) 人数 少人数(多くても30人程度) プレイ時間 短い(長くても60分程度) 求められるもの リアルタイム性が高い(低レイテンシ) ゲームデザイン • アクション • 格闘ゲーム • FPS, TPS • MOBA (Multiplayer Online Battle Arena)
5.
© historia Inc.
#UE4DD 本日の流れ TravelingDedicated Server RPC / Replicate 導入(オンライン機能概要) はじめに、機能概要と Traveling 周りをヒストリアからご説明 TCP Plugin
6.
© historia Inc.
#UE4DD 本日の流れ TravelingDedicated Server RPC / Replicate 導入(オンライン機能概要) RPC / Replicate を中心に、バイキング様からご説明 TCP Plugin
7.
© historia Inc.
#UE4DD 本日の流れ TravelingDedicated Server RPC / Replicate 導入(オンライン機能概要) Dedicated Server を中心に、ソレイユ様からご説明 TCP Plugin
8.
© historia Inc.
#UE4DD http://cedric-neukirchen.net/Downloads/Compendium/UE4_Network_Compendium_by_Cedric_eXi_Neukirchen.pdf 本日の内容は Cedric ‘eXi’ Neukirchen 様の資料を参考にさせて頂いています。 こちらも合わせてご確認頂けると、理解が進むと思われます。
9.
© historia Inc.
#UE4DD ネットワークモード
10.
© historia Inc.
#UE4DD UE4 は Client-Server (C/S) モデル Client 1 Server Client 2 Client 3 ゲームプレイフローを制御
11.
© historia Inc.
#UE4DD Listen Server (プレイヤーの1人がサーバーを担当) Client 1 Server Client 2 Client 3
12.
© historia Inc.
#UE4DD Dedicated Server (専用のインスタンスがサーバーを担当) Client 1 Client 2 Client 3 Client 4 Server
13.
© historia Inc.
#UE4DD 同期処理 1. Replicate (プロパティ同期)
14.
© historia Inc.
#UE4DD Actor のプロパティを C/S 間で同期 C++ /** 同期するプロパティ */ UPROPERTY(Replicated) int32 SampleProperty; /** 同期するプロパティを ActorChannel に通知 */ void ASampleActor::GetLifetimeReplicatedProps( TArray<FLifetimeProperty>& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(ASampleActor, SampleProperty); }
15.
© historia Inc.
#UE4DD Actor のプロパティを C/S 間で同期 Blueprint
16.
© historia Inc.
#UE4DD Actor のプロパティを C/S 間で同期後、コールバック通知 C++ /** 同期するプロパティ */ UPROPERTY(ReplicatedUsing=OnRep_SampleProperty) int32 SampleProperty; /** プロパティ同期通知コールバック */ UFUNCTION() void OnRep_SampleProperty(); ※ GetLifetimeReplicatedProps はコールバックの有無で変更なし
17.
© historia Inc.
#UE4DD Actor のプロパティを C/S 間で同期後、コールバック通知 Blueprint
18.
© historia Inc.
#UE4DD Actor Channel ? C/S 間で Actor と SubObject を同期するための通信チャンネル Actor のスポーン情報を持ち、レプリケートされた Actor の生成 / 破棄を管理する 所有する FObjectReplicator がプロパティ同期と RPC を行う
19.
© historia Inc.
#UE4DD Server Client Actor Actor Channel Actor Actor Channel • プロパティの差分抽出 • リクエストされた RPC • アクターの生成 • プロパティの反映 • RPC の実行 Actor がレプリケートされる流れ
20.
© historia Inc.
#UE4DD GetLifetimeReplicatedProps の役割 FObjectReplicator がパケットレイアウトを決めるために、 同期するプロパティを判断する際に利用される 同期するプロパティを設定しつつ、同期される条件(≒タイミング)を 指定することも可能
21.
© historia Inc.
#UE4DD Actor のプロパティを同期する条件を指定 C++ /** 同期するプロパティ */ UPROPERTY(Replicated) int32 SampleProp; /** 同期するプロパティを ActorChannel に通知 */ void ASampleActor::GetLifetimeReplicatedProps( TArray<FLifetimeProperty>& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME_CONDITION(ASampleActor, SampleProp, COND_SkipOwner); }
22.
© historia Inc.
#UE4DD Actor のプロパティを同期する条件を指定 Blueprint
23.
© historia Inc.
#UE4DD プロパティ同期条件一覧 COND_None 常時同期(条件なし) COND_InitialOnly 初回同期のみ COND_OwnerOnly Actor の所有者のみ COND_SkipOwner Actor の所有者以外 COND_SimulatedOnly Role=ROLE_SimulatedProxy のみ COND_AutonomousOnly Role=ROLE_AutonomousProxy のみ COND_SimulatedOrPhysics Simulated もしくは bRepPhysics のみ COND_InitialOrOwner 初回同期もしくは Actor の所有者 COND_Custom 条件をランタイムで変更できる ※詳しくは後述 COND_ReplayOrOwner リプレイ時もしくは Actor の所有者 COND_ReplayOnly リプレイ時のみ COND_SimulatedOnlyNoReplay Simulated のみ(リプレイ時は除く) COND_SimulatedOrPhysicsNoReplay Simulated もしくは bRepPhysics のみ(リプレイ時は除く) COND_SkipReplay リプレイ時以外
24.
© historia Inc.
#UE4DD COND_Custom C++ /** PreReplication で同期する条件を指定 */ void ASampleActor::PreReplication( IRepChangedPropertyTracker& ChangedPropertyTracker) { Super::PreReplication(ChangedPropertyTracker); DOREPLIFETIME_ACTIVE_OVERRIDE( ASampleActor, SampleProp, bReplicateSampleProp); }
25.
© historia Inc.
#UE4DD 同期処理 2. RPC (Remote Procedure Call)
26.
© historia Inc.
#UE4DD Multicast (Server / 全 Client で実行) C++ /** Multicast */ UFUNCTION(NetMulticast, unreliable) void Multicast_SampleEvent(); void ASampleActor::Multicast_SampleEvent_Implementation() { }
27.
© historia Inc.
#UE4DD Multicast (Server / 全 Client で実行) Blueprint
28.
© historia Inc.
#UE4DD Run on Owning Client (Actor を所有する Client で実行) C++ /** Run on Owning Client */ UFUNCTION(Client, unreliable) void Client_SampleEvent(); void ASampleActor::Client_SampleEvent_Implementation() { }
29.
© historia Inc.
#UE4DD Run on Owning Client (Actor を所有する Client で実行) Blueprint
30.
© historia Inc.
#UE4DD Run on Server (Server で実行) C++ /** Run on Server */ UFUNCTION(Server, unreliable, WithValidation) void Server_SampleEvent(); void ASampleActor::Server_SampleEvent_Implementation() { } bool ASampleActor::Server_SampleEvent_Validate() { return true; }
31.
© historia Inc.
#UE4DD Run on Server (Server で実行) Blueprint
32.
© historia Inc.
#UE4DD WithValidation RPC で呼び出される関数を実行する直前に検証用の関数を実行する 関数名は RPCFunctionName_Validate で戻り値は boolean 戻り値で false を返すと RPC で呼び出された関数は実行されない
33.
© historia Inc.
#UE4DD Reliable RPC は UDP で通信する都合上、パケットの欠損や順序が不定になるといった ことが起こるため、確実に受信されてほしい処理には向いていない Reliable フラグを利用することで RPC 実行時に疎通確認を行い、 通信の信頼性を向上させる ことができる
34.
© historia Inc.
#UE4DD Reliable C++ /** Run on Server */ UFUNCTION(Client, reliable, WithValidation) void Server_SampleEvent(); Blueprint
35.
© historia Inc.
#UE4DD Actor の所有権
36.
© historia Inc.
#UE4DD ここはUE4のマルチプレイを理解する上で重要な部分です (ハマりやすい部分です)
37.
© historia Inc.
#UE4DD Actor の所有権とは Server / Client は Actor に対して所有権を持つ AActor::Owner で所有権を持つかどうかを判断できる ただし Pawn の場合は APawn::IsLocallyControlled で判断する 所有権の有無によって、RPCの実行が制限されるケース が存在する
38.
© historia Inc.
#UE4DD RPCの実行が制限されるケース (Server で実行した場合) Actor 所有者 Multicast Run on Server Run on Owning Client Client Server / 全 Client で実行 Server で実行 所有する Client で実行 Server Server / 全 Client で実行 Server で実行 Server で実行
39.
© historia Inc.
#UE4DD RPCの実行が制限されるケース (Client で実行した場合) Actor 所有者 Multicast Run on Server Run on Owning Client 自 Client 自 Client で実行 Server で実行 自 Client で実行 他 Client 自 Client で実行 実行されない 自 Client で実行 Server 自 Client で実行 実行されない 自 Client で実行
40.
© historia Inc.
#UE4DD RPC が実行されないケース – (1) Server Client 1 Client 2 Server が所有する Actor RPC 呼び出し
41.
© historia Inc.
#UE4DD RPC が実行されないケース – (2) Server Client 1 Client 2 他 Client が所有する Actor RPC 呼び出し
42.
© historia Inc.
#UE4DD なぜ所有権は必要? 所有者以外が悪意を持って 不正に Actor を操作する事への対処
43.
© historia Inc.
#UE4DD 所有権によるカテゴライズ Actor は全ての Server / Client にレプリケートされるわけではい Actor がどこにレプリケートされるかというカテゴライズは、 Actor のプロパティ設定を元に行われる
44.
© historia Inc.
#UE4DD Client 1 Client 2 Server Only Server サーバーのみに生成されるアクター GameMode など
45.
© historia Inc.
#UE4DD Server Only AServerOnlyActor::AServerOnlyActor() { // プレイヤーが持つコントロール権 Role = ROLE_Authority; // 他プレイヤーが持つコントロール権 RemoteRole = ROLE_None; // 同期対象フラグ bReplicates = false; // 所有権を持つクライアントのみに同期するフラグ bOnlyRelevantToOwner = false; }
46.
© historia Inc.
#UE4DD Server サーバーと全てのクライアントに 生成されるアクター GameState, PlayerState など ほとんどのアクターはこの設定で サーバーが生成し、レプリケートされる Server & Client Client 1 Client 2
47.
© historia Inc.
#UE4DD AServerClientActor::AServerClientActor() { // プレイヤーが持つコントロール権 Role = ROLE_Authority; // 他プレイヤーが持つコントロール権 RemoteRole = ROLE_SimulatedProxy; // 同期対象フラグ bReplicates = true; // 所有権を持つクライアントのみに同期するフラグ bOnlyRelevantToOwner = false; } Server & Client
48.
© historia Inc.
#UE4DD Server サーバーと所有するクライアントのみに 生成されるアクター PlayerController, Possess している Pawn など Client 1 Client 2 Server & Client (所有者)
49.
© historia Inc.
#UE4DD AServerOwningClientActor::AServerOwningClientActor() { // プレイヤーが持つコントロール権 Role = ROLE_Authority; // 他プレイヤーが持つコントロール権 RemoteRole = ROLE_SimulatedProxy; // 同期対象フラグ bReplicates = true; // 所有権を持つクライアントのみに同期するフラグ bOnlyRelevantToOwner = true; } Server & Client (所有者)
50.
© historia Inc.
#UE4DD OnlineSubsystem
51.
© historia Inc.
#UE4DD ゲーム OnlineSubsystem • ログイン • セッション管理 • マッチング • 実績 • ランキング • チャット • ストア(課金) etc... Steam PS4 Oculus Google Amazon Facebook プラットフォームの APIを抽象化 各種SDK
52.
© historia Inc.
#UE4DD OnlineSubsystem の設計 各プラットフォームは機能別に定義されたインターフェースを継承したクラスを実装する インターフェースは IOnline[機能名] で用意されている – ex. IOnlineAchievements 各プラットフォームは FOnline[機能名][プラットフォーム名] で実装する – ex. FOnlineAchievementSteam
53.
© historia Inc.
#UE4DD OnlineSubsystem で機能が足りていなかった場合は? 必要なインターフェースを継承しつつ、足りていない機能のクラスを新規作成する IOnlineSubsystem を継承しながら、プラットフォーム別に FOnlineSubsystem[プラットフォーム] が実装されているので、 各機能の実装を取得する Get[機能名]Interface で追加した機能の リファレンスを返すようにする
54.
© historia Inc.
#UE4DD
55.
© historia Inc.
#UE4DD ここからは開発フローについて
56.
© historia Inc.
#UE4DD Release QADevelopment ネットワーク対応ゲームの基本的なデプロイフロー 作業PC 開発サーバー ステージング サーバー 公開サーバー
57.
© historia Inc.
#UE4DD Release QADevelopment 作業PC 開発サーバー ステージング サーバー 公開サーバー 作業PC(ローカル)
58.
© historia Inc.
#UE4DD ローカルでのマルチプレイプレビュー 1. PIE 起動
59.
© historia Inc.
#UE4DD
60.
© historia Inc.
#UE4DD
61.
© historia Inc.
#UE4DD PIE 起動時に自動でマッチングされた状態にする Editor Preferences -> Level Editor -> Play -> Multiplayer Options -> Auto Connect To Server 単体のレベルでマルチプレイのデバッグを行うときに有効
62.
© historia Inc.
#UE4DD Auto Connect To Server の注意点 簡易的に Server / Client の設定だけ行ってプレビューを行っている つまり C/S 間で正式な手続き(Control Channel でのメッセージング) を行っていないため、レベル移動を行ってしまうと正常な結果にならない
63.
© historia Inc.
#UE4DD ローカルでのマルチプレイプレビュー 2. –game オプションで起動
64.
© historia Inc.
#UE4DD UE4Editor.exe に uproject を指定して -game オプションを付けて起動すると、 Cook 無しスタンドアロン実行 が可能
65.
© historia Inc.
#UE4DD @echo off set EDITOR_PATH=..EngineBinariesWin64UE4Editor.exe set UPROJECT_NAME=MultiplayerOnlineDD.uproject set SERVER_MAP_NAME=/Game/DeepDive/Maps/OpenUrl/OpenUrlServer set CLIENT_MAP_NAME=/Game/DeepDive/Maps/OpenUrl/OpenUrlClient set LAUNCH_PARAM=-game -ResX=640 -ResY=360 -WINDOWED start %EDITOR_PATH% %UPROJECT_NAME% %SERVER_MAP_NAME% %LAUNCH_PARAM% ^ -WinX=100 -WinY=100 -log -ConsoleX=100 -ConsoleY=500 start %EDITOR_PATH% %UPROJECT_NAME% %CLIENT_MAP_NAME% %LAUNCH_PARAM% ^ -WinX=800 -WinY=100 exit 起動バッチを作ると便利
66.
© historia Inc.
#UE4DD
67.
© historia Inc.
#UE4DD PIE 起動でのプレビューはあくまで単一プロセスでの実行で ダミー的に処理されている部分があるため、 デプロイ前には一度デバッグしておいた方が良い
68.
© historia Inc.
#UE4DD パケットシミュレーション
69.
© historia Inc.
#UE4DD ローカルプレビューではパケットの遅延等が全く発生せず、 実際にマシン間で通信する際に 意図した挙動にならないといった事が起こりえます
70.
© historia Inc.
#UE4DD ローカルプレビュー時にこのような状態を再現するため、 エミュレート用の各種デバッグコマンドが用意されています
71.
© historia Inc.
#UE4DD Net PktLoss=[Int] 確率でパケットを送信しない(消失シミュレーション) 単位は 0 – 100 %
72.
© historia Inc.
#UE4DD Net PktOrder=[Boolean] パケットをバッファリングして送信順序をランダムにする 単位は 0 – 1
73.
© historia Inc.
#UE4DD Net PktLag=[Int] パケット送信時に遅延を発生させる(固定値) 単位はミリ秒
74.
© historia Inc.
#UE4DD Net PktLagVariance=[Int] パケット送信時に遅延を発生させる(範囲ランダム値) 単位は ± ミリ秒
75.
© historia Inc.
#UE4DD B.SendTime = FPlatformTime::Seconds() + (double(PacketSimulationSettings.PktLag) + 2.0f * (FMath::FRand() - 0.5f) * double(PacketSimulationSettings.PktLagVariance))/ 1000.f;
76.
© historia Inc.
#UE4DD Net PktDup=[Int] パケット送信時に確率で2回送信する(重複させる) 単位は 0 – 100 %
77.
© historia Inc.
#UE4DD この辺の実装は UNetConnection::FlushNet
78.
© historia Inc.
#UE4DD RPC のデバッグ
79.
© historia Inc.
#UE4DD net.RPC.Debug [Boolean] RPC 実行時のログを Warning で出力する 有効にした状態で LogNet でフィルターを設定すると Traveling や Replicate の流れがよく見える
80.
© historia Inc.
#UE4DD ネットワークプロファイラ
81.
© historia Inc.
#UE4DD ネットワークプロファイラ Replication, RPC に関するプロファイラ 帯域のボトルネックを調査する時に有用 Actor / Property / RPC でフィルタリングすることも可能
82.
© historia Inc.
#UE4DD ネットワークプロファイラ netprofile enable/disable でプロファイリング状態を切り替える プロファイリング結果を確認するためには下記パスからツールを起動する – /Engine/Binaries/DotNET/NetworkProfiler.exe プロファイリング結果は下記ディレクトリに保存されている – /ProjectRoot/Saved/Profiling
83.
© historia Inc.
#UE4DD
84.
© historia Inc.
#UE4DD https://docs.unrealengine.com/latest/JPN/Gameplay/Tools/NetworkProfiler/index.html
85.
© historia Inc.
#UE4DD Release QADevelopment 作業PC 開発サーバー ステージング サーバー 公開サーバー 開発サーバー
86.
© historia Inc.
#UE4DD パッケージ生成
87.
© historia Inc.
#UE4DD UE4 Solution UE4 Project Game Project UE4 では同一プロジェクトから各種パッケージを生成 • Windows Client • Windows Server • PS4 Client • Linux Server etc ...
88.
© historia Inc.
#UE4DD Build Configuration ビルド名 ビルド概要 ビルドルールを指定するファイル [empty] スタンドアロンゲーム実行用のビルド ProjectName.Target.cs Editor エディタ実行用のビルド ProjectNameEditor.Target.cs Client マルチプレイゲームにおけるクライアント用のビルド ProjectNameClient.Target.cs Server マルチプレイゲームにおけるサーバー用のビルド ProjectNameServer.Target.cs
89.
© historia Inc.
#UE4DD
90.
© historia Inc.
#UE4DD
91.
© historia Inc.
#UE4DD ビルドジョブセットからまとめて各種ビルドを実行する Batch Builder (UnrealVS 拡張) が便利
92.
© historia Inc.
#UE4DD Batch Builder はこのボタンから起動する
93.
© historia Inc.
#UE4DD https://docs.unrealengine.com/latest/JPN/Programming/Development/VisualStudioSetup/UnrealVS/index.html
94.
© historia Inc.
#UE4DD Client / Server ビルドで謎のコンパイルエラーが…? Client / Server ビルドは、ランチャーからインストールしたエンジンだとビルドできない仕様 (ProjectName.sln ではなく、UE4.sln からのみビルド可能)
95.
© historia Inc.
#UE4DD Cook は ProjectLauncher から行うと 複数パッケージを同時に生成できる
96.
© historia Inc.
#UE4DD Linux クロスコンパイル
97.
© historia Inc.
#UE4DD • Linux Server ビルド • サーバー上でテスト • エディタで開発 • Windows Client ビルド • Windows Server ビルド • ローカルテスト Linux クロスコンパイル未使用時 Windows 開発マシン Linux 開発サーバー デプロイ
98.
© historia Inc.
#UE4DD • Linux Server ビルド • サーバー上でテスト • エディタで開発 • Windows Client ビルド • Windows Server ビルド • ローカルテスト Linux クロスコンパイル未使用時 Windows 開発マシン Linux 開発サーバー デプロイ ビルドエラーで手戻りの可能性!
99.
© historia Inc.
#UE4DD • サーバー上でテスト• エディタで開発 • Windows Client ビルド • Windows Server ビルド • ローカルテスト • Linux Server ビルド Linux クロスコンパイル使用時 Windows 開発マシン Linux 開発サーバー デプロイ デプロイ先でのエラーを防ぐ
100.
© historia Inc.
#UE4DD https://docs.unrealengine.com/latest/JPN/Platforms/Linux/GettingStarted/index.html
101.
© historia Inc.
#UE4DD Linux クロスコンパイル時の注意点 基本的には使用するUE4のバージョンに合わせたツールチェーンのダウンロードと、 環境変数の設定のみ 複数のUE4プロジェクトが混在していて環境変数を汚染したくない場合、 LINUX_MULTIARCH_ROOT を検索して置き換えることで対応は可能 (DedicatedServer を選択する以上、自ずとエンジンはソースコードビルドになるので・・・)
102.
© historia Inc.
#UE4DD まとめ MO ゲーム制作のための機能は一通り揃っている印象 ただしブラックボックスな部分が多く、実はできるのに知られていない機能や ini 設定、コンソールコマンドが用意されていたりする 実際の運用時には NetworkProfiler で細かく使用帯域を見ていく必要がある
Download