1 of 18

GCPでサーバレスな構成でマルチプレイヤーしてみた

田中 晶

データ本部データアナリティクス部AI推進グループ

データ本部データ基盤部データエンジニアリング第二グループ

ゲーム事業本部開発事業部開発二部エンターテインメントサイエンスグループ

株式会社ディー・エヌ・エー

@ DeNA Co.,Ltd.

2 of 18

田中 晶

GCP、AWS、サーバ、ML、たまにFE

データエンジニア。GCP認定資格切れた

SNS秘密系エンジニア

最近、会社アイコンをAIでアフロにしました

→ 金髪アフロにしました

2

自己紹介

データ本部データアナリティクス部AI推進グループ

データ本部データ基盤部データエンジニアリング第二グループ

ゲーム事業本部開発事業部開発二部エンターテインメントサイエンスグループ

秘密

秘密

3 of 18

3

自己紹介

4 of 18

目次

デモ

技術構成

技術トピック

今後について

4

1

2

3

4

5 of 18

1. デモ

5

6 of 18

デモ 🎉

6

1

7 of 18

2. 技術構成

7

8 of 18

構成図 💡

8

1

9 of 18

それぞれの役割 📝

  • フロントエンド(クライアント)
    • CloudRunじゃなくても良かったが技術スタックを揃えるため
  • WebSocketサーバ(ゲームサーバ)
    • 実際に行動したときに同期させたい状態を管理するサーバ
    • プレイヤーの x, y, z 座標や向き、アクションなど
  • 永続化サーバ(Redis)
    • CloudRunはサーバレス
    • ステートレスな仕組みなので、状態をRedisで永続化する
  • CI/CD

9

2

10 of 18

3. 技術トピック

10

11 of 18

WebSocketサーバ(ゲームサーバ)について👷

  • WebSocketサーバ(ゲームサーバ)について
    • Colyseusについて

11

1

12 of 18

WebSocketサーバ(ゲームサーバ)について👷

  • WebSocketサーバ(ゲームサーバ)について
    • CloudRunについて

12

1

13 of 18

永続化サーバ(Redis) 💾

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

13

2

14 of 18

4. 今後について

14

15 of 18

まとめと今後 🚀

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

15

1

16 of 18

ゲーム × AI (ちょっと宣伝) 🏁

16

2

17 of 18

Twitterアカウント @DeNAxTech では、�DeNA のエンジニアリングに関する�登壇資料やブログを紹介しています!

ぜひ Twitter をフォローしてみてください!

18 of 18

@ DeNA Co.,Ltd.