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

関連記事

PLATEAU、3D都市モデルを使った位置情報共有ゲームをつくるチュートリアル記事を公開。ゲームの制作から、サーバーの準備、アプリの配信まで詳細に解説
2024.03.01
UnityのURPを解説した無料の公式電子書籍がアップデート。デカールや「Fullscreen Shader Graph」などのセクションを追加
2024.02.23
「Steam Audio」がオープンソース化。UnityやUEに統合できる、ゲームやVRアプリ用の空間オーディオツール
2024.02.22
Shader Graphに対応したUnity UIについて、ユニティ・テクノロジーズ・ジャパンが紹介動画を公開
2024.02.21
国土交通省が主導する「PLATEAU」、Unity向けSDKを使ったサンプルプロジェクト『Urban Scape』を公開。時間や天気の変更も可能な3D都市ビューワーアプリを作成可能
2024.02.15
ユニティ・テクノロジーズ・ジャパン、GitHubで『Project_TCC v.1.0.0』を公開。キャラクターを制御するシステムやゲーム開発をサポートする機能が詰まったツール
2024.02.14

注目記事ランキング

2024.02.27 - 2024.03.05
1
『フォートナイト』で動く本格的なゲームが作れるツール「UEFN」とは?従来のクリエイティブモードから進化したポイントを一挙紹介!
2
【CHALLENGE1】「クリエイター ポータル」を使って、UEFNで作成した島を世界中に公開する
3
【2022年5月版】今から始めるフォートナイトの「クリエイティブ」モードープレイ開始から基本的な操作方法まで解説
4
UEFNで使えるプログラミング言語「Verse」のノウハウが集結。『UEFN.Tokyo 勉強会 03 Verse Night』レポート
5
フォートナイト クリエイティブとUEFNで使える仕掛け一覧
6
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.1「アイテム系」
7
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.5「島の設定」
8
フォートナイトとUEFNがv28.30にアップデート。「NPCスポナー」が、スポーン・撃破時のエフェクトや移動速度のカスタマイズに対応
9
【STEP2】UEFNの基本的な使い方を覚えよう
10
【CHALLENGE2-1】フレンドと一緒にゲームを作ろう――UEFNプロジェクトをチームメンバーとリアルタイムで共同編集する
11
【STEP1】「UEFN」を入手しよう
12
まるで『マイクラ』?ボクセル地形を生み出す無料アセット「VoxelPlugin Free」で”地形を掘ったり積み重ねたり”して遊んでみよう
13
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.4「ゲームシステム系」
14
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part1
15
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.2「ユーティリティ系」
16
フルカラー書籍「UEFN(Unreal Editor For Fortnite)でゲームづくりを始めよう!」、ついに本日発売!全国書店で好評発売中!
17
NIKEのAir Maxをテーマにしたフォートナイトの島『Airphoria』、制作に関するチュートリアルが公開
18
【CHALLENGE3】UEFNの機能「ランドスケープ」を使ってオリジナルの地形を作る
19
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part1
20
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part2
21
『フォートナイト』で建築ビジュアライゼーション!?UEFNでオリジナルの世界観をどう作り上げたか、その手法を解説【UNREAL FEST 2023 TOKYO】
22
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.3「プレイヤー系」
23
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.6「チーム・対戦系」Part1
24
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part2
25
フォートナイトとUEFNがv26.30にアップデート。ロビー画面が一新され、クリエイターが島ごとにロビー背景を自由にカスタムできるように
26
【STEP6-1】「オリジナルキャラクターを登場させよう」――Fabでアセットをダウンロードしよう
27
「UEFN」って実際どうなの? 編集部が3時間で「みんなで遊べるアクションゲーム(?)」を作ってみた
28
【STEP5-1】スタート時のカウントダウンを作る
29
【STEP4-1】コース外に出たらデスする仕組みを作る
30
【STEP4-2】リスポーンとチェックポイントの仕組みを作る
VIEW MORE

イベントカレンダー

VIEW MORE

今日の用語

レンダリング(Rendering)
レンダリング コンピューターグラフィックスにおける、各種データ(3Dモデルなど)をプログラムを用いて計算し、画像として表示すること。レンダリングを行うプログラムをレンダラー(Renderer)と呼ぶ。
VIEW MORE

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