狠狠撸
Submit Search
モバイルオンラインゲームでの大規模観戦とチート対策 ?自社製リアルタイム通信システム「WSNet2」の事例?
?
0 likes
?
440 views
K
KLab Inc. / Tech
Follow
CEDEC+KYUSHU2022の登壇資料です。 http://cedec-kyushu.jp/2022/session/12.html
Read less
Read more
1 of 62
Download now
Download to read offline
More Related Content
モバイルオンラインゲームでの大規模観戦とチート対策 ?自社製リアルタイム通信システム「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#クライアントライブラリの工夫 ○ 独自シリアライズフォーマット ○ 通信改ざん対策 ○ ロギング ○ 部屋情報閲覧ツール まとめ
Download