Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UE4を使用したゲーム開発の為の
ネットワーク対応その1
自己紹介
@fuminaymi
プログラマーです
ゲーム作ってます(6年ぐらい)
もくじ
○ネットワーク対応をしてみよう
○ネットワーク対応をする前に
○ネットワークの仕組み
○ネットワーク設計の基本的な考え方
○ネットワークサービスについて
○さいごに
ネットワーク対応をしてみよう
何事も挑戦です
○UE4でのネットワーク対応は簡単
○しかし公式ドキュメントを読むと難しそうに感じるし量も多い
○何から手をつければいいのかわからない
○といった方の為に今回はコードレベルやBPレベルの話はあまりせ
ずに概念や考え方のお話をざっくりします
ネッ...
ネットワーク対応をする前に
前提とかのおはなし
○以下の項目を予め念頭に置いてお読み下さい
1. 多人数ではなくP2Pベースで話を進めます
2. コードとBPの使い方については今回は詳しく説明しません
3. 説明には間違いが含まれる可能性がある為公式のドキュメント
も合わせてお読み下さい
ネ...
ネットワーク対応って?
前提とかのおはなしその2
○具体的な内容を挙げてみます
1. プレイヤー同士で対戦をして遊ぶ
2. ランキング情報の閲覧と登録
3. 実績を解除する
4. ボイスチャットやテキストチャットを行う
5. シェアプレイをする
6. ゲームプレイを配信する
7. etc
ネッ...
ネットワークの仕組み
基本的な考え方のおはなし
○まず簡単な例を出し考えてみましょう
1. 二人のプレイヤーが向かい合ってお互いに銃を構え弾を撃ち合
うシーンがあったとします(画面にはそれぞれのプレイヤーが
映っています)
ネットワークの仕組み
Aさんの画面 Bさんの画面
2. ここでAさんが銃を撃ったとしましょう
ネットワークの仕組み
Aさんの画面 Bさんの画面
3. この時Aさんの画面とBさんの画面では同じ画面でないといけ
ない事がわかります。さもないとBさんはAさんが撃った事を
知らずに攻撃を受けてしまう事になるからです
ネットワークの仕組み
Aさんの画面 Bさんの画面
4. この例で言えばお互いに必要な弾を撃ったという情報をお互い
のコンソール上(画面)の情報を共有(同期)する必要がある事は
想像出来るかと思います
ネットワークの仕組み
Aさんの画面 Bさんの画面
ネットワークの基本的な考え方
同期の取り方とかのおはなし
○同期の基準となる情報は基本的にサーバが持ちます
○サーバではないプレイヤーはクライアントとなりサーバから得た
情報を元にゲームフローを進行させます
○例外もありますが基本的にはこの形です
ネットワークの基本的な考え方
UE4上での同期フローについて
ここからが本番
○まずはシンプルな管理階層構造図を見てみましょう
※図は各インスタンスの保持状況と管理構造
UE4上での同期フローについて
○先程の図を見てのとおりサーバ側がクライアント分のインスタン
スを保持し管理と操作を行う形になります
○RPC (Remote Procedure Calls)は関数のリモート操作を指します
“この関数を実行してね!”と相手のコンソールに伝える...
○Aさん(サーバ側)が弾を撃った場合の図
UE4上での同期フローについて
○Replication(複製)はサーバ側でその値が更新された場合にクライ
アント側の値がサーバ側の値に上書きされる事を意味します
○原則としてReplicateされるアクタはクライアント側からSpawnす
ることは禁止です(サーバ管理からはず...
同期の種類
あれ・・・クライアント側が弾を撃つときどうする
の?と気付いた人もいるのではないだろうか
○実はRPCの挙動はカスタマイズ可能で例えばクライアント側から
サーバに対し関数実行を行う事も可能
同期の種類
○RPCの挙動を上手にコントロールして同期をとりましょう
以下はRPCの種類です(※Multicast については省略)
サーバクライアント上で呼び出し、クライアント上で実行
UFUNCTION( Client )
void ClientRP...
○最後にReplicateされた変数の更新タイミングを受け取るRepnotify
処理の流れを紹介します
同期の種類
ネットワークサービスについて
あまり深いおはなしはしません
○UE4ではマルチプラットフォームに対応もされているためネット
ワーク周りの処理に関しても共通化されています
○キーワードは”OnlineSubSystem”です
プラットフォーム毎にTemplateとなるクラスから継承したサービ
ス群がそこに...
さいごに
○UE4のネットワークについては公式にあるサンプルプロジェクト
が非常に役に立ちます。活用しましょう。
○今回のこの説明で少しでもネットワーク対応のやり方の参考にな
れば幸いです。
○何はともあれネットワークゲームは楽しいものです
(考えること...
THANKS!
Any questions?
You can find me at:
@fuminyami
CREDITS
Special thanks to all the people who made and released
these awesome resources for free:
○ Presentation template b...
Upcoming SlideShare
Loading in …5
×

UE4を使用したゲーム開発の為のネットワーク対応その1

3,532 views

Published on

UnrealEngine4でネットワーク対応をする為の基本的な情報
BPやコードレベルの話は省き概要に近い形でまとめてみた

Published in: Engineering
  • Be the first to comment

UE4を使用したゲーム開発の為のネットワーク対応その1

  1. 1. UE4を使用したゲーム開発の為の ネットワーク対応その1
  2. 2. 自己紹介 @fuminaymi プログラマーです ゲーム作ってます(6年ぐらい)
  3. 3. もくじ ○ネットワーク対応をしてみよう ○ネットワーク対応をする前に ○ネットワークの仕組み ○ネットワーク設計の基本的な考え方 ○ネットワークサービスについて ○さいごに
  4. 4. ネットワーク対応をしてみよう 何事も挑戦です
  5. 5. ○UE4でのネットワーク対応は簡単 ○しかし公式ドキュメントを読むと難しそうに感じるし量も多い ○何から手をつければいいのかわからない ○といった方の為に今回はコードレベルやBPレベルの話はあまりせ ずに概念や考え方のお話をざっくりします ネットワーク対応してみよう
  6. 6. ネットワーク対応をする前に 前提とかのおはなし
  7. 7. ○以下の項目を予め念頭に置いてお読み下さい 1. 多人数ではなくP2Pベースで話を進めます 2. コードとBPの使い方については今回は詳しく説明しません 3. 説明には間違いが含まれる可能性がある為公式のドキュメント も合わせてお読み下さい ネットワーク対応をする前に
  8. 8. ネットワーク対応って? 前提とかのおはなしその2
  9. 9. ○具体的な内容を挙げてみます 1. プレイヤー同士で対戦をして遊ぶ 2. ランキング情報の閲覧と登録 3. 実績を解除する 4. ボイスチャットやテキストチャットを行う 5. シェアプレイをする 6. ゲームプレイを配信する 7. etc ネットワーク対応って?
  10. 10. ネットワークの仕組み 基本的な考え方のおはなし
  11. 11. ○まず簡単な例を出し考えてみましょう 1. 二人のプレイヤーが向かい合ってお互いに銃を構え弾を撃ち合 うシーンがあったとします(画面にはそれぞれのプレイヤーが 映っています) ネットワークの仕組み Aさんの画面 Bさんの画面
  12. 12. 2. ここでAさんが銃を撃ったとしましょう ネットワークの仕組み Aさんの画面 Bさんの画面
  13. 13. 3. この時Aさんの画面とBさんの画面では同じ画面でないといけ ない事がわかります。さもないとBさんはAさんが撃った事を 知らずに攻撃を受けてしまう事になるからです ネットワークの仕組み Aさんの画面 Bさんの画面
  14. 14. 4. この例で言えばお互いに必要な弾を撃ったという情報をお互い のコンソール上(画面)の情報を共有(同期)する必要がある事は 想像出来るかと思います ネットワークの仕組み Aさんの画面 Bさんの画面
  15. 15. ネットワークの基本的な考え方 同期の取り方とかのおはなし
  16. 16. ○同期の基準となる情報は基本的にサーバが持ちます ○サーバではないプレイヤーはクライアントとなりサーバから得た 情報を元にゲームフローを進行させます ○例外もありますが基本的にはこの形です ネットワークの基本的な考え方
  17. 17. UE4上での同期フローについて ここからが本番
  18. 18. ○まずはシンプルな管理階層構造図を見てみましょう ※図は各インスタンスの保持状況と管理構造 UE4上での同期フローについて
  19. 19. ○先程の図を見てのとおりサーバ側がクライアント分のインスタン スを保持し管理と操作を行う形になります ○RPC (Remote Procedure Calls)は関数のリモート操作を指します “この関数を実行してね!”と相手のコンソールに伝えるものと考え てください ○次の図でもう少し具体的なフローを見てみましょう UE4上での同期フローについて
  20. 20. ○Aさん(サーバ側)が弾を撃った場合の図 UE4上での同期フローについて
  21. 21. ○Replication(複製)はサーバ側でその値が更新された場合にクライ アント側の値がサーバ側の値に上書きされる事を意味します ○原則としてReplicateされるアクタはクライアント側からSpawnす ることは禁止です(サーバ管理からはずれたインスタンスとなりま す) ○他にもArray型(可変長型)はReplicate出来ない等のルールがありま す(詳細は公式ドキュメントを参照してください) ○先程の図で”弾を撃つ処理”をRPCすれば同期が取れることがわか ると思います UE4上での同期フローについて
  22. 22. 同期の種類 あれ・・・クライアント側が弾を撃つときどうする の?と気付いた人もいるのではないだろうか
  23. 23. ○実はRPCの挙動はカスタマイズ可能で例えばクライアント側から サーバに対し関数実行を行う事も可能 同期の種類
  24. 24. ○RPCの挙動を上手にコントロールして同期をとりましょう 以下はRPCの種類です(※Multicast については省略) サーバクライアント上で呼び出し、クライアント上で実行 UFUNCTION( Client ) void ClientRPCFunction(); クライアント上で呼び出し、サーバクライアント上で実行 UFUNCTION( Server ) void ServerRPCFunction(); ○同期(Replicate変数)は少なければ少ないほどパフォーマンスも安 定性も上がります。ローカル上で処理しても良いものは意外とたく さんあります。設計をよく練り実装しましょう 同期の種類
  25. 25. ○最後にReplicateされた変数の更新タイミングを受け取るRepnotify 処理の流れを紹介します 同期の種類
  26. 26. ネットワークサービスについて あまり深いおはなしはしません
  27. 27. ○UE4ではマルチプラットフォームに対応もされているためネット ワーク周りの処理に関しても共通化されています ○キーワードは”OnlineSubSystem”です プラットフォーム毎にTemplateとなるクラスから継承したサービ ス群がそこにあります ○しかし過信は禁物です。きちんと処理の中身を確認しましょう。 そもそも実装されていないAPIや必要なサービス等がない場合もあ ります(特にコンシューマー系) ○処理(サービス)を追加する場合はSubsystemをベースに拡張する のもいいでしょう ネットワークサービスについて
  28. 28. さいごに
  29. 29. ○UE4のネットワークについては公式にあるサンプルプロジェクト が非常に役に立ちます。活用しましょう。 ○今回のこの説明で少しでもネットワーク対応のやり方の参考にな れば幸いです。 ○何はともあれネットワークゲームは楽しいものです (考えることは多いけど) ちなみにその2の内容はまだ何するか決めてません (何しようかな) さいごに
  30. 30. THANKS! Any questions? You can find me at: @fuminyami
  31. 31. CREDITS Special thanks to all the people who made and released these awesome resources for free: ○ Presentation template by SlidesCarnival ○ Photographs by Unsplash ○ Backgrounds by SubtlePatterns

×