SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
© KLab Inc. 2022
モバイルオンラインゲームでの大規模観
戦とチート対策
© KLab Inc. 2022
自社製リアルタイム通信システム
「WSNet2」
OSSとして公開しました
https://github.com/KLab/wsnet2
告知
© KLab Inc. 2022
今日のお話
● 自己紹介・会社紹介
● WSNet2の紹介
● なぜ自社開発したか
● 数万人規模の観戦への対応
● チート対策の工夫
© KLab Inc. 2022
自己紹介
牧内大輔
KLab株式会社 エンジニアリング本部サーバサイドG
対外発表
● Go Conference
■ 「型パラメータが使えるようになったのでLINQを実装してみた」 他
OSS
● EMLauncher (https://github.com/KLab/emlauncher)
● gozxing (https://github.com/makiuchi-d/gozixing) 他
© KLab Inc. 2022
ミッション:「世界と自分をワクワクさせろ」
ビジョン:「エンターテインメントで、世界中のユーザーをひとつにつなげる」
社会に感動と喜びを提供できるような、サービス・技術を創造しています。
設立 2000年8月1日
資本金 53億6364万円(2022年10月末現在)
株式公開市場 東京証券取引所・プライム市場(3656)
代表者
代表取締役社長CEO 森田 英克
代表取締役副会長 五十嵐洋介
所在地
本社(東京都港区、六本木ヒルズ森タワー)
大阪事業所、福岡事業所、仙台事業所
主要関連会社 株式会社BLOCKSMITH&Co. 株式会社グローバルギア
海外拠点 可来软件开发(上海)有限公司 (KLab China Inc.)
グループ従業員数 正社員 553名(2022年9月末時点)
主力:ゲーム事業
アニメ、コミック、ゲームなど、世界中で
人気の高いIPを原作とした
モバイルオンラインゲームを国内外に展開。
現在155の国と地域で配信
その他:
スマートフォン関連のアプリケーション、
サービス及びサーバーインフラの企画、
開発、提供、新規事業開拓など
会社紹介:KLab株式会社(クラブ)
© KLab Inc. 2022
WSNet2の紹介
© KLab Inc. 2022
● 常時接続、クライアント同士が双方向通信
● 同じステージ(部屋)を同時に遊ぶ
■ オンライン対戦、協力プレイなど
リアルタイム通信とは
ステージ
© KLab Inc. 2022
※PhotonはExit Gamesの製品です
©久保帯人/集英社・テレビ東京・dentsu・ぴえろ ©高橋陽一/集英社 ©高橋陽一/集英社・テレビ東京・エノキフィルム ©KLabGames
リアルタイム通信の利用
Photon (PUN)※
その他自社製
WSNet
(WSNet2の前身)
© KLab Inc. 2022
● サーバを介してメッセージを同期
● 特徴
○ WebSocketベース
○ C#クライアントライブラリ
■ (Unity/.NET)
○ 自動再接続、メッセージ再送
○ 柔軟な部屋検索
○ 数十万人規模の観戦
WSNet2について
© KLab Inc. 2022
● 向いているゲーム
○ パズルゲーム、戦略ゲームなど
■ メッセージの順序や整合性を重視するもの
● 向いていないゲーム
○ アクションゲームなど
■ 処理順序よりもリアルタイム性を重視するもの
WSNet2について
© KLab Inc. 2022
なぜ自社開発したか
© KLab Inc. 2022
なぜ自社開発したか
● 技術的な挑戦
■ 自社でも技術をもっておきたい
● モバイルオンラインゲームでの課題
■ 一時的な切断への対応
■ 複雑な検索条件での入室
© KLab Inc. 2022
● モバイル端末では一時的な切断がよくある
○ WiFi・モバイル回線の切り替わり
○ トンネル・地下鉄などの一時的な圏外
課題:一時的な切断
© KLab Inc. 2022
● モバイル端末では一時的な切断がよくある
○ WiFi・モバイル回線の切り替わり
○ トンネル・地下鉄などの一時的な圏外
課題:一時的な切断
ネットワークから切断しました
この試合は敗北になります
通信エラー
OK
© KLab Inc. 2022
接続で入室、切断したら退室
● サーバの実装がシンプル
● 一時的な切断で退室してしまう
■ 再入室できたとしても退室中のメッセージが欠落
よくある実装
入室 退室 再入室 退室
© KLab Inc. 2022
● 入室状態と接続状態を別々に管理
■ 切断しても退室にしない
■ 切断中のメッセージは再接続時に再送
■ ゲームアプリは切断・再接続を感知しない
WSNet2の実装
接続 切断 再接続 切断
入室 退室
再送
退室リクエスト
入室成功
© KLab Inc. 2022
● 柔軟なマッチメイキング
■ ゲーム仕様に合わせた条件指定
○ 例:パラメータが近い(範囲指定)
○ 例:募集開始1分以内はフレンドのみ、以降は誰でも
● 観戦のための検索
■ すでにマッチング済みの部屋の検索
課題:複雑な検索条件での入室
© KLab Inc. 2022
部屋一覧を取得してクライアント側で選択
● クライアントの負荷が高い
● 通信量が多い
● 2回リクエストが必要
よくある実装その1
Real
time
Room 入室
© KLab Inc. 2022
部屋の状態をAPIサーバに同期
APIサーバで部屋を決定
● 構成が複雑
● 同期のタイムラグ
● 2回リクエストが必要
よくある実装その2
API
Room 入室
Real
time
Room
© KLab Inc. 2022
回線速度・端末スペックによる有利不利
● 椅子取りゲームなマッチング
■ 報酬の良いステージなど
● 早い端末が埋めてしまう
■ 遅い端末は入れない
2回リクエストの弊害
Room
Room
Room
Room
© KLab Inc. 2022
回線速度・端末スペックによる有利不利
● 椅子取りゲームなマッチング
■ 報酬の良いステージなど
● 早い端末が埋めてしまう
■ 遅い端末は入れない
2回リクエストの弊害
Room
Room
Room
Room
© KLab Inc. 2022
回線速度・端末スペックによる有利不利
● 椅子取りゲームなマッチング
■ 報酬の良いステージなど
● 早い端末が埋めてしまう
■ 遅い端末は入れない
2回リクエストの弊害
Room
Room
Room
© KLab Inc. 2022
回線速度・端末スペックによる有利不利
● 椅子取りゲームなマッチング
■ 報酬の良いステージなど
● 早い端末が埋めてしまう
■ 遅い端末は入れない
2回リクエストの弊害
Room
© KLab Inc. 2022
● なぜ2回必要だったか
■ 複雑な検索条件を実現するため
● 複雑な検索と入室を1リクエストで完結したい
■ 公平なマッチメイキング
2回リクエストの弊害
© KLab Inc. 2022
● 1リクエストで検索から入室まで可能に
■ 接続を待たずに入室確定
■ 複雑な条件での検索に対応
○ 「KLabTechBook Vol.9」で少し紹介
○ https://www.klab.com/jp/blog/tech/2022/tbf12.html
○ 電子版無料頒布中
WSNet2の実装
© KLab Inc. 2022
モバイルオンラインゲームでの課題
● 一時的な切断への対応
■ 自動再接続とメッセージの再送
● 複雑な検索条件での入室
■ 複雑な条件の指定に対応
■ 1リクエストで検索から入室まで可能に
まとめ:なぜ自社開発したか
© KLab Inc. 2022
大規模観戦への対応
© KLab Inc. 2022
eスポーツへの取り組み
キャプテン翼〜たたかえドリームチーム〜
世界大会「Dream Championship」
● 2019年より毎年開催
● 2022年
■ 12/10(土)〜11(日)
■ 決勝トーナメント開催予定
©高橋陽一/集英社 ©高橋陽一/集英社・テレビ東京・エノキフィルム ©KLabGames
© KLab Inc. 2022
● eスポーツでは観戦も重要
● 数万〜数十万人規模の観戦を実現したい
よくある実現方法
● 動画配信サービスの利用
● 観戦クライアントも部屋に接続
大規模観戦
© KLab Inc. 2022
● メリット
■ 百万人を越える同時視聴が可能
■ 様々な環境で観戦できる
● デメリット
■ 遅延がある
■ 一方向の配信
動画配信サービスの利用
Room
© KLab Inc. 2022
● メリット
■ 双方向通信
■ 遅延なし
● デメリット
■ 接続数が限られる
○ 数百人が限度
■ アプリからしか接続できない
観戦クライアントも部屋に接続
Room
© KLab Inc. 2022
● 観戦クライアントも部屋に接続
● Hubサーバ経由の接続もサポート
■ 部屋への接続数を抑制
■ 双方向通信
WSNet2での大規模観戦
Hub
Hub
Room
© KLab Inc. 2022
部屋とクライアントで特別処理なし
● 部屋サーバとの接続
■ 観戦クライアントとして入室
● クライアントとの接続
■ 部屋サーバのように待ち受け
■ クライアントは部屋同様に観戦入室
Hubサーバの仕組み
Hub
観戦入室
観戦入室 観戦入室
Room
© KLab Inc. 2022
● 同時1万部屋20万観戦を達成
■ 部屋サーバ
○ c5.xlarge 5台 (vCPU 4論理コア@3GHz、メモリ 8GiB)
▫ 約2000部屋/台 (3クライアント/部屋)
▫ 約6000クライアント/台
■ Hubサーバ
○ c5.xlarge 35台
▫ 約5800クライアント/台
負荷試験結果
© KLab Inc. 2022
Hubサーバ経由の接続もサポート
● 双方向通信を維持
● 数十万人規模にも対応
● 部屋とクライアントはシンプルなまま
まとめ:大規模観戦への対応
© KLab Inc. 2022
チート対策の工夫
© KLab Inc. 2022
今日紹介する工夫
● ユーザ認証
● サーバサイドゲームロジック
チート対策の工夫
© KLab Inc. 2022
● 防ぎたいチート
■ 他ユーザへのなりすまし
■ botによる接続
● 実装の課題
■ WSNet2は独立したシステム
■ APIサーバと同じユーザ認証をしたい
ユーザ認証
© KLab Inc. 2022
APIサーバからユーザ情報を同期
1. ログインAPI呼び出し
■ ユーザ情報を伝える
2. 入室リクエスト
■ ユーザ情報を使って認証
よくある実装その1
API
Real
time
Login
User
© KLab Inc. 2022
APIサーバからユーザ情報を同期
1. ログインAPI呼び出し
■ ユーザ情報を伝える
2. 入室リクエスト
■ ユーザ情報を使って認証
よくある実装その1
API
入室
Real
time
User
© KLab Inc. 2022
APIサーバからユーザ情報を同期
● 問題点
■ ユーザ情報の保存が必要
よくある実装その1
API
入室
Real
time
User
© KLab Inc. 2022
アクセス時にAPIサーバに問い合わせ
1. 入室リクエスト
2. APIサーバに問い合わせ
■ APIサーバが認証
よくある実装その2
API
Real
time
入室
問い合わせ
© KLab Inc. 2022
アクセス時にAPIサーバに問い合わせ
● 問題点
■ 入室に時間がかかる
よくある実装その2
API
Real
time
入室
問い合わせ
© KLab Inc. 2022
APIサーバと通信しない方法
1. 事前に共通鍵を配置
2. 認証情報要求
■ 鍵でハッシュを付加
3. 認証情報を付けて入室
■ 鍵で認証情報を検証
WSNet2での実装
API
Real
time
© KLab Inc. 2022
APIサーバと通信しない方法
1. 事前に共通鍵を配置
2. 認証情報要求
■ 鍵でハッシュを付加
3. 認証情報を付けて入室
■ 鍵で認証情報を検証
WSNet2での実装
API
Real
time
Auth
Data
© KLab Inc. 2022
APIサーバと通信しない方法
1. 事前に共通鍵を配置
2. 認証情報要求
■ 鍵でハッシュを付加
3. 認証情報を付けて入室
■ 鍵で認証情報を検証
WSNet2での実装
API
Real
time
入室
Auth
Data
© KLab Inc. 2022
APIサーバと通信しない方法
● 認証情報が正しいかで判定
■ APIサーバで生成したもの
■ APIサーバで認証済み
WSNet2での実装
API
Real
time
入室
Auth
Data
© KLab Inc. 2022
● ユーザ情報の保存が不要
● 入室時にAPI通信も不要
● APIサーバで認証されたことを確認できる
WSNet2での認証
© KLab Inc. 2022
今日紹介する工夫
● ユーザ認証
● サーバサイドゲームロジック
チート対策の工夫
© KLab Inc. 2022
● クライアントのロジック改ざん
■ 他のプレイヤーにも影響
● サーバサイドは改ざんされない
アプリ改ざんによるチート
Logic
© KLab Inc. 2022
● クライアントのロジック改ざん
■ 他のプレイヤーにも影響
● サーバサイドは改ざんされない
アプリ改ざんによるチート
Logic
?
© KLab Inc. 2022
● 防ぎたいチート
■ アプリ改ざんによるゲームロジック改ざん
● 実装の課題
■ ロジックコードの二重管理を避けたい
○ オフラインプレイと同じ実装を使いたい
■ 独自サーバの実装は大変
サーバサイドゲームロジック
© KLab Inc. 2022
● ロジックプログラムが直接接続を受け付ける
課題
● 実装が大変
■ 接続管理を自前実装
○ WSNet2等が解決している部分
よくある実装:独自サーバ
Logic
© KLab Inc. 2022
● ロジックプログラムもクライアント
■ ゲームマスター役のクライアント
■ プレイヤーと同様に入室
処理の流れ
1. プレイヤーは入力をマスターに送信
2. 処理結果を全プレイヤーに送信
マスタークライアント方式
Master
Room
© KLab Inc. 2022
● ロジックプログラムもクライアント
■ ゲームマスター役のクライアント
■ プレイヤーと同様に入室
処理の流れ
1. プレイヤーは入力をマスターに送信
2. 処理結果を全プレイヤーに送信
マスタークライアント方式
Master
Room
© KLab Inc. 2022
● ロジックプログラムもクライアント
■ ゲームマスター役のクライアント
■ プレイヤーと同様に入室
処理の流れ
1. プレイヤーは入力をマスターに送信
2. 処理結果を全プレイヤーに送信
マスタークライアント方式
Master
Room
© KLab Inc. 2022
● リアルタイム通信システムを利用できる
■ 接続管理・通信まわりを任せられる
● クライアントアプリと同じコードを使いやすい
■ 通信の実装方法はクライアントアプリと同じ
■ 同じ言語、同じライブラリが使える
マスタークライアント方式の利点
© KLab Inc. 2022
● .NETアプリとして実装できる
○ Unityヘッドレスモードより省オーバーヘッド
○ C#なのでUnityと同一のコードを利用できる
● 通信遅延を減らせる
○ WSNet2と近い場所で実行できる
■ AWSの同一リージョンなど
WSNet2での利点
© KLab Inc. 2022
● ユーザ認証
■ APIサーバと通信しない方法
● サーバサイドゲームロジック
■ マスタークライアント方式
まとめ:チート対策の工夫
© KLab Inc. 2022
まとめ
© KLab Inc. 2022
● なぜ自社開発したか
■ 自動再接続による一時的な切断への対応
■ 複雑な検索条件でも1リクエストで入室
● 大規模観戦への対応
■ Hubサーバ経由の接続のサポート
● チート対策の工夫
■ APIサーバと通信しないユーザ認証
■ マスタークライアント方式のサーバサイドゲームロジック
まとめ
© KLab Inc. 2022
● 話せなかったこと
○ WSNet2サーバの内部実装、負荷対策
○ C#クライアントライブラリの工夫
○ 独自シリアライズフォーマット
○ 通信改ざん対策
○ ロギング
○ 部屋情報閲覧ツール
まとめ

Mais conteúdo relacionado

Mais procurados

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話torisoup
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Platform - Japan
 
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...Google Cloud Platform - Japan
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法モノビット エンジン
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 

Mais procurados (20)

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 

Semelhante a モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...Ryo Sasaki
 
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナーNGINX, Inc.
 
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界Shinobu Yasuda
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法NGINX, Inc.
 
VMware が考えるコンテナと Kubernetes の世界
VMware が考えるコンテナと Kubernetes の世界VMware が考えるコンテナと Kubernetes の世界
VMware が考えるコンテナと Kubernetes の世界Yuichi Tamagawa
 
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料NetApp Japan
 
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」Takahiro Shinagawa
 
20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説Yukihiro Kikuchi
 
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリット
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリットネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリット
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリットMidokura
 
NGINX & OpenShift Webinar for Energy Sector
NGINX & OpenShift Webinar for Energy Sector NGINX & OpenShift Webinar for Energy Sector
NGINX & OpenShift Webinar for Energy Sector NGINX, Inc.
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Kazumi IWANAGA
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)IIJ
 
Azure Service Fabric Cluster の作成
Azure  Service Fabric Cluster の作成Azure  Service Fabric Cluster の作成
Azure Service Fabric Cluster の作成Takekazu Omi
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介富士通クラウドテクノロジーズ株式会社
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介富士通クラウドテクノロジーズ株式会社
 
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルールBrocade
 
S&B Summit2015 SOFTLAYERクラウドデザインパターン
S&B Summit2015  SOFTLAYERクラウドデザインパターンS&B Summit2015  SOFTLAYERクラウドデザインパターン
S&B Summit2015 SOFTLAYERクラウドデザインパターンMaho Takara
 

Semelhante a モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜 (20)

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...
[Cloud Native Days Tokyo 2022] たまにはオンプレもいいぞ? GKE と Armadillo IoT で実現する ハイフ...
 
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
 
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
 
VMware が考えるコンテナと Kubernetes の世界
VMware が考えるコンテナと Kubernetes の世界VMware が考えるコンテナと Kubernetes の世界
VMware が考えるコンテナと Kubernetes の世界
 
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
[VMware Partner Exchange Tokyo 14Apr2014] ネットアップセッション資料
 
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
 
20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説
 
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリット
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリットネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリット
ネットワーク仮想化ソフトウェアMidoNet ユースケースとユーザメリット
 
NGINX & OpenShift Webinar for Energy Sector
NGINX & OpenShift Webinar for Energy Sector NGINX & OpenShift Webinar for Energy Sector
NGINX & OpenShift Webinar for Energy Sector
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)
IIJ GIOアカデミー / ハイブリッドクラウド(基礎編)
 
Azure Service Fabric Cluster の作成
Azure  Service Fabric Cluster の作成Azure  Service Fabric Cluster の作成
Azure Service Fabric Cluster の作成
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
 
私がなぜZscalerに?
私がなぜZscalerに?私がなぜZscalerに?
私がなぜZscalerに?
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
 
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
 
S&B Summit2015 SOFTLAYERクラウドデザインパターン
S&B Summit2015  SOFTLAYERクラウドデザインパターンS&B Summit2015  SOFTLAYERクラウドデザインパターン
S&B Summit2015 SOFTLAYERクラウドデザインパターン
 

Mais de KLab Inc. / Tech

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化KLab Inc. / Tech
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話KLab Inc. / Tech
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介KLab Inc. / Tech
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方KLab Inc. / Tech
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービスKLab Inc. / Tech
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話KLab Inc. / Tech
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLab Inc. / Tech
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営KLab Inc. / Tech
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発KLab Inc. / Tech
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテストKLab Inc. / Tech
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜KLab Inc. / Tech
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLab Inc. / Tech
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話KLab Inc. / Tech
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLab Inc. / Tech
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話KLab Inc. / Tech
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーションKLab Inc. / Tech
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介KLab Inc. / Tech
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeKLab Inc. / Tech
 
ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話KLab Inc. / Tech
 

Mais de KLab Inc. / Tech (20)

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 
ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Último (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜

  • 1. © KLab Inc. 2022 モバイルオンラインゲームでの大規模観 戦とチート対策
  • 2. © KLab Inc. 2022 自社製リアルタイム通信システム 「WSNet2」 OSSとして公開しました https://github.com/KLab/wsnet2 告知
  • 3. © KLab Inc. 2022 今日のお話 ● 自己紹介・会社紹介 ● WSNet2の紹介 ● なぜ自社開発したか ● 数万人規模の観戦への対応 ● チート対策の工夫
  • 4. © KLab Inc. 2022 自己紹介 牧内大輔 KLab株式会社 エンジニアリング本部サーバサイドG 対外発表 ● Go Conference ■ 「型パラメータが使えるようになったのでLINQを実装してみた」 他 OSS ● EMLauncher (https://github.com/KLab/emlauncher) ● gozxing (https://github.com/makiuchi-d/gozixing) 他
  • 5. © KLab Inc. 2022 ミッション:「世界と自分をワクワクさせろ」 ビジョン:「エンターテインメントで、世界中のユーザーをひとつにつなげる」 社会に感動と喜びを提供できるような、サービス・技術を創造しています。 設立 2000年8月1日 資本金 53億6364万円(2022年10月末現在) 株式公開市場 東京証券取引所・プライム市場(3656) 代表者 代表取締役社長CEO 森田 英克 代表取締役副会長 五十嵐洋介 所在地 本社(東京都港区、六本木ヒルズ森タワー) 大阪事業所、福岡事業所、仙台事業所 主要関連会社 株式会社BLOCKSMITH&Co. 株式会社グローバルギア 海外拠点 可来软件开发(上海)有限公司 (KLab China Inc.) グループ従業員数 正社員 553名(2022年9月末時点) 主力:ゲーム事業 アニメ、コミック、ゲームなど、世界中で 人気の高いIPを原作とした モバイルオンラインゲームを国内外に展開。 現在155の国と地域で配信 その他: スマートフォン関連のアプリケーション、 サービス及びサーバーインフラの企画、 開発、提供、新規事業開拓など 会社紹介:KLab株式会社(クラブ)
  • 6. © KLab Inc. 2022 WSNet2の紹介
  • 7. © KLab Inc. 2022 ● 常時接続、クライアント同士が双方向通信 ● 同じステージ(部屋)を同時に遊ぶ ■ オンライン対戦、協力プレイなど リアルタイム通信とは ステージ
  • 8. © KLab Inc. 2022 ※PhotonはExit Gamesの製品です ©久保帯人/集英社・テレビ東京・dentsu・ぴえろ ©高橋陽一/集英社 ©高橋陽一/集英社・テレビ東京・エノキフィルム ©KLabGames リアルタイム通信の利用 Photon (PUN)※ その他自社製 WSNet (WSNet2の前身)
  • 9. © KLab Inc. 2022 ● サーバを介してメッセージを同期 ● 特徴 ○ WebSocketベース ○ C#クライアントライブラリ ■ (Unity/.NET) ○ 自動再接続、メッセージ再送 ○ 柔軟な部屋検索 ○ 数十万人規模の観戦 WSNet2について
  • 10. © KLab Inc. 2022 ● 向いているゲーム ○ パズルゲーム、戦略ゲームなど ■ メッセージの順序や整合性を重視するもの ● 向いていないゲーム ○ アクションゲームなど ■ 処理順序よりもリアルタイム性を重視するもの WSNet2について
  • 11. © KLab Inc. 2022 なぜ自社開発したか
  • 12. © KLab Inc. 2022 なぜ自社開発したか ● 技術的な挑戦 ■ 自社でも技術をもっておきたい ● モバイルオンラインゲームでの課題 ■ 一時的な切断への対応 ■ 複雑な検索条件での入室
  • 13. © KLab Inc. 2022 ● モバイル端末では一時的な切断がよくある ○ WiFi・モバイル回線の切り替わり ○ トンネル・地下鉄などの一時的な圏外 課題:一時的な切断
  • 14. © KLab Inc. 2022 ● モバイル端末では一時的な切断がよくある ○ WiFi・モバイル回線の切り替わり ○ トンネル・地下鉄などの一時的な圏外 課題:一時的な切断 ネットワークから切断しました この試合は敗北になります 通信エラー OK
  • 15. © KLab Inc. 2022 接続で入室、切断したら退室 ● サーバの実装がシンプル ● 一時的な切断で退室してしまう ■ 再入室できたとしても退室中のメッセージが欠落 よくある実装 入室 退室 再入室 退室
  • 16. © KLab Inc. 2022 ● 入室状態と接続状態を別々に管理 ■ 切断しても退室にしない ■ 切断中のメッセージは再接続時に再送 ■ ゲームアプリは切断・再接続を感知しない WSNet2の実装 接続 切断 再接続 切断 入室 退室 再送 退室リクエスト 入室成功
  • 17. © KLab Inc. 2022 ● 柔軟なマッチメイキング ■ ゲーム仕様に合わせた条件指定 ○ 例:パラメータが近い(範囲指定) ○ 例:募集開始1分以内はフレンドのみ、以降は誰でも ● 観戦のための検索 ■ すでにマッチング済みの部屋の検索 課題:複雑な検索条件での入室
  • 18. © KLab Inc. 2022 部屋一覧を取得してクライアント側で選択 ● クライアントの負荷が高い ● 通信量が多い ● 2回リクエストが必要 よくある実装その1 Real time Room 入室
  • 19. © KLab Inc. 2022 部屋の状態をAPIサーバに同期 APIサーバで部屋を決定 ● 構成が複雑 ● 同期のタイムラグ ● 2回リクエストが必要 よくある実装その2 API Room 入室 Real time Room
  • 20. © KLab Inc. 2022 回線速度・端末スペックによる有利不利 ● 椅子取りゲームなマッチング ■ 報酬の良いステージなど ● 早い端末が埋めてしまう ■ 遅い端末は入れない 2回リクエストの弊害 Room Room Room Room
  • 21. © KLab Inc. 2022 回線速度・端末スペックによる有利不利 ● 椅子取りゲームなマッチング ■ 報酬の良いステージなど ● 早い端末が埋めてしまう ■ 遅い端末は入れない 2回リクエストの弊害 Room Room Room Room
  • 22. © KLab Inc. 2022 回線速度・端末スペックによる有利不利 ● 椅子取りゲームなマッチング ■ 報酬の良いステージなど ● 早い端末が埋めてしまう ■ 遅い端末は入れない 2回リクエストの弊害 Room Room Room
  • 23. © KLab Inc. 2022 回線速度・端末スペックによる有利不利 ● 椅子取りゲームなマッチング ■ 報酬の良いステージなど ● 早い端末が埋めてしまう ■ 遅い端末は入れない 2回リクエストの弊害 Room
  • 24. © KLab Inc. 2022 ● なぜ2回必要だったか ■ 複雑な検索条件を実現するため ● 複雑な検索と入室を1リクエストで完結したい ■ 公平なマッチメイキング 2回リクエストの弊害
  • 25. © KLab Inc. 2022 ● 1リクエストで検索から入室まで可能に ■ 接続を待たずに入室確定 ■ 複雑な条件での検索に対応 ○ 「KLabTechBook Vol.9」で少し紹介 ○ https://www.klab.com/jp/blog/tech/2022/tbf12.html ○ 電子版無料頒布中 WSNet2の実装
  • 26. © KLab Inc. 2022 モバイルオンラインゲームでの課題 ● 一時的な切断への対応 ■ 自動再接続とメッセージの再送 ● 複雑な検索条件での入室 ■ 複雑な条件の指定に対応 ■ 1リクエストで検索から入室まで可能に まとめ:なぜ自社開発したか
  • 27. © KLab Inc. 2022 大規模観戦への対応
  • 28. © KLab Inc. 2022 eスポーツへの取り組み キャプテン翼〜たたかえドリームチーム〜 世界大会「Dream Championship」 ● 2019年より毎年開催 ● 2022年 ■ 12/10(土)〜11(日) ■ 決勝トーナメント開催予定 ©高橋陽一/集英社 ©高橋陽一/集英社・テレビ東京・エノキフィルム ©KLabGames
  • 29. © KLab Inc. 2022 ● eスポーツでは観戦も重要 ● 数万〜数十万人規模の観戦を実現したい よくある実現方法 ● 動画配信サービスの利用 ● 観戦クライアントも部屋に接続 大規模観戦
  • 30. © KLab Inc. 2022 ● メリット ■ 百万人を越える同時視聴が可能 ■ 様々な環境で観戦できる ● デメリット ■ 遅延がある ■ 一方向の配信 動画配信サービスの利用 Room
  • 31. © KLab Inc. 2022 ● メリット ■ 双方向通信 ■ 遅延なし ● デメリット ■ 接続数が限られる ○ 数百人が限度 ■ アプリからしか接続できない 観戦クライアントも部屋に接続 Room
  • 32. © KLab Inc. 2022 ● 観戦クライアントも部屋に接続 ● Hubサーバ経由の接続もサポート ■ 部屋への接続数を抑制 ■ 双方向通信 WSNet2での大規模観戦 Hub Hub Room
  • 33. © KLab Inc. 2022 部屋とクライアントで特別処理なし ● 部屋サーバとの接続 ■ 観戦クライアントとして入室 ● クライアントとの接続 ■ 部屋サーバのように待ち受け ■ クライアントは部屋同様に観戦入室 Hubサーバの仕組み Hub 観戦入室 観戦入室 観戦入室 Room
  • 34. © KLab Inc. 2022 ● 同時1万部屋20万観戦を達成 ■ 部屋サーバ ○ c5.xlarge 5台 (vCPU 4論理コア@3GHz、メモリ 8GiB) ▫ 約2000部屋/台 (3クライアント/部屋) ▫ 約6000クライアント/台 ■ Hubサーバ ○ c5.xlarge 35台 ▫ 約5800クライアント/台 負荷試験結果
  • 35. © KLab Inc. 2022 Hubサーバ経由の接続もサポート ● 双方向通信を維持 ● 数十万人規模にも対応 ● 部屋とクライアントはシンプルなまま まとめ:大規模観戦への対応
  • 36. © KLab Inc. 2022 チート対策の工夫
  • 37. © KLab Inc. 2022 今日紹介する工夫 ● ユーザ認証 ● サーバサイドゲームロジック チート対策の工夫
  • 38. © KLab Inc. 2022 ● 防ぎたいチート ■ 他ユーザへのなりすまし ■ botによる接続 ● 実装の課題 ■ WSNet2は独立したシステム ■ APIサーバと同じユーザ認証をしたい ユーザ認証
  • 39. © KLab Inc. 2022 APIサーバからユーザ情報を同期 1. ログインAPI呼び出し ■ ユーザ情報を伝える 2. 入室リクエスト ■ ユーザ情報を使って認証 よくある実装その1 API Real time Login User
  • 40. © KLab Inc. 2022 APIサーバからユーザ情報を同期 1. ログインAPI呼び出し ■ ユーザ情報を伝える 2. 入室リクエスト ■ ユーザ情報を使って認証 よくある実装その1 API 入室 Real time User
  • 41. © KLab Inc. 2022 APIサーバからユーザ情報を同期 ● 問題点 ■ ユーザ情報の保存が必要 よくある実装その1 API 入室 Real time User
  • 42. © KLab Inc. 2022 アクセス時にAPIサーバに問い合わせ 1. 入室リクエスト 2. APIサーバに問い合わせ ■ APIサーバが認証 よくある実装その2 API Real time 入室 問い合わせ
  • 43. © KLab Inc. 2022 アクセス時にAPIサーバに問い合わせ ● 問題点 ■ 入室に時間がかかる よくある実装その2 API Real time 入室 問い合わせ
  • 44. © KLab Inc. 2022 APIサーバと通信しない方法 1. 事前に共通鍵を配置 2. 認証情報要求 ■ 鍵でハッシュを付加 3. 認証情報を付けて入室 ■ 鍵で認証情報を検証 WSNet2での実装 API Real time
  • 45. © KLab Inc. 2022 APIサーバと通信しない方法 1. 事前に共通鍵を配置 2. 認証情報要求 ■ 鍵でハッシュを付加 3. 認証情報を付けて入室 ■ 鍵で認証情報を検証 WSNet2での実装 API Real time Auth Data
  • 46. © KLab Inc. 2022 APIサーバと通信しない方法 1. 事前に共通鍵を配置 2. 認証情報要求 ■ 鍵でハッシュを付加 3. 認証情報を付けて入室 ■ 鍵で認証情報を検証 WSNet2での実装 API Real time 入室 Auth Data
  • 47. © KLab Inc. 2022 APIサーバと通信しない方法 ● 認証情報が正しいかで判定 ■ APIサーバで生成したもの ■ APIサーバで認証済み WSNet2での実装 API Real time 入室 Auth Data
  • 48. © KLab Inc. 2022 ● ユーザ情報の保存が不要 ● 入室時にAPI通信も不要 ● APIサーバで認証されたことを確認できる WSNet2での認証
  • 49. © KLab Inc. 2022 今日紹介する工夫 ● ユーザ認証 ● サーバサイドゲームロジック チート対策の工夫
  • 50. © KLab Inc. 2022 ● クライアントのロジック改ざん ■ 他のプレイヤーにも影響 ● サーバサイドは改ざんされない アプリ改ざんによるチート Logic
  • 51. © KLab Inc. 2022 ● クライアントのロジック改ざん ■ 他のプレイヤーにも影響 ● サーバサイドは改ざんされない アプリ改ざんによるチート Logic ?
  • 52. © KLab Inc. 2022 ● 防ぎたいチート ■ アプリ改ざんによるゲームロジック改ざん ● 実装の課題 ■ ロジックコードの二重管理を避けたい ○ オフラインプレイと同じ実装を使いたい ■ 独自サーバの実装は大変 サーバサイドゲームロジック
  • 53. © KLab Inc. 2022 ● ロジックプログラムが直接接続を受け付ける 課題 ● 実装が大変 ■ 接続管理を自前実装 ○ WSNet2等が解決している部分 よくある実装:独自サーバ Logic
  • 54. © KLab Inc. 2022 ● ロジックプログラムもクライアント ■ ゲームマスター役のクライアント ■ プレイヤーと同様に入室 処理の流れ 1. プレイヤーは入力をマスターに送信 2. 処理結果を全プレイヤーに送信 マスタークライアント方式 Master Room
  • 55. © KLab Inc. 2022 ● ロジックプログラムもクライアント ■ ゲームマスター役のクライアント ■ プレイヤーと同様に入室 処理の流れ 1. プレイヤーは入力をマスターに送信 2. 処理結果を全プレイヤーに送信 マスタークライアント方式 Master Room
  • 56. © KLab Inc. 2022 ● ロジックプログラムもクライアント ■ ゲームマスター役のクライアント ■ プレイヤーと同様に入室 処理の流れ 1. プレイヤーは入力をマスターに送信 2. 処理結果を全プレイヤーに送信 マスタークライアント方式 Master Room
  • 57. © KLab Inc. 2022 ● リアルタイム通信システムを利用できる ■ 接続管理・通信まわりを任せられる ● クライアントアプリと同じコードを使いやすい ■ 通信の実装方法はクライアントアプリと同じ ■ 同じ言語、同じライブラリが使える マスタークライアント方式の利点
  • 58. © KLab Inc. 2022 ● .NETアプリとして実装できる ○ Unityヘッドレスモードより省オーバーヘッド ○ C#なのでUnityと同一のコードを利用できる ● 通信遅延を減らせる ○ WSNet2と近い場所で実行できる ■ AWSの同一リージョンなど WSNet2での利点
  • 59. © KLab Inc. 2022 ● ユーザ認証 ■ APIサーバと通信しない方法 ● サーバサイドゲームロジック ■ マスタークライアント方式 まとめ:チート対策の工夫
  • 60. © KLab Inc. 2022 まとめ
  • 61. © KLab Inc. 2022 ● なぜ自社開発したか ■ 自動再接続による一時的な切断への対応 ■ 複雑な検索条件でも1リクエストで入室 ● 大規模観戦への対応 ■ Hubサーバ経由の接続のサポート ● チート対策の工夫 ■ APIサーバと通信しないユーザ認証 ■ マスタークライアント方式のサーバサイドゲームロジック まとめ
  • 62. © KLab Inc. 2022 ● 話せなかったこと ○ WSNet2サーバの内部実装、負荷対策 ○ C#クライアントライブラリの工夫 ○ 独自シリアライズフォーマット ○ 通信改ざん対策 ○ ロギング ○ 部屋情報閲覧ツール まとめ