Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

Avatar for airtanker

airtanker

July 10, 2022

More Decks by airtanker

Other Decks in Programming

Transcript

  1. 2 自己紹介
 田中 晶
 GCP、AWS、サーバ、ML、たまにFE 
 データエンジニア。GCP認定資格切れた 
 SNS秘密系エンジニア
 最近、会社アイコンをAIでアフロにしました

    
 → 金髪アフロにしました
 データ本部データアナリティクス部AI推進グループ 
 データ本部データ基盤部データエンジニアリング第二グループ 
 ゲーム事業本部開発事業部開発二部エンターテインメントサイエンス グループ
 秘密
 秘密

  2. 9 それぞれの役割 📝
 2 • フロントエンド(クライアント)
 ◦ CloudRunじゃなくても良かったが技術スタックを揃えるため 
 •

    WebSocketサーバ(ゲームサーバ) 
 ◦ 実際に行動したときに同期させたい状態を管理するサーバ 
 ◦ プレイヤーの x, y, z 座標や向き、アクションなど 
 • 永続化サーバ(Redis)
 ◦ CloudRunはサーバレス
 ◦ ステートレスな仕組みなので、状態をRedisで永続化する 
 • CI/CD
 ◦ Github Actions から Workload Identity 連携で IAM 認証 
 ◦ GitHub Actions からのキーなしの認証の有効化 | Google Cloud Blog 

  3. 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
  4. 12 WebSocketサーバ(ゲームサーバ)について👷
 • WebSocketサーバ(ゲームサーバ)について 
 ◦ CloudRunについて
 ▪ Cloud Run:

    コンテナを秒単位で本番環境にデプロイ | Google Cloud 
 ▪ コンテナをサーバレスにホストできる 
 ▪ 2021年に WebSocket、HTTP/2、gRPC に対応した 
 ▪ Google が勝手にプロビジョニングしてくれる! 
 ▪ 基本的にはステートレス 
 ▪ 最近スケールアウト(並列起動)した場合の接続先サーバをなるべく同一してく れるセッション アフィニティ がプレビューに
 1
  5. 13 永続化サーバ(Redis) 💾
 • 永続化サーバ(Redis)
 ◦ Redisについて
 ▪ オンメモリデータベース 


    ▪ NoSQLの一つ
 ◦ Redisのマネージドサービスについて 
 ▪ 今回は RedisLab を利用 
 ▪ GCP の Memorystore for Redis は、ちょっと too match だった 
 ▪ 本番で動かすなら Amazon MemoryDB for Redis とかが良い 
 • スケールさせる場合、クラスタリングできたほうが良い 
 ◦ 結果整合性で、マスターがSPOF(単一障害点)になる 
 ▪ コストだけで見るなら、最近話題になった Upstash なども選択肢に 
 • 無料で使えるデータベースUpstashをご存知、ないのですか!?
 2
  6. 15 まとめと今後 🚀
 • まとめ
 ◦ サーバレスなので比較的安く、サーバ運用から開放 
 • パフォーマンス測定したい


    ◦ Redis の限界までスケールアウトするので、結構同時接続できるはず 
 ◦ プレイヤーなどアセット描画のほうがボトルネックになりそう? 
 • コミュニティ貢献して、盛り上げていきたい 
 ◦ なにか公開できるものは公開していきたい 
 • AI エージェントや、それが動くワールドをつくりたい 
 ◦ ブラウザで AI とインタラクティブなやり取りできたら素敵 
 • ゲームロジックと VR 的なワールドの統合をしたい 
 ◦ みんなでわいわい遊びたい
 1
  7. 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