2019/12/23

Master Dataの改善と運用

WRITER: m.mine

こんにちは。開発G所属のエンジニアです。

ゲーム開発と運用でMaster Dataは必ず必要なデータであり、一番更新頻度が高いデータであります。

Master Dataの更新、リリースの仕組みによって、大きくプロジェクトの運用コストが変わります。

 


10ANTZのコンテンツの初期Master Data管理


  • spreadsheet上管理
  • gasでspreadsheetからcsvをexport
  • サーバーcsvをDBに保存
  • クライアントcsv->(構造体)bytes->assetbundle
  • クライアント読み込みassetbundle->構造体cast

 


今まで運用して経験


利点


  • 同時更新が楽
  • 履歴見やすい
  • ツール不要

欠点


  • gasのcall制限よりエラー
  • spreadsheetのコピーが重い
  • assetbundleによるビルド時間が長い

 


今回運用コストの改善のために以下のチャレンジを行いました。


  • spread sheet から excel
  • excelをgoogle driveで管理
  • excelからcsvにexportしasset bundle化しない
  • 今のところスマホでもjson parserが結構高速でしたので、csvをjsonに変換->一つのファイルにまとめ->暗号化->gzipに変換

spread sheetからExcelに変えた理由


master dataの運用方法はいくつあります。

  1. 更新内容をプランナー側で管理し、反映すべき内容とブランチを管理する必要がある。(プランナー管理)


     
  2. コミット履歴を管理し、マージする方法(プランナー管理

     
  3. 本番反映のmaster dataの場所は一つ、各ブランチの場所で作業を行い、リリース時に本番ブランチにマージ、本番ブランチをリリース

spreadsheetのgasのcall制限とファイルコピーの時間がもったいないことで今回はMasterDataを高速に環境に反映確認するためExcelに変換し下記ようなツールを用意しました。

スピーディー反映ためのツール開発


10ANTZはUnityで開発行っていますので、Unity Editor拡張でツールを作成します。
今回はスピーディーに反映するため、Excelで管理するようにしました。

  1. 実装運用してみると、複数人が同時同じファイルを編集するケースは少ない
  2. excelをgoogle driveで管理することで、リアルタイムで編集状況が見える。
  • Editor全体機能
  • CSV Excel場所設定

    Drag & Dropで環境設定を行います。

  • CSVに変換

    更新したいファイルまたはフォルダーを複数選択しDrag & Dropでターゲットファイルを登録変換する
    変換ツールは内部で8スレッドの実装で全Excel 1300個ファイル変換が50秒

  • MasterDataAccessor作成

    CSVもとに対象DTOファイルとMasterDataAccessorを自動作成してくれます。
    UnityのImportが大量に走るのを防ぐため、変更がないファイルは更新しないようにします。

     

  • CSV To Json

    全体のCSVをname + length + contentで合併し、暗号化、gzipに圧縮(2.5M->400kb)合併処理:1秒未満

  • Run All

    上記の処理を一括実行

  • カラム変更

    実際の運用上複数ファイルで同じカラムの変更を行うことがありまして、一つずつ手作業は大変ですので、ツールを作ってみました。
    一括追加 & 一括削除

 


反映


Jenkins:

  1. 上記の内容をRun Allで自動ビルド
  2. export されたcsvをサーバーに反映
  3. export されたgzipファイルをクライアントS3に反映
  4. 管理画面のmasterdataバージョン更新

ローカル環境:

  1. Excel入力
  2. Run All
  3. Unity で確認

入力が少ない場合、5秒以内に反映できました。

これからの展望


  1. Unity Editor拡張 Excelの差分チェック
  2. Unity Editor拡張 Excelのマージツール

 


まとめ


今回はMasterDataのスピーディー反映を実装してみました。

MasterDataは運用で一番更新頻度が高く、確認頻度が高いです。

MasterData反映の流れの高速化は、プロジェクトの効率化に大きく影響しています。

今回はプランナーさんの管理コストを減らしつつ、チームとしての生産性もあがったと思います。

m.mine

m.mine

開発グループ
シニアマネージャー