Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
いつでも快適に遊びたい!リンクスリングスのネットワーク遅延との付き合い方
Search
CyberAgent SGE Engineer
October 10, 2019
Technology
3.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
いつでも快適に遊びたい!リンクスリングスのネットワーク遅延との付き合い方
Sumzap TECH NIGHT vol.7 の発表資料です。
CyberAgent SGE Engineer
October 10, 2019
More Decks by CyberAgent SGE Engineer
See All by CyberAgent SGE Engineer
SREチームの立ち上げから5年間とこれから
sgeengineer
0
2.7k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
3k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
3.5k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
5
23k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
2.6k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
3.8k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
2.6k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
6k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
5.8k
Other Decks in Technology
See All in Technology
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
200
【dbts2026】AIエージェントの 判断と探索を変える、 データベース エンジニアリング― 既存DBの処理と依存関係から作る、オペレーショナルオントロジー ―
shisyu_gaku
0
270
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
210
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
320
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
200
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.8k
Shared Signals Framework 仕様解説
oidfj
0
340
Kiro Crew の Bot (続く役目を任せる窓口) | 目指せ Kiro マスター 12
inariku
PRO
2
350
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
5
3.3k
AWS基盤改善を支える 私たちの理念と行動指針
kentosuzuki
0
140
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
140
公共分野での生成AI活用
toru_kubota
1
310
Featured
See All Featured
How to Ace a Technical Interview
jacobian
280
24k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
330
The Curious Case for Waylosing
cassininazir
1
610
Speed Design
sergeychernyshev
33
2.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
300
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Design in an AI World
tapps
1
390
Building Applications with DynamoDB
mza
96
7.3k
Side Projects
sachag
456
43k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Transcript
ゲーム業界の通信の未来を語る 2019/10/10 STN vol.7 ~次世代のゲーム体験はどう変わるのか~
01 はじめに サムザップテックナイトとは 実務で活かせるライブ感ある情報の発信と ゲーム業界に関わる人と人との交流を通じ、 ゲーム業界全体の発展を目指す場。
いつでも快適に遊びたい! リンクスリングスの ネットワーク遅延との付き合い方 株式会社サムザップ 二宮 章太 03 サムザップ 登壇
自己紹介 二宮章太 • 2015年入社 • リンクスリングスのバトル部分を担当 • PhotonServer/Unity
リンクスリングス
リンクスリングス
遅延対策
大事にしていること 自分の思い通りに 操作する気持ちよさ 反応速度を重視 • すぐに最高速度で移動する • すぐに振り向く • すぐに攻撃が出る
速度重視のコマンドを 最速で放つ • 入力を受けたらすぐに 移動・回転・スキルを発動する ◦ サーバは経由させずに即実行! • 遅延によるズレは 致命傷にならないように工夫
遅延によるマイナスを減らす 「避けたはずなのにダメージを受けた」をなくす • 当たってないのに被ダメ判定は理不尽 • ダメージを受ける側で当たり判定を行う
攻撃がスカる? コリジョンを工夫する • 実際の攻撃エフェクトの 見た目よりも当たり判定を広く取る ◦ 誤判定と思われない程度の広さ ◦ キャラ0.5~1人分程度大きくする (拡張幅はゲームスピードに依存)
◦ 敵に向かって突進する速度や角度を うまく調整し、ヒットタイミングを 誤認させる
ヒット演出 ダメージテキスト • ヒット判定をもらってから表示 ◦ 反応速度 < 判定の正しさ ◦ 人間の反応速度を
計算に入れておく (ヒットの認識 →ダメージ表示の確認)
ヒット演出 ヒットしたら爆発する球 • ローカルで処理 ◦ 通過してから爆発は許容できない ◦ 判定の正しさ < 気持ちよさ
• 稀に出る副作用 ◦ 仲間の近くを弾丸が通過!球の爆発はしてないが、 吹き飛ぶ仲間。あいつ、、、何にやられたん だ、、、、!! ◦ 敵を射撃!球が爆発!やったぜ!!ノーダメージで 走りこんでくる敵!ぎゃああああああ
ヒット演出 例)スキル使用後、敵に向かって突撃し、 接敵したらストップ&攻撃するスキル • ヒット判定をもらってから ストップ&攻撃の処理をするとダメ ◦ ローカルで処理をすると、 攻撃が届かない、ラグで当たらない •
多少通過するのはコリジョンを工夫 ◦ 攻撃演出のあるエフェクト上以外も キャラ周辺にもコリジョンを設置 ◦ キャラ周辺のコリジョンは ◦ 後ろ方向に広めに取る
ラグの上限を設定 RTTに閾値を設けて、通信環境が回復するまで動けなくする • 当初はRTT 250程度 • 電車でプレイするとどこかしらで動けなくなった • 現在はRTT 350程度まで許容
• 瞬間移動するユーザが報告されたりする
切断対策
切断しやすいゲームとは? ネットワークは同じなのに、 アプリによって切断しやすいしづらいが存在する。 • RUDPの仕組みに着目 • PhotonのRUDP ◦ 到達保証 ▪
必ず届く ◦ 順序保証 ▪ 送信した順にアプリケーションに届く
切断しやすいゲームとは? 到達保証?必ず届く?? • UDPは通信ロストがありうる • Photonの実装 ◦ Ackで到着確認 ◦ 再送機能
◦ ダメなら切断 到達保証を多用すると通信の瞬断に対してシビアになる
到達保証通信を減らす 通信頻度を考える 1. 移動 2. 陣取り 3. スキルなどその他 • 移動
◦ ロスト許容 途中抜けても最新が合えばOK • 陣取り ◦ 端末間で陣の状態がずれるのは困る ◦ サーバへの送信はロストしても構わない
山手線チェック チームメンバーで山手線に乗り込み移動しながらプレイ 通信が切れてしまうような場所を除けば 切断されずにプレイ可能なことを確認! いける、、、!!!
甘かった • 陣取りは数フレームおきに発生 ◦ 絶えず到達保証の通信が発生 • 短い瞬断であっても確実に切断してくる • 山手線の回線は実は良かったようだ、、 •
もはや切断は仕方ない • 再接続だ というわけでリコネクト機能の実装が決定!
リコネクト サーバ側でゲームの状態を保持しておく 1. 再接続を検知 2. サーバから最新のゲーム状態を配布 3. 以降は通常の接続時と同じ通信を行う 現在絶賛バグチェック中! 近日のアップデートでリリースされる予定です!
リコネクト(おまけ) 苦労 • もともとサーバにデータが揃っていないところからスタート • 状態の補完機能もなかった • リコネクトしないと機能を試せないのはえぐい デバッグツールを作成 補完処理の実装と
その後の開発をサポート
リコネクト(おまけ) 後から考えるとものすごく大変 状態補完機能は強力な開発サポートツール リコネクトは最初から考慮に入れましょう
まとめ • 思い通りに操作する気持ちよさを重要視 ◦ コマンドの反応速度は必須 ◦ 重要なコマンドは最速で気持ちよく実行 ◦ ラグによるズレを許容するための仕組みを紹介 •
切断対策 ◦ 到達保証通信を出来るだけ使わないこと ◦ リコネクトは必須。超大事。