アプリボット、マスターデータがクライアント側で起こすデータ不整合を防止する方法をブログ記事で解説。『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#ゲーム開発における、クライアントでのマスタデータの扱い方』

関連記事

UE・Unity・GodotをサポートするIDE「Rider」が「WebStorm」とともに非商用に限り無料で使用可能に
2024.10.25
UE/Unity/DCCツールなどで使えるコンテンツが並ぶ。Epic Games、統合コンテンツマーケットプレイス「Fab」をリリース
2024.10.23
「Unity 6」で製作された2種類のサンプルプロジェクト『Time Ghost』『Fantasy Kingdom』が提供開始。Unity Asset Storeにて無料ダウンロード可能
2024.10.18
「Unity 6」LTS版が世界同時リリース。本日より「Unity Personal」の利用条件変更が適用
2024.10.17
テクニカルアーティスト向けのUnity解説、よりクリーンなコードを書く方法、HDRPの活用方法など。Unity公式サイト、日本版電子書籍を無料公開中
2024.10.16
Unityの「Humanoid」を活用しつつ、揺れ骨など独自ジョイントを制御するには。QualiArtsによる「CEDEC2024」講演の補足記事が公開
2024.10.08

注目記事ランキング

2024.10.24 - 2024.10.31
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

ロード(Load)
ロード
  1. コンピューターの補助記憶装置(HDDなど)に保存されたデータを読み込んで、主記憶装置(メインメモリ)上に展開すること。
  2. ゲームにおいて、セーブデータを読み込んで中断時の状況を再現すること。
VIEW MORE

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