アプリボット、マスターデータがクライアント側で起こすデータ不整合を防止する方法をブログ記事で解説。『FINAL FANTASY VII EVER CRISIS』でも採用した手法

アプリボット、マスターデータがクライアント側で起こすデータ不整合を防止する方法をブログ記事で解説。『FINAL FANTASY VII EVER CRISIS』でも採用した手法

2024.01.24
ニュースゲームづくりの知識Unity
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

この記事の3行まとめ

  • アプリボットが『Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方』と題したブログ記事を公開
  • 『FINAL FANTASY VII EVER CRISIS』でも採用した手法をコード例付きで解説
  • 読み取り専用インメモリデータベース「MasterMemory」のデータを「Work」クラス、「Store」クラスで管理・更新している

アプリボットは2024年1月19日、技術ブログにてUnity/C#ゲーム開発における、クライアントでのマスタデータの扱い方と題する記事を公開しました。同社開発のゲームタイトルにおいて、クライアント側のマスターデータの扱いをどのようにしているかを解説しています。

この手法は、同社では『FINAL FANTASY VII EVER CRISIS』で初めて採用しました。

ゲーム内におけるマスターデータは、ユーザーによって値の変わらない共通パラメーターとなるケースが多いです。一般的なマスターデータの例として、クエストの内容や、モンスターの名称などの情報が挙げられます。

マスターデータに意図しない書き換えが行われると、エラーや不具合が発生してしまいます。これを防ぐため、クライアント側で管理しているマスターデータが書き換えられない構造を作る必要があります。

アプリボットでは、マスターデータの取得にCysharpの読み取り専用インメモリデータベース「MasterMemory」を利用しています。これを用いて、サーバーにあるマスタデータを、アプリ起動時にサーバー側と同じテーブル構造で取得し、クライアント側でキャッシュしています。

ただし「MasterMemory」はデータベースであるため、データや関連テーブルを検索するたびにデータベースアクセス処理が発生します。これでは検索コストが大きくなってしまいます

そこで「MasterMemory」から取得したデータを関連するデータごとにまとめた「Work」と、マスターデータとユーザーデータを扱いやすいデータ形式に変換したデータを扱う「Store」という2つのクラスを用いました。

画像はアプリボット技術ブログより引用

この手法は、データの流れがわかりやすく、クライアント側のデータ不整合による不具合も起きないというメリットがあります。ただし、Storeでデータを保持することにより、メモリの使用量や負荷が増加することがあります。

同記事では、この他、Work・Storeそれぞれのクラスについてコード例とともに解説しています。

詳細は、こちらをご確認ください。

アプリボット技術ブログ『Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方』

関連記事

「Unity6.3」正式リリース。マルチプラットフォームのゲームの管理を容易にする「Platform Toolkit」導入やUI Toolkitのアップデートなど
2025.12.05
UIと3Dシーンを異なる解像度で描画できる。Unity用オープンソースライブラリ、サイバーエージェント「コアテク」がリリース
2025.12.02
Unity製ゲームにDiscord機能を組み込む方法を学べる。「Discord Social SDK」の無料学習コンテンツ、「Unity Learn」で公開
2025.12.01
クロスプレイにも対応した最大32人での対戦ゲーム『Sonic Rumble』の開発事例がUnity公式ブログで公開。モバイル環境でも安定したパフォーマンスを実現する手法を紹介
2025.11.27
Unityのエンジン開発最高責任者Adam Smith氏に訊く、2026年を見据えた「Unity 6.3」開発構想とは【メールインタビュー】
2025.11.27
「Unity 6.3」正式版、2025年12月にリリース予定。さらなるレンダリング機能強化などが施されたLTS版
2025.11.19

注目記事ランキング

2025.11.30 - 2025.12.07
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

プロパティ(Property)
プロパティ 英語で「資産」や「属性」を意味する。 一般的に対象の持つ属性・性質などを表す。例えば、画像ファイルにおける、容量やファイル形式、解像度などの情報。 3DCGツールやゲームエンジンにおいては、各オブジェクトのふるまいを決める個別の設定項目を示すことが多い。
VIEW MORE

Xで最新情報をチェック!