Suche senden
Hochladen
Unityでオンラインゲーム作った話
•
2 gefällt mir
•
10,385 views
torisoup
Folgen
UnityとPhoton Cloudを組み合わせてゲームを作った話 https://peatix.com/event/323261
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
UniTask入門
UniTask入門
torisoup
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
Epic Online Services でできること
Epic Online Services でできること
エピック・ゲームズ・ジャパン Epic Games Japan
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
UniRx完全に理解した
UniRx完全に理解した
torisoup
MagicOnion入門
MagicOnion入門
torisoup
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
Empfohlen
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
UniTask入門
UniTask入門
torisoup
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
Epic Online Services でできること
Epic Online Services でできること
エピック・ゲームズ・ジャパン Epic Games Japan
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
UniRx完全に理解した
UniRx完全に理解した
torisoup
MagicOnion入門
MagicOnion入門
torisoup
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
torisoup
UE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフロー
historia_Inc
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
UnrealEngine の VR 事情
UnrealEngine の VR 事情
Masaaki Suga
Weitere ähnliche Inhalte
Was ist angesagt?
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
torisoup
UE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフロー
historia_Inc
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
Was ist angesagt?
(20)
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
インタフェース完全に理解した
インタフェース完全に理解した
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
UE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフロー
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
Ähnlich wie Unityでオンラインゲーム作った話
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
UnrealEngine の VR 事情
UnrealEngine の VR 事情
Masaaki Suga
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
Tokoroten Nakayama
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
Drecom Co., Ltd.
Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜
Kazuki Morozumi
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニング
Ryoji Yanashima
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROS
Hiroki Nakahara
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
Takuya Nishimoto
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
Game Tools & Middleware Forum
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
Game Tools & Middleware Forum
Nishimoto 170603-mruby
Nishimoto 170603-mruby
Takuya Nishimoto
コールバックと戦う話
コールバックと戦う話
torisoup
rogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさん
rogy01
PyCharm入門
PyCharm入門
Yuki Nagai
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
IGDA Japan
Io t,ai時代のソフトウェア
Io t,ai時代のソフトウェア
Toshiaki Kurokawa
私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
くみこみからひとこと
くみこみからひとこと
kishima7
DSPGraphを試してみた話
DSPGraphを試してみた話
Toru Nayuki
Ähnlich wie Unityでオンラインゲーム作った話
(20)
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
UnrealEngine の VR 事情
UnrealEngine の VR 事情
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニング
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROS
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
Nishimoto 170603-mruby
Nishimoto 170603-mruby
コールバックと戦う話
コールバックと戦う話
rogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさん
PyCharm入門
PyCharm入門
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
Io t,ai時代のソフトウェア
Io t,ai時代のソフトウェア
私とOSSの25年
私とOSSの25年
くみこみからひとこと
くみこみからひとこと
DSPGraphを試してみた話
DSPGraphを試してみた話
Mehr von torisoup
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
torisoup
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
torisoup
Observableで非同期処理
Observableで非同期処理
torisoup
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
Photon Cloud ことはじめ
Photon Cloud ことはじめ
torisoup
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
torisoup
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
torisoup
Task vs Observable
Task vs Observable
torisoup
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
torisoup
はじめてのUniRx
はじめてのUniRx
torisoup
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
torisoup
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
torisoup
Unity講習会(初級)
Unity講習会(初級)
torisoup
Mehr von torisoup
(16)
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
Observableで非同期処理
Observableで非同期処理
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
Photon Cloud ことはじめ
Photon Cloud ことはじめ
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
Task vs Observable
Task vs Observable
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
はじめてのUniRx
はじめてのUniRx
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
Unity講習会(初級)
Unity講習会(初級)
Kürzlich hochgeladen
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Kürzlich hochgeladen
(11)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Unityでオンラインゲーム作った話
1.
オンラインゲームつくった話 @toRisouP
2.
誰? • とりすーぷ (
@toRisouP ) – Webエンジニア(プログラマ) – Unity、C#、Scala、Ruby、Python、PHPとかその辺触ってる • 最近はScalaが一番お気に入り • いろいろやってる – 同人ゲーム制作 – VR開発 – Qiita書く – 技術書執筆
3.
この秋、 ゲームをリリースしました
4.
ハクレイフリーマーケット • Windows向けの東方2次創作ゲーム • 最大6人までネットワーク対戦可能なパーティアクションゲーム •
ロビー機能あり、CPUあり
5.
ウリ • 物理演算をメインに使ったパーティゲーム – とりあえず物理演算をガバらせておけば面白くなるという発想 •
ガバガバ物理演算は偉大 – 大量の物理演算オブジェクトを同期しながら通信対戦できる • 今思うと狂気の沙汰
6.
使ってるもの • 使っているフレームワークとか – Unity
2017.2 – Photon Cloud – NCMB – ADX2 LE – Effekseer • 使ってるライブラリ – UniRx – Zenject – PhotonRx
7.
本題
8.
オンラインゲームつくるの すごくツライ
9.
PhotonCloudの仕様 • クライアントで状態を管理する – サーバサイドに状態はもたせられない –
サーバサイドにロジックはおけない – 誰か1人がマスタークライアントになる – クライアントサイドで全ての問題を解決しないといけない!
10.
発生した問題 • 動きがカクカクする • 通信の待ち時間でテンポが悪くなる •
帯域、メッセージ数がオーバーする
11.
発生した問題 • 動きがカクカクする • 通信の待ち時間でテンポが悪くなる •
帯域、メッセージ数がオーバーする
12.
オブジェクトの管理ルール • オブジェクトには親の概念がある – 同期オブジェクトにはPhotonViewコンポーネントがついている –
PhotonView.IsMine = true だと自分が管理(送信モード) – PhotonView. IsMine = false だと通信相手が管理(受信モード) 親 (IsMine=true) 子 (IsMine=false) 子 (IsMine=false) 子 (IsMine=false)
13.
図解 • 自分の世界 – IsMine
= true • 相手の世界 – IsMine = false 同期されている2つのオブジェクトがある
14.
図解 • 自分の世界 •
相手の世界 自分のオブジェクトが移動すると… アニメーション
15.
図解 • 自分の世界 •
相手の世界 移動後の座標を送信して 相手側の座標を書き換える
16.
図解 • 自分の世界 •
相手の世界 相手の世界の座標を上書きして同期
17.
図解 • 自分の世界 •
相手の世界 自分の世界ではキレイにアニメーションして移動したが、 相手の世界には結果しか送ってないので突然ワープしたように見える → 動きがカクカクする
18.
カクカクする問題 • 同期メッセージの送信頻度が低いのが原因 – 根本対策は同期頻度を上げるしかないが、 帯域やメッセージ数の制限で上げるにも限界がある →別アプローチで解決する必要がある
19.
解決策いろいろ • 同期頻度を単純に増やす方法 – これができたら苦労しない •
キー入力を送ってしまう方法 – 入力から一意に結果が決まるゲームシステムならかなり有効 • がんばってごまかす方法 – 補間・補外・エフェクト・アニメーションでごまかす • そもそも同期しない方法 – ローカルで演算可能ならそっちを優先して使う
20.
解決策いろいろ • 同期頻度を単純に増やす方法 – これができたら苦労しない •
キー入力を送ってしまう方法 – 入力から一意に結果が決まるゲームシステムならかなり有効 • がんばってごまかす方法 – 補間・補外・エフェクト・アニメーションでごまかす • そもそも同期しない方法 – ローカルで演算可能ならそっちを優先して使う 採用した方法 (というかこれしかできない)
21.
がんばってごまかす • 補間処理でなんとかんする – Vector3.Lerp
と Quaternion.Lerp を使う • 補間の割合を調整して違和感が少ないパラメータを見つける – 補間を強くする → 滑らかだが動きが鈍くなる – 補間を弱くする → 機敏だがカクカクが目立つ
22.
そもそも同期しない 相手の演算結果を待っているからラグが生じる ↓ 自分が演算して結果を送る側になれば ラグは起きない
23.
プレイヤの動向を観察してわかったこと • 「プレイヤは自キャラの周辺しかみてない」 – 正確には「自分の行動に対する周辺のリアクション」しか見てない •
自分が触ったオブジェクト • 自分が持ち上げたオブジェクト • 自分が投げたオブジェクトの挙動 – 少なくともここさえ滑らかに動いていれば、 他がカクカクしててもあまり気にならない
24.
やったこと • 自キャラが触れたオブジェクトの親権を奪う – 座標を受け取る側から送る側にしてしまう –
自キャラが触れた瞬間にIsMineをtrueに書き換えてしまう • (実際はIsMineに似た別のフラグ用意してそっちを書き換えているけどね)
25.
効果 • かなり効いた – 少なくとも自分の周辺だけはラグがなく動いてくれる •
実装は複雑化してしまった – メンテナンス困難な実装になっている – 親権のスイッチングコストも結構かかる
26.
発生した問題 • 動きがカクカクする • 通信の待ち時間でテンポが悪くなる •
帯域、メッセージ数がオーバーする
27.
テンポが悪くなる • 入力に対してプレイヤが機敏に反応してくれない – 原因は行動時に「通信」が発生するから •
特にこのゲームだと「アイテムを拾う」時に発生する – アイテムを拾えるかどうか?の判定に通信が発生するため
28.
解決策 • 通信時間をアニメーションでごまかす – アイテムを拾う時に、 「構える」→「持ち上げる」の2段階のアニメーションを再生する –
構えモーションの間に通信を終わらせてしまう
29.
アニメーション 構えモーション 構え→持ち上げ 構え→持ち上げ (構えが長めのキャラ) 構えモーション再生中に裏で通信しちゃうことで、 通信によるテンポの悪化をごまかす
30.
発生した問題 • 動きがカクカクする • 通信の待ち時間でテンポが悪くなる •
帯域、メッセージ数がオーバーする
31.
帯域とメッセージ数 • 帯域 – 秒間に通信するデータ量 –
小さければ小さいほうが当然良い – PhotonCloud的には通信したデータの総量の方が大事 • メッセージ数 – 座標等の同期、RPCの実行命令などの送受信回数
32.
制約 • 通信量 – 1ユーザあたり3GB/月まで –
オーバーすると追加料金 • メッセージ数 – 1部屋につき500メッセージ/秒 – オーバーしても今のところはペナルティなし
33.
メッセージ数の制約がヤバイ • 部屋に参加している人数倍して計算される – 6人部屋で1メッセージ送信すると、 送信1+受信5=6メッセージ消費してしまう –
6人部屋だと約83メッセージ/秒しか送れない • 60FPSだと1フレームあたり1~2メッセージしか送れない
34.
このゲーム同期対象が多すぎる • フィールド上のアイテムを同期すると一瞬で上限超える – こんな仕様のゲームでネットワーク対戦とかバカじゃないの…
35.
対策をうつ必要がある
36.
対策前の状態 • データ通信量 – 1試合あたりの総量6MB/人 •
メッセージ数 – 2000メッセージ/s/room – 規定値の4倍もいってた
37.
取った対策一覧 • 次の位置が確実に予測可能なものは同期しない • 動いていないオブジェクトは同期しない •
オンライン対戦時にはゲームのフレームレートを30に落とす • オブジェクトをシャーディングしてグループ単位でまとめて同期する
38.
取った対策一覧 • 次の位置が確実に予測可能なものは同期しない • 動いていないオブジェクトは同期しない •
オンライン対戦時にはゲームのフレームレートを30に落とす • オブジェクトをシャーディングしてグループ単位でまとめて同期する
39.
フレームレートを落とす • オンライン時のみ30FPSに落とす – メッセージ送信回数を60FPS時の半分以下にできる –
補間処理でごまかしやすくなる – 低スペックPCと挙動を揃えることが出来る – 割とメリットが大きかったので採用
40.
オブジェクトのグループ化 • オブジェクトの座標同期をグループ単位で行う – ようするにシャーディングして管理する
41.
グループ単位で分割するメリット • バラバラに送るよりメッセージ数を削減できる – 1メッセージ内に複数の座標データをまとめて送信できる •
挙動のチューニングができる – 「グループにわける数」 と 「何フレームごとに送信するか」の 組み合わせでカクカク度合いとメッセージ数のバランスを調整できる • 一斉に同期する時の違和感が消せる – 全オブジェクトが同じタイミングで動くと違和感が出る – バラバラに動いている感を出してごまかせる
42.
後はログを見ながら調整 • 違和感と帯域・メッセージ数のバランスを見て模索
43.
チューニング結果 • 帯域 – 対策前
1試合あたり6MB → 1試合あたり2MB 60FPS,グループ化なし,毎フレーム送信 30FPS,3グループ分割,2フレームごとに送信
44.
チューニング結果 • メッセージ数 – 1000~1900/s
→ 450~600/s
45.
なんとか規定値には収まった • まだところどころオーバーするけど… – 怒られたら直す 500メッセージ
46.
まとめ
47.
まとめ • オンラインゲーム制作はとにかく手間がかかる – 工数がオフラインゲーム開発の5~10倍になる(体感) –
技術的に実装困難なため諦めた仕様もいくつかある – 不具合発生時の原因調査にエスパー能力が必要 • まじめに作るとつらいところはできるだけ誤魔化す – プレイヤが不快に感じさえしなければよい – ガバ物理はむしろラグった方が面白いから助かった
Jetzt herunterladen