Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
いつでも快適に遊びたい!リンクスリングスのネットワーク遅延との付き合い方
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
CyberAgent SGE Engineer
October 10, 2019
Technology
3.8k
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.5k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
2.8k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
3.3k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
17k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
2.4k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
3.6k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
2.5k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
5.9k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
5.6k
Other Decks in Technology
See All in Technology
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
300
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
12
8.7k
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
160
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
120
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
3
840
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
420
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
14
2.1k
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
410
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
3.2k
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.6k
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
290
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
HDC tutorial
michielstock
2
750
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Designing Experiences People Love
moore
143
24k
Unsuck your backbone
ammeep
672
58k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Designing for Performance
lara
611
70k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
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. 以降は通常の接続時と同じ通信を行う 現在絶賛バグチェック中! 近日のアップデートでリリースされる予定です!
リコネクト(おまけ) 苦労 • もともとサーバにデータが揃っていないところからスタート • 状態の補完機能もなかった • リコネクトしないと機能を試せないのはえぐい デバッグツールを作成 補完処理の実装と
その後の開発をサポート
リコネクト(おまけ) 後から考えるとものすごく大変 状態補完機能は強力な開発サポートツール リコネクトは最初から考慮に入れましょう
まとめ • 思い通りに操作する気持ちよさを重要視 ◦ コマンドの反応速度は必須 ◦ 重要なコマンドは最速で気持ちよく実行 ◦ ラグによるズレを許容するための仕組みを紹介 •
切断対策 ◦ 到達保証通信を出来るだけ使わないこと ◦ リコネクトは必須。超大事。