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

『呪術廻戦 ファントムパレード』をストレスなく楽しむためのマスタデータ基盤【CAGC2024】

CyberAgent
March 08, 2024
580

『呪術廻戦 ファントムパレード』をストレスなく楽しむためのマスタデータ基盤【CAGC2024】

本セッションでは、スマートフォンゲーム『呪術廻戦 ファントムパレード』のマスタデータ管理について、その入力・反映・配信のプロセスを紹介します。
マスタデータの入力に関しては、開発者がストレスなくスムーズに作業できるようにするための工夫を紹介します。
マスタデータの反映・配信の基盤に関しては、ゲームを遊んでいただけている皆様がよりストレスなく楽しんでいただくためのマスタデータ基盤の設計や工夫を紹介します。

https://cagc.cyberagent.co.jp/2024/session/index.html?id=R8aXCLKc

©芥見下々/集英社・呪術廻戦製作委員会 ©Sumzap, Inc./TOHO CO., LTD.
Copyright © CyberAgent, Inc.

CyberAgent

March 08, 2024
Tweet

More Decks by CyberAgent

Transcript

  1. 自己紹介 2 - 名前 - 岩上 裕樹(Iwakami Yuki) - 経歴

    - 2014年新卒でサイバーエージェントに入社 - ゲーム事業にてさまざまなスマホゲームの新規開発・運用・改善等を担当 - 『呪術廻戦 ファントムパレード』 - バックエンドのテックリードとして開発に従事 - 基盤周りを担当することが多い
  2. マスタデータとは 7 - ゲーム内の静的な情報や設定値、バランス等を格納するデータ - キャラクタや敵の能力値などのゲームプレイに必要な情報が含まれる - 新キャラクターやイベントなどの追加はマスタデータを更新することで実現 ID 名前

    HP 体術 術式 1 虎杖 悠仁 100 50 10 2 伏黒 恵 90 40 30 ID イベント名 開始日時 終了日時 1 大討祓戦 2023-11-30 15:00:00 2023-12-09 14:59:59 2 望郷の境界線 2023-11-24 15:00:00 2023-12-10 14:59:59 character_masters event_masters ※このマスタデータはサンプルであり実際のマスタデータとは異なります
  3. これから話すこと 9 ID イベント名 開始日時 終了日時 1 大討祓戦 2023-11-30 15:00:00

    2023-12-09 14:59:59 event_masters ※このマスタデータはサンプルであり実際のマスタデータとは異なります  配信  反映  入力 『ファンパレ』においてのマスタデータの入力から環境への 反映・配信までの工夫を紹介
  4. これから話すこと 10 ID イベント名 開始日時 終了日時 1 大討祓戦 2023-11-30 15:00:00

    2023-12-09 14:59:59 2 望郷の境界線 2023-11-24 15:00:00 2023-12-10 14:59:59 event_masters ※このマスタデータはサンプルであり実際のマスタデータとは異なります  配信  反映  入力 『ファンパレ』においてのマスタデータの入力から環境への 反映・配信までの工夫を紹介
  5. マスタデータの入力の仕組みの設計思想 12 - マスタデータのバージョン管理にはGit管理をすることで解決 - GitHub上で差分確認、Pull Requestでレビュー - マスタの入力者はプランナーさんやレベルデザインを担当している方、 QAさんがほとんど

    - 入力のほとんどが非エンジニアの方なので入力フローで Gitコマンドを使いたくない - やったとしてもGitHubのウェブページ上のボタン操作だけにしたい 簡単な操作でマスタの入力・実機での動作確認・マージまでできる状態にしたい
  6. マスタデータの入力の大まかな流れ 〜 開発環境の作成と削除 17 - 作業単位ごとに開発環境を作れるようにしている [環境の作成] - feature/dev-xxxxxという命名規則でブランチを作成すると dev-xxxxxという名前の環境が作成される

    - xxxxxは[A-Za-z0-9-]+ [環境の削除] - ブランチを削除すると対象の開発環境も削除される ブランチの作成・削除はGitHubのウェブページ上でできるのでGitコマンドが不要! 非エンジニアでもできる!
  7. マスタデータの入力の大まかな流れ 〜 開発環境への反映 19 Slackからデプロイコマンドを実行して反映処理をしている [指定内容] - どのマスタを反映させるか - どのバージョンまでのデータを反映させるか

    - どの環境に反映させるか [処理内容] 1. スプレッドシートからマスタデータをダウンロード 2. 対象の環境に反映 3. 同時にマスタバリデーションチェック処理の実行 4. 作業ブランチにコミット(feature/dev-xxxxx)
  8. マスタデータの入力の大まかな流れ 〜 開発環境への反映 20 1.スプレッドシートからマスタデータをダウンロード - スプレッドシートに入力されているマスタデータをCSVとしてダウンロード - GAS(Google Apps

    Scripts)を使わない - スプレッドシートはデータ入力に特化 - 独立したプログラムからデータを抽出する - スプレッドシートとGASとの依存性を排除した Google Sheets APIを用いてデータを取得 CSVとして出力 CodeBuild
  9. マスタデータの入力の大まかな流れ 〜 開発環境への反映 1.スプレッドシートからマスタデータをダウンロード ダウンロードするマスタの指定方法 - 作業ごとに管理しているダウンロードリストというものがある - ダウンロードリストで☑を入れているマスタ群をダウンロードする -

    Slackから指定するときにダウンロードリストを指定する event_masters event_item_masters ︙ イベントマスタシート ☑カード □ガチャ ☑イベントマスタ   ︙ ダウンロードリスト ※このマスタデータはサンプルであり実際のマスタデータとは異なります 21
  10. マスタデータの反映・配信の設計思想 30 - サムザップの過去プロジェクトの課題 - APIサーバからマスタデータをクライアントに返していた - APIサーバの負荷にもなる - 静的なデータなので、S3に配置してCloudFront(CDN)を介して返し

    たい - 同じマスタデータを何度もダウンロードしている - 変更がない限りは再ダウンロードさせたくない - ユーザ様の端末のデータ通信量をなるべく少なくしてあげたい - 複数のマスタデータを並列ダウンロードしてより早くホーム画面にたどり着かせ たい - ダウンロード画面の待ち時間を減らしたい
  11. マスタデータの設計の工夫 〜 テキストマスタ - event_mastersとevent_text_mastersに分離 - サーバサイドのロジックではevent_mastersのみ参照すれば良い ID イベント名 1

    大討祓戦 2 望郷の境界線 event_text_masters ※このマスタデータはサンプルであり実際のマスタデータとは異なります ID 開始日時 終了日時 1 2023-11-30 15:00:00 2023-12-09 14:59:59 2 2023-11-24 15:00:00 2023-12-10 14:59:59 event_masters ID イベント名 開始日時 終了日時 1 大討祓戦 2023-11-30 15:00:00 2023-12-09 14:59:59 2 望郷の境界線 2023-11-24 15:00:00 2023-12-10 14:59:59 event_masters 33
  12. マスタデータの環境への反映 38 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ①コマンド実行 ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加
  13. ①コマンド実行 マスタデータの環境への反映 39 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加
  14. マスタデータの環境への反映 40 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ①コマンド実行 ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加
  15. マスタデータの環境への反映 41 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ①コマンド実行 ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加
  16. マスタデータの環境への反映 42 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ①コマンド実行 ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加
  17. マスタデータの環境への反映 43 CodeBuild S3 Aurora Slack GitHub ※説明のために実際の処理とは異なるところがあります ①コマンド実行 ②マスタデータのDL

    ③マスタデータのアップ ロード ④バージョンIDの取得 ③マスタデータの追加 ⑤必要な情報の追加