ゲーム開発の現場では「マスタ」という用語がしばしば登場します。
「マスタ」とはゲームの基盤となるデータ、あるいはデータを格納しているテーブルの事を指します。
※この記事では「マスタ」と表記していますが、「マスター」「マスタデータ」等と呼称されることもあります
「マスタ」はゲーム内で静的な情報として事前に開発者によって設定されるデータです。
例をあげると、キャラクター、アイテム、敵、ゲームのルールやパラメータ等の、ゲームプレイに必要不可欠なデータです。
ちなみに「マスタ」という用語自体はゲーム業界以外の開発現場でも使用されますが少し意味合いが異なります。
ものすごくざっくり違いを説明すると、以下のような感じです。
ゲーム業界のマスタ:ユーザーの操作によるデータ変更が発生しない
他業界のマスタ:ユーザーの操作によるデータ変更が発生しうる
この記事ではそんなちょっと特殊なゲーム業界のマスタについて解説していこうと思います。
マスタ(マスタデータ)とユーザーデータの基本概念
ゲーム開発におけるデータ管理では、マスタ(マスタデータ)とユーザーデータという2つの主要なカテゴリーが存在します。
これらのデータはゲームの設計と運用において非常に重要な要素です。
マスタの定義と役割
マスタは、ゲーム開発者が事前に定義し、ゲーム内で不変とされるデータです。
例えば、キャラクターの基本ステータス、武器や魔法の種類、ゲーム内の各種設定値等が該当します。
これらのデータを調整することでゲームバランスを変更することができます。
基本的にはこのマスタの調整はプランナー(ゲームの仕様決め等をする職種)が担当することが多いです。
マスタのデータの調整の出来不出来でゲームが面白くもつまらなくもなるので、プランナーの腕の見せ所と言えるでしょう。
ユーザーデータの定義と役割
ユーザーデータは、プレイヤーの行動や選択等の操作に基づいて動的に変化するデータです。
例えば、ゲームの進行度、獲得アイテム、スコア等が該当します。
「トランザクションデータ」と呼ばれることもあります。
プレイヤーが続きからゲームを再開できるようにするためのセーブデータ的な使い方をしたり、全プレイヤーの統計データを集計するのにも使ったりします。
マスタはゲームのプログラム内で変更されることはありませんが、ユーザーデータはガンガン変更されます。
したがって、バグや想定外の操作によっておかしなデータが入る可能性もあるため、設計はより慎重に行う必要があります。
これについてはまた別の記事で取り上げようと思います。
マスタの設計と管理
マスタの設計や管理をきちんと行うことは、ゲームの安定性と拡張性に直接影響を与えます。
特にゲーム開発の初期段階でのマスタ設計は後々の工程に大きく影響するので慎重に行いましょう。
また、設計だけ良くても管理がずさんであればマスタが不具合の原因になりかねません。
以下に挙げているポイントをしっかり押さえて、よいマスタ運用をしてください。
マスタ設計のポイント
正規化
テーブル設計と言えばまずは正規化です。
データの一貫性と整合性が保たれることにより、マスタ設定時のミスが減ります。
正規化の詳細についてはインターネットや書籍に山ほど情報があるのでそちらを参照してみてください。
拡張性
ゲームの規模拡大や仕様追加に対応できるよう、拡張性も意識しましょう。
既存のマスタにカラムが追加されるケース等はよくあるパターンです。
柔軟性を持たせておくに越したことはありません。
ちなみに今後の仕様追加等に関してはプランナーと相談することも有効です。
将来的にどういう仕様追加を考えているか聞くことができればマスタ設計方針の参考になるでしょう。
※もちろん未来の話なので100%ではないことには注意が必要です
アクセスの最適化
ゲームのパフォーマンスを確保するため、頻繁にアクセスされるデータは速やかに取得できるようにします。
先ほど「正規化」を意識するよう記載しましたが、場合によって正規化をくずしてでもパフォーマンスを重視したいケースがあります。
どちらを重視するかはゲームによりけりですので、プランナーやエンジニアリーダー等にきちんと相談して決めるのが無難でしょう。
設定のしやすさ
マスタを設定するのは基本的にはプランナーです。
プランナーが設定しにくいマスタは、マスタ設定ミスによるバグの温床にもなり得ます。
これも先ほどの「アクセスの最適化」の場合同様、「正規化」等の他のポイントを多少犠牲にしても優先させる必要があります。
少なくともマスタの設定を担当するプランナーが理解できるくらいにはわかりやすいマスタ設計を心掛けましょう。
マスタ管理のポイント
バックアップとリカバリー
マスタに限らずデータを管理する場合は必ず考慮しなければいけないのがバックアップとリカバリーです。
方法自体は使用している技術やゲームの要件に大きく依存するため割愛しますが、バックアップとリカバリーの手順のドキュメントはしっかり残すようにしましょう。
デプロイ(本番反映)
デプロイについてもきちんと考慮しなくてはいけません。
以下のようなケースがありがちなパターンです。
- 既存マスタの変更をデプロイしたが、デプロイ前後でプレイヤーのデータに不整合が起こってしまう
- コラボ情報やイベント情報等のまだ本番に反映したくないマスタを誤ってデプロイしてしまった
- 複数のマスタの変更が必要だったが、一部のマスタ変更が漏れてしまった
これらの問題を起こさないために、チェックシートの作成やデプロイ前後のマスタの差分チェックツールみたいなのを用意しておくと良いでしょう。
整合性チェック
マスタの設計にいくら気を使ってもどうしても複雑になってしまうマスタはあります。
そういうマスタはバグの温床になりがちなので何かしらの方法で整合性をチェックする仕組みが必要です。
おすすめは整合性チェックツールのようなものを作ることですが、多少工数はかかってしまうので現場の状況に合わせてどういう手段を取るかを決めていきましょう。
まとめ
今回はゲーム開発におけるマスタの説明と運用する際のポイントについて書いてみました。
この記事ではマスタは何かしらのデータベースを利用する想定のものを紹介しましたが、必ずしもデータベースを使わなくてはいけない訳ではありません。
ミニゲーム的なシンプルなゲーム、いわゆるカジュアルゲームと呼ばれる類の小規模なゲームであればプログラムに直に記述しても全く問題ありません。
(それどころか通信が発生しない分、よりパフォーマンスに優れているという利点もあります)
また、マスタはプランナーが設定することが多いため、常に自分以外の人でも使いやすいかという視点を持つことが大事です。
慣れないうちは難しいかもしれません。
そんな時は既存のマスタを参考にしたり、他のベテランエンジニアに相談してみましょう。
コメント