Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
torisoup
PDF, PPTX
10,820 views
Unityでオンラインゲーム作った話
UnityとPhoton Cloudを組み合わせてゲームを作った話 https://peatix.com/event/323261
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 47
2
/ 47
3
/ 47
4
/ 47
5
/ 47
6
/ 47
Most read
7
/ 47
8
/ 47
9
/ 47
10
/ 47
11
/ 47
12
/ 47
Most read
13
/ 47
14
/ 47
15
/ 47
16
/ 47
17
/ 47
18
/ 47
19
/ 47
20
/ 47
Most read
21
/ 47
22
/ 47
23
/ 47
24
/ 47
25
/ 47
26
/ 47
27
/ 47
28
/ 47
29
/ 47
30
/ 47
31
/ 47
32
/ 47
33
/ 47
34
/ 47
35
/ 47
36
/ 47
37
/ 47
38
/ 47
39
/ 47
40
/ 47
41
/ 47
42
/ 47
43
/ 47
44
/ 47
45
/ 47
46
/ 47
47
/ 47
More Related Content
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PDF
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
by
Daisuke Masubuchi
PPTX
UnityでUI開発を高速化した件
by
Grenge, Inc.
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
PDF
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
PPTX
なぜなにリアルタイムレンダリング
by
Satoshi Kodaira
PPTX
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
by
Game Tools & Middleware Forum
オンラインゲームの仕組みと工夫
by
Yuta Imai
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
by
Daisuke Masubuchi
UnityでUI開発を高速化した件
by
Grenge, Inc.
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
なぜなにリアルタイムレンダリング
by
Satoshi Kodaira
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
by
Game Tools & Middleware Forum
What's hot
PDF
MagicOnion入門
by
torisoup
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
GPU最適化入門
by
Takahiro KOGUCHI
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PPTX
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Azure PlayFab トレーニング資料
by
Daisuke Masubuchi
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
by
Unity Technologies Japan K.K.
PDF
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
PDF
中級グラフィックス入門~シャドウマッピング総まとめ~
by
ProjectAsura
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
by
DeNA
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
by
Toshiyasu Miyabe
PDF
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
by
KLab Inc. / Tech
PDF
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
MagicOnion入門
by
torisoup
猫でも分かる UE4の新しいサンプル「Action RPG」について
by
エピック・ゲームズ・ジャパン Epic Games Japan
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
Riderはいいぞ!
by
UnityTechnologiesJapan002
GPU最適化入門
by
Takahiro KOGUCHI
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
Azure PlayFab トレーニング資料
by
Daisuke Masubuchi
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
by
Unity Technologies Japan K.K.
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
中級グラフィックス入門~シャドウマッピング総まとめ~
by
ProjectAsura
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
by
DeNA
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
【Unity】 Behavior TreeでAIを作る
by
torisoup
猫でも分かる UE4のAnimation Blueprintの運用について
by
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
by
Toshiyasu Miyabe
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
by
KLab Inc. / Tech
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
Similar to Unityでオンラインゲーム作った話
PPTX
PhotonCloudで一ヶ月ゲーム作った話
by
Hiroto Imoto
PDF
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
by
GMO GlobalSign Holdings K.K.
PPTX
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
by
GMO GlobalSign Holdings K.K.
PDF
Photon勉強会(クライアントサイド)2015/8/4 発表資料
by
GMO GlobalSign Holdings K.K.
PDF
Cedec2013 photon network engine
by
GMO GlobalSign Holdings K.K.
ODP
pfm details
by
iyatomi takehiro
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
PPTX
Unityで Photonを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編】
by
GMO GlobalSign Holdings K.K.
PDF
Unitynetwork
by
Shinsuke Sugita
PDF
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
by
Yoshifumi Kawai
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
PDF
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
by
日本マイクロソフト株式会社
PDF
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
by
Daisuke Masubuchi
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
by
Kohei Kadowaki
PPTX
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編・前編】
by
GMO GlobalSign Holdings K.K.
PDF
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
by
モノビット エンジン
PDF
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
by
monobit
PPTX
GTMF 2017:Photonの実用ケーススタディご紹介とPlayCanvas新機能 GMOクラウド株式会社
by
Game Tools & Middleware Forum
PDF
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
by
KLab Inc. / Tech
PDF
【Unity道場 4月 ~アーティストの為のPBR再入門~】Unity Connected Gamesってなに?
by
Unity Technologies Japan K.K.
PhotonCloudで一ヶ月ゲーム作った話
by
Hiroto Imoto
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
by
GMO GlobalSign Holdings K.K.
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
by
GMO GlobalSign Holdings K.K.
Photon勉強会(クライアントサイド)2015/8/4 発表資料
by
GMO GlobalSign Holdings K.K.
Cedec2013 photon network engine
by
GMO GlobalSign Holdings K.K.
pfm details
by
iyatomi takehiro
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
Unityで Photonを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編】
by
GMO GlobalSign Holdings K.K.
Unitynetwork
by
Shinsuke Sugita
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
by
Yoshifumi Kawai
【Unite Tokyo 2019】「禍つヴァールハイト」最大100人同時プレイ!モバイルオンラインゲームの実装テクニック
by
UnityTechnologiesJapan002
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
by
日本マイクロソフト株式会社
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
by
Daisuke Masubuchi
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
by
Kohei Kadowaki
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編・前編】
by
GMO GlobalSign Holdings K.K.
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
by
モノビット エンジン
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
by
monobit
GTMF 2017:Photonの実用ケーススタディご紹介とPlayCanvas新機能 GMOクラウド株式会社
by
Game Tools & Middleware Forum
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
by
KLab Inc. / Tech
【Unity道場 4月 ~アーティストの為のPBR再入門~】Unity Connected Gamesってなに?
by
Unity Technologies Japan K.K.
More from torisoup
PDF
Doozy UI 使おうぜ! #unity_lt
by
torisoup
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
UniTask入門
by
torisoup
PDF
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
PDF
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
PDF
インタフェース完全に理解した
by
torisoup
PDF
Observableで非同期処理
by
torisoup
PDF
ObserverパターンからはじめるUniRx
by
torisoup
PDF
Unityでオニオンアーキテクチャ
by
torisoup
PDF
Photon Cloud ことはじめ
by
torisoup
PDF
アバター生放送支援アプリ「アバれぽ」
by
torisoup
PDF
コールバックと戦う話
by
torisoup
PDF
UniRx完全に理解した
by
torisoup
PDF
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
PDF
Task vs Observable
by
torisoup
PDF
UniRxでPUNを使いやすくする
by
torisoup
PPTX
はじめてのUniRx
by
torisoup
PPTX
UniRxでMV(R)Pパターンをやってみた
by
torisoup
PPTX
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
PPTX
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
Doozy UI 使おうぜ! #unity_lt
by
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
UniTask入門
by
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
インタフェース完全に理解した
by
torisoup
Observableで非同期処理
by
torisoup
ObserverパターンからはじめるUniRx
by
torisoup
Unityでオニオンアーキテクチャ
by
torisoup
Photon Cloud ことはじめ
by
torisoup
アバター生放送支援アプリ「アバれぽ」
by
torisoup
コールバックと戦う話
by
torisoup
UniRx完全に理解した
by
torisoup
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
Task vs Observable
by
torisoup
UniRxでPUNを使いやすくする
by
torisoup
はじめてのUniRx
by
torisoup
UniRxでMV(R)Pパターンをやってみた
by
torisoup
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
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倍になる(体感) –
技術的に実装困難なため諦めた仕様もいくつかある – 不具合発生時の原因調査にエスパー能力が必要 • まじめに作るとつらいところはできるだけ誤魔化す – プレイヤが不快に感じさえしなければよい – ガバ物理はむしろラグった方が面白いから助かった
Download