Game Engine 用 SDK でイベント駆動実装ができるようになりました
はじめに
GS2 SDK for Game Engine は Unity と Unreal Engine 用の SDK です。
これらの SDK を使用することで、GS2を利用したプログラミングをするのが容易になります。
機能追加の背景
これまでの GS2 SDK for Game Engine では、ポーリングスタイルで値を取得するのが主な実装でした。
GS2 の API の多くは遅延実行される設計のため、UIに最新の値を反映するにはポーリングするのが主な手段で
ポーリングをしても無駄なサーバーアクセスが発生しないようにキャッシュレイヤーが設けられていました。
追加された機能の詳細
キャッシュに更新が発生した際にコールバックされるイベントハンドラが新設されました。
キャッシュは遅延実行処理が完了した際に自動的に更新されるため、イベントをハンドリングするだけで常に最新のデータを利用可能になります。
実装例
GS2-Inventory のアイテムの所持数量が変化した時にコールバックを受け取る
var domain = gs2.Inventory.Namespace(
namespaceName: "Inventory"
).Me(
gameSession: GameSession
).Inventory(
inventoryName: "Bag"
).ItemSet(
itemName: "Potion"
);
// イベントハンドラを登録
var callbackId = domain.Subscribe(items => {
// Potion の所持数量に変化があった時にコールバック
});
// イベントハンドラを解除
domain.Unsubscribe(callbackId);
GS2-Inventory のアイテムの一覧が変化した時にコールバックを受け取る
var domain = gs2.Inventory.Namespace(
namespaceName: "Inventory"
).Me(
gameSession: GameSession
).SimpleInventory(
inventoryName: "Bag"
);
// イベントハンドラを登録
var callbackId = domain.SubscribeSimpleItems(() =>
{
// Bag 内のアイテム一覧に変化があった時にコールバック
});
// イベントハンドラを解除
domain.UnsubscribeSimpleItems(callbackId);