この記事の3行まとめ
アプリボットは2024年1月19日、技術ブログにて『Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方』と題する記事を公開しました。同社開発のゲームタイトルにおいて、クライアント側のマスターデータの扱いをどのようにしているかを解説しています。
この手法は、同社では『FINAL FANTASY VII EVER CRISIS』で初めて採用しました。
【技術ブログ更新】
技術ブログ「てっくぼっと!」で、「Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方」の記事を公開!
弊社開発タイトルのユーザー/マスタデータの取り扱い方の仕組みや工夫について紹介しております。
ぜひご一読ください!https://t.co/LdnxORajuA
— アプリボット公式 (@Applibot_PR) January 19, 2024
【技術ブログ更新】
技術ブログ「てっくぼっと!」で、「Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方」の記事を公開!
弊社開発タイトルのユーザー/マスタデータの取り扱い方の仕組みや工夫について紹介しております。
ぜひご一読ください!https://t.co/LdnxORajuA
— アプリボット公式 (@Applibot_PR) January 19, 2024
ゲーム内におけるマスターデータは、ユーザーによって値の変わらない共通パラメーターとなるケースが多いです。一般的なマスターデータの例として、クエストの内容や、モンスターの名称などの情報が挙げられます。
マスターデータに意図しない書き換えが行われると、エラーや不具合が発生してしまいます。これを防ぐため、クライアント側で管理しているマスターデータが書き換えられない構造を作る必要があります。
アプリボットでは、マスターデータの取得にCysharpの読み取り専用インメモリデータベース「MasterMemory」を利用しています。これを用いて、サーバーにあるマスタデータを、アプリ起動時にサーバー側と同じテーブル構造で取得し、クライアント側でキャッシュしています。
ただし「MasterMemory」はデータベースであるため、データや関連テーブルを検索するたびにデータベースアクセス処理が発生します。これでは検索コストが大きくなってしまいます。
そこで「MasterMemory」から取得したデータを関連するデータごとにまとめた「Work」と、マスターデータとユーザーデータを扱いやすいデータ形式に変換したデータを扱う「Store」という2つのクラスを用いました。
この手法は、データの流れがわかりやすく、クライアント側のデータ不整合による不具合も起きないというメリットがあります。ただし、Storeでデータを保持することにより、メモリの使用量や負荷が増加することがあります。
同記事では、この他、Work・Storeそれぞれのクラスについてコード例とともに解説しています。
詳細は、こちらをご確認ください。
アプリボット技術ブログ『Unity/C#ゲーム開発における、クライアントでのマスタデータの扱い方』