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
Yasutomo Uemori
PRO
January 17, 2024
Technology
1
280
いまどきのゲームサーバアーキテクチャ
社内でLTしたときの資料です
Yasutomo Uemori
PRO
January 17, 2024
Tweet
Share
More Decks by Yasutomo Uemori
See All by Yasutomo Uemori
よくわかる新収益認識基準
wakaba260
PRO
0
110
オンラインゲームのRails複数db戦略
wakaba260
PRO
0
75
Active job meets kubernetes
wakaba260
PRO
0
36
Ruby/Rails Benchmarking and Profiling with TDD
wakaba260
PRO
0
56
GCP・GKEで作るスケーラブルなゲーム開発環境
wakaba260
PRO
0
61
サービスクラス、その前に
wakaba260
PRO
0
34
Rails on Dockerとの戦い
wakaba260
PRO
0
35
Rubocopとの付き合い方
wakaba260
PRO
0
39
Rails api way in aiming
wakaba260
PRO
0
38
Other Decks in Technology
See All in Technology
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
420
AIの個性を理解し、指揮する
shoota
3
610
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
660
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
6
1.6k
20251027_マルチエージェントとは
almondo_event
1
520
Raycast AI APIを使ってちょっと便利なAI拡張機能を作ってみた
kawamataryo
0
230
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
150
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
2k
OpenCensusと歩んだ7年間
bgpat
0
320
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
240
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
250
データとAIで明らかになる、私たちの課題 ~Snowflake MCP,Salesforce MCPに触れて~ / Data and AI Insights
kaonavi
0
230
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.6k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Code Review Best Practice
trishagee
72
19k
Code Reviewing Like a Champion
maltzj
526
40k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
How GitHub (no longer) Works
holman
315
140k
Thoughts on Productivity
jonyablonski
72
4.9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Speed Design
sergeychernyshev
32
1.2k
Transcript
いまどきの ゲームサーバ アーキテクチャ サーバエンジニア 植森 康友
今回のお話 ステートレスとステートフルの話に触れつつ いろんなサーバ構成の例を見て いまどきのゲームサーバの 全体アーキテクチャについて振り返る
お話の発端
お話の発端
とあるMMORPGのサーバ構成
Q. ステートフルゲームサーバのアーキテクチャが 重視しているポイントを2つ挙げてください
1. 負荷分散
2. サーバ費用
ステートフルゲームサーバのアーキテクチャが 重要視しているポイント 1. 負荷分散 2. サーバ費用 ➔ ステートレスなアーキテクチャが頭にあると 気づきにくいが実はスケーラビリティが重要視されている ※チート対策とかレイテンシとかももちろんある
MOの場合(空間コピー)
MMOの場合(空間分割+空間コピー)
さらにワールド分割でDBのボトルネックを回避
詳しくはオンラインゲームを支える技術を
ステートフルサーバアーキテクチャの 負荷分散手法 • 空間分割 • 空間コピー • ワールド分割 ➔ スケーラビリティとの戦いによる技術
➔ 「売れた時に規模を拡大したい」は昔から変わらない課題
古のゲーム開発からの時代の変化 • マシンコストの低下(メモリ、CPU、ディスク) • Web技術の発展 • アーキテクチャの進化(VM、クラウド、コンテナ) • ビジネス要求の変化
Web技術の採用 「剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術」より https://www.slideshare.net/satoshiyamafuji/cedec2014-logres-cedil
ビジネス要求の変化 グラブルのようなWebベースのゲームでもリアルタイム処理が必要な時代に 「グランブルーファンタジーを支えるインフラの技術」より https://speakerdeck.com/cygames/kuranhuruhuantasiwozhi-eruinhurafalseji-shu
ステートフルとステートレスの差が減りつつある
いまどきのステートレス vs ステートフル 簡単なwebアプリケーションなら、事前にデータフォーマットを定義し、リクエストを受けるたびに、DBからユーザの情報を読み取り、処理後DBに書き込みする ことが一般的です。ネットゲームにおいて、強いコンテキストを持ち、ユーザ間の連携も多いです。もし同じモードを採用すると、 DBの処理とロジックの処理の 間、ボトルネックになりやすい、このボトルネックネックは通常キャッシュをレイヤーを追加するだけで解決できないことが多いです 。 Skynetでゲームホストする場合は、同期的にデータをDBに保存することはおすすめしません、代わりにインメモリのDBに保存したほうが良い。 サービス、アプ
リロジックやゲームデータは全部メモリで常駐します。もしDBはあなたのフレームワークの一部でしたら、殆どの場合バックアップとして使うべき。データの状態 が変わったもしくは定期的にDBに保存します 。アプリは直接メモリからデータを呼びます。 • インフラ技術やミドルウェア、クラウドの発展によりDBのボトルネックは回避されやすくなった • インメモリ=アプリロジックの処理をどこでやるか?が決定的な差異 ➔ インメモリの処理をクライアントに依存しているのが今のステートレスサーバの正体 ➔ ビジネス要件がクライアントのインメモリ処理で事足りている(特にチート対策)
None
None
ステートフルサーバはMicro Serviceが必要 厳密にはMicroServiceではなく分散システム
剣と魔法のログレスのサーバ構成例 「剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術」より https://www.slideshare.net/satoshiyamafuji/cedec2014-logres-cedil
Proxyの採用による固定IPの排除 「Protect Multiplayer Game Servers From DDoS Attacks Using Amazon
GameLift」より https://aws.amazon.com/jp/blogs/gametech/protect-multiplayer-game-servers-from-ddos-attacks-using-amazon-gamelift-2/
Proxyの採用による固定IPの排除 とあるMMORPGの構成
Proxyの採用による固定IPの排除 「グランブルーファンタジーを支えるインフラの技術」より https://speakerdeck.com/cygames/kuranhuruhuantasiwozhi-eruinhurafalseji-shu
ステートフルサーバでもコンテナ技術を採用 「Kubernetesでステートフルなゲームサーバを動かした思い出」より https://link.medium.com/phnOduRALfb 「agones超入門」より https://medium.com/google-cloud-jp/agones-beginner-jp-5a6553e7e9a4
ステートレスではクラウドやサーバレスの採用 「ミリシタを支える GAE/Go」より https://www.slideshare.net/GoogleCloudPlatformJP/gaego-80349110 「AWSケーススタディ:Habby」より https://aws.amazon.com/cn/solutions/case-studies/habby/
どのアーキテクチャがいいのか
ゲームの要件によって 適切な構成は変化するので絶対の回答はない
まとめ • 時代の流れでステートレスとステートフルの差は減った • インメモリの処理をどこに寄せるかでアーキテクチャは大きく 変わる (チート対策、開発コスト、etc...) • 既存のアーキテクチャに学ぶ点は多いのでキャッチアップ大事 要件と相談してより良いアーキテクチャを検討していきましょう
ご静聴ありがとうございました