Slide 1

Slide 1 text

GCPでサーバレスな構成でマルチプレ イヤーしてみた
 田中 晶
 データ本部データアナリティクス部AI推進グループ
 データ本部データ基盤部データエンジニアリング第二グループ
 ゲーム事業本部開発事業部開発二部エンターテインメントサイエンスグループ
 株式会社ディー・エヌ・エー
 @ DeNA Co.,Ltd.

Slide 2

Slide 2 text

2 自己紹介
 田中 晶
 GCP、AWS、サーバ、ML、たまにFE 
 データエンジニア。GCP認定資格切れた 
 SNS秘密系エンジニア
 最近、会社アイコンをAIでアフロにしました 
 → 金髪アフロにしました
 データ本部データアナリティクス部AI推進グループ 
 データ本部データ基盤部データエンジニアリング第二グループ 
 ゲーム事業本部開発事業部開発二部エンターテインメントサイエンス グループ
 秘密
 秘密


Slide 3

Slide 3 text

3 自己紹介
 https://speakerdeck.com/akitanaairtanker/kemuai simiyuretawohuo-yong-sita-gcphurumanesitonak emukoarositukufalsezi-dong-tesutoturu https://lp.cloudplatformonline.com/rs/808-GJW- 314/images/ML_Summit_D2-Session08.pdf https://speakerdeck.com/dena_tech/techcon202 1-9

Slide 4

Slide 4 text

4 目次
 デモ
 技術構成
 技術トピック
 今後について
 1 2 3 4

Slide 5

Slide 5 text

5 1. デモ


Slide 6

Slide 6 text

6 デモ 🎉
 
 https://drive.google.com/file/d/1VYrguEl8qS-Gp7XQXtlIVUCyDh8J7e2p/view?usp=sh aring
 1

Slide 7

Slide 7 text

7 2. 技術構成


Slide 8

Slide 8 text

8 構成図 💡
 1

Slide 9

Slide 9 text

9 それぞれの役割 📝
 2 ● フロントエンド(クライアント)
 ○ CloudRunじゃなくても良かったが技術スタックを揃えるため 
 ● WebSocketサーバ(ゲームサーバ) 
 ○ 実際に行動したときに同期させたい状態を管理するサーバ 
 ○ プレイヤーの x, y, z 座標や向き、アクションなど 
 ● 永続化サーバ(Redis)
 ○ CloudRunはサーバレス
 ○ ステートレスな仕組みなので、状態をRedisで永続化する 
 ● CI/CD
 ○ Github Actions から Workload Identity 連携で IAM 認証 
 ○ GitHub Actions からのキーなしの認証の有効化 | Google Cloud Blog 


Slide 10

Slide 10 text

10 3. 技術トピック


Slide 11

Slide 11 text

11 WebSocketサーバ(ゲームサーバ)について👷
 ● WebSocketサーバ(ゲームサーバ)について 
 ○ Colyseusについて
 ■ Node.js 製 WebSocket ベースでコミュニケーションするマルチプレイ用フレーム ワーク
 ■ 公式ドキュメントにも載ってる 
 ● Real-time Multiplayer with Colyseus | Babylon.js Documentation 
 ■ Protocol Buffer のような仕組みの schema で状態を定義できる 
 ● GitHub - colyseus/schema: An incremental binary state serializer with delta encoding for games. 
 1

Slide 12

Slide 12 text

12 WebSocketサーバ(ゲームサーバ)について👷
 ● WebSocketサーバ(ゲームサーバ)について 
 ○ CloudRunについて
 ■ Cloud Run: コンテナを秒単位で本番環境にデプロイ | Google Cloud 
 ■ コンテナをサーバレスにホストできる 
 ■ 2021年に WebSocket、HTTP/2、gRPC に対応した 
 ■ Google が勝手にプロビジョニングしてくれる! 
 ■ 基本的にはステートレス 
 ■ 最近スケールアウト(並列起動)した場合の接続先サーバをなるべく同一してく れるセッション アフィニティ がプレビューに
 1

Slide 13

Slide 13 text

13 永続化サーバ(Redis) 💾
 ● 永続化サーバ(Redis)
 ○ Redisについて
 ■ オンメモリデータベース 
 ■ NoSQLの一つ
 ○ Redisのマネージドサービスについて 
 ■ 今回は RedisLab を利用 
 ■ GCP の Memorystore for Redis は、ちょっと too match だった 
 ■ 本番で動かすなら Amazon MemoryDB for Redis とかが良い 
 ● スケールさせる場合、クラスタリングできたほうが良い 
 ○ 結果整合性で、マスターがSPOF(単一障害点)になる 
 ■ コストだけで見るなら、最近話題になった Upstash なども選択肢に 
 ● 無料で使えるデータベースUpstashをご存知、ないのですか!?
 2

Slide 14

Slide 14 text

14 4. 今後について


Slide 15

Slide 15 text

15 まとめと今後 🚀
 ● まとめ
 ○ サーバレスなので比較的安く、サーバ運用から開放 
 ● パフォーマンス測定したい
 ○ Redis の限界までスケールアウトするので、結構同時接続できるはず 
 ○ プレイヤーなどアセット描画のほうがボトルネックになりそう? 
 ● コミュニティ貢献して、盛り上げていきたい 
 ○ なにか公開できるものは公開していきたい 
 ● AI エージェントや、それが動くワールドをつくりたい 
 ○ ブラウザで AI とインタラクティブなやり取りできたら素敵 
 ● ゲームロジックと VR 的なワールドの統合をしたい 
 ○ みんなでわいわい遊びたい
 1

Slide 16

Slide 16 text

16 ゲーム × AI (ちょっと宣伝) 🏁
 ➔ 今年の GDC にチームメンバーが登壇しました! 🎉
 ◆ Schedule | GDC 2022 | Application of AI Technology and Organizational Design to Improve Game Quality and Productivity 
 ➔ CEDEC 2022 も関連チーム含め、登壇するのでよろしくお願いします! 
 ◆ ゲームの品質と生産性を向上させるためにー 組織デザインが加速させるAI活用 
 ◆ アセット生成AIで作成したキャラクターをリリースした事例 ~これが『逆転オセロニア』の エイプリルフール!~ 
 ◆ 現代ゲームでの最強対戦 AI の作り方!『逆転オセロニア』AI がトップレベルの強さに 到達した理由
 ◆ 広告識別子に依存しないエンタメ広告運用~SNSの"キーワード"に着目した最適化〜 
 2

Slide 17

Slide 17 text

Twitterアカウント @DeNAxTech では、 DeNA のエンジニアリングに関する 登壇資料やブログを紹介しています! ぜひ Twitter をフォローしてみてください!

Slide 18

Slide 18 text

@ DeNA Co.,Ltd.