GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

パフォーマンスチューニング用のツール提供を開始しました

はじめに 通信時間を最適化する一番のポイントは通信処理の並列化です。 依存関係のないデータ取得ではなるべく並列化することで、通信の待ち時間を最適化できます。ただ、今の実装が最適化できているかどうかを正確に判断するのは困難が伴います。 追加され…

GS2-Script でトランザクションを発行できるようになりました

はじめに GS2-Script は GS2 の機能を拡張するもので、任意のタイミングでクライアントから呼び出せるようなものではなく レベルアップした時や、アカウント引き継ぎを登録したときなどあらかじめ用意されたトリガーと関連づけることで、イベント駆動で実行…

GS2-Inventory のシンプルインベントリに入手・消費時のスクリプトを設定できるようになりました

はじめに GS2-Inventory はプレイヤーの所持品を管理するマイクロサービスです。 なかでも、シンプルインベントリはアイテム所持数の上限やインベントリの容量といった機能は持たない代わりに複数のアイテムをまとめて増減できる特徴があります。機能の詳細…

限界突破(凸)機能が追加されました

はじめに 限界突破とは、同一キャラクターを合成したり、特定の進化素材を使用することでキャラクターを強化する仕組みを指します。 限界突破を行うと、キャラクターのレベル上限が引き上げられ、より強力に育成することが可能となります。 機能追加の背景 G…

GS2-StateMachine に投機的実行機能が追加されました

はじめに GS2-StateMachine はステートマシンをサーバーで管理することで、ゲーム開発者が定義した独自のゲームロジックを、チート耐性が高い状態で実行する仕組みです。GS2-StateMachine の詳細は以下の記事で解説しています。gs2.hatenablog.com 機能追加…

トランザクションをより細かい粒度で待てるようになりました

はじめに GS2 におけるトランザクションとは、GS2-Showcase の商品購入APIの戻り値 や GS2-Exchange の交換実行API の戻り値です。 このような複数のマイクロサービスの値を書き換える動作は非同期処理で実行されます。この処理単位を 「トランザクション」 …

SimpleInventory / BigInventory に任意の所持数量を設定できるようになりました

はじめに SimpleInventory はアイテムの所持数量を管理する仕組みで、通常の Inventory が持つスタックサイズの制限や、Inventory の容量制限の管理の仕組みがない代わりに、複数のアイテムを同時に増減することが可能なインベントリです。BigInventory はア…

サーバーから取得した時刻を基準とした現在時刻取得機能が追加されました

はじめに イベントの開始時刻や終了時刻など運営型ゲームでは時間の取り扱いは重要です。 機能追加の背景 一方で、ゲームが動作するデバイスの時刻設定は必ずしも正確とは言えず、正しくUIを表現するのは難しいです。 サーバーから取得した時刻を使用して、…

Nifty Cloud mobile backend をご利用の皆さんへ

本日、Nifty Cloud mobile backend(NCMB) のサービス終了がアナウンスされました。 多くのインディーデベロッパーさんを支えてきたサービスで、移行先を検討される方も多くいらっしゃると思います。GS2 がその移行先として選んでいただくにあたって、必要と…

マイクロサービス間の連携の設定が簡素化されました

はじめに GS2 は多数のマイクロサービスを提供しており、多くのケースはトランザクション処理として、《消費アクション》と《入手アクション》として抽象化されています。一方で、トランザクションを実行するために必要な GS2-Distributor や GS2-JobQueue …

トランザクション処理の投機的実行機能が Unreal Engine 5 をサポートしました

gs2.hatenablog.com先日、通信待ちをすることなく通信後の結果を想定して GS2-SDK がもつローカルキャッシュを投機的に更新することで SDKから取得できる値を先行して更新後の値を取得できるようにする仕組みのリリースを発表しました。前回リリースの段階で…

トランザクション処理の投機的実行機能が追加されました

はじめに GS2におけるトランザクション処理というのはユーザーデータの増減処理を指します。 たとえば、「課金通貨を消費してスタミナを回復する」というような操作です。 機能追加の背景 GS2はレスポンスタイムの最適化を日々行なっており、数百msのオーダ…

GS2-StateMachine で利用する GSL にスクリプトを直値で指定できるようになりました

はじめに GS2-StateMachine はステートマシンをサーバーサイドで管理し、クライアントから届くメッセージを元に状態遷移することで チート行為に対する耐性をたかめつつ、自由度の高いスクリプティングを実現する機能を提供しています。 機能追加の背景 GS2-…

エクスポートしたユーザーデータをインポートできるようになりました

機能追加の背景 gs2.hatenablog.com先日各国の法令遵守のために、ユーザーデータをエクスポートして提供できるようにしたり、ユーザーデータを完全に削除する機能の提供開始をアナウンスしました。 今回の更新はこのエクスポートしたユーザーデータを異なる…

国外の個人情報保護のための法令に対応するための機能が追加されました

機能追加の背景 この10年の間に 欧州では GDPR、米国では CCPA などの個人情報を取り扱う上で課題となる法令が次々と制定されています。 その中には対応するのに相当な工数を必要とする内容もあり、サービス提供者を悩ませています。 追加された機能の詳細 G…

強化処理の UI Kit サンプルが追加されました

github.comサンプルを実行すると、自動的に3つの武器の入手処理が行われ一覧表示が行われます。武器を選択すると、強化素材の選択メニューが表示されます。スライダーを動かすと、予測経験値獲得量が連動します。Execute をクリックすると、強化が実行されま…

値チェック系のトランザクションアクションが追加されました

はじめに GS2におけるトランザクションは、ゲーム内のリソースの増減の組み合わせを定義したものです。 消費「アイテムを減らす」入手「経験値が増える」のようにプレイヤーにとってデメリットがある消費アクションと、プレイヤーにとってメリットがある入手…

UI Kit for Unity がイベント駆動に対応しました

はじめに UI Kit for Unity は Unity 用の高レベルなSDKで、Unity Editor 上で GS2 のリソースを宣言的に利用することが可能なSDKです。 たとえば、スタミナを表示したい場合は スタミナコンテキストコンポーネント をゲームオブジェクトに割り当て、操作対…

Game Engine 用 SDK でイベント駆動実装ができるようになりました

はじめに GS2 SDK for Game Engine は Unity と Unreal Engine 用の SDK です。 これらの SDK を使用することで、GS2を利用したプログラミングをするのが容易になります。 機能追加の背景 これまでの GS2 SDK for Game Engine では、ポーリングスタイルで値…

GS2-Account のアカウントBANに理由と期間を設定できるようになりました

はじめに GS2-Account は匿名アカウント機能を実現するためのマイクロサービスです。 アカウント情報の保持や認証機能に加えて、各種プラットフォーマーのアカウントを使用した引き継ぎ機能を実現できます。 機能追加の背景 GS2-Account は元々アカウントBAN…

バージョンチェックにGS2-Scheduleとの連携機能が追加されました

はじめに GS2-Version はアプリやアセット、利用規約のバージョン管理や、メンテナンスモードの切り替えなどを行えるマイクロサービスです。 機能追加の背景 バージョン更新や、メンテナンスは予定を持って実行されることが一般的です。 しかし、これまで GS…

広告視聴報酬機能が追加されました

はじめに モバイルゲームのマネタイズ手法としてプレイヤーに広告を視聴してもらい、広告プラットフォームから報酬を得ることも一般的になりました。 広告が正しく視聴された時に広告プラットフォームからサーバー間連携で通知をもらい、GS2に報酬を付与する…

スキルツリー管理機能が追加されました

はじめに キャラクターや装備、スキルの育成要素としてスキルツリーが用いられることが一般的です。 これまで GS2 にはスキルツリーを実現するために適切なマイクロサービスがない状態がつづていました。 今回、はスキルツリーを実現するための専用のマイク…

GS2-Inbox のメッセージ取得時に既読状態でフィルタする機能を追加しました

はじめに GS2-Inbox はプレゼントボックスやメッセージボックスの機能を提供するマイクロサービスです。 機能追加の背景 GS2-Inbox の受信済みメッセージの一覧取得は、既読・未読問わず新しいものから順番に取得することしかできませんでした。 しかし、UX…

新しいトランザクションアクションが多数追加されました

はじめに GS2 のトランザクション処理は「消費アクション」と「入手アクション」を組み合わせたものを定義し アイテムの購入や、クエストの開始、クエストの終了など様々なタイミングで実行することでマイクロサービス間の連携を実現します。 今回のアップデ…

GS2-Inventory の入手処理の高速化を行いました

アイテムの入手処理のロック処理を見直すことで、処理の高速化を実施しました。高速化前は平均 220-230ms 程度だったところが 150ms を前後まで改善できました。 引き続き様々なAPIでレスポンスタイムを改善し、皆様のゲームで快適なプレイ体験を提供できる…

AWS Lambda の go 1.x サポートが終了するらしいので、カスタムランタイムに移行した話

早速ですが、不穏なメールが届きました。 Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するのに合わせて、AWS Lambda での Go 1.x ランタイムのサポートを終了します [1]。 Lambda は、provided.al2 ランタイムを使用して Go プロ…

GS2-Inventory に 64bit 符号付き整数型 以上の数量管理ができる巨大インベントリ機能が追加されました

はじめに GS2-Inventory はプレイヤーの持ち物を管理するサービスです。 機能追加の背景 インフレゲームでは徐々にアイテムの消費数量が増えていきます。 このあたりの機能を実現するために、先月 GS2-Exchange にコスト上昇型交換レート機能が追加されまし…

C# SDK でサーバーサイド非同期処理の完了を待てるようになりました

はじめに GS2 ではサーバー処理に非同期処理を採用しているケースがあります。 トランザクション処理が代表的な例で、GS2-Showcase の商品購入APIを呼び出して応答を受け取った段階では購入処理は完了していることが保証されていません。 機能追加の背景 ト…

UI Kit に条件に基づくスプライト入れ替えコンポーネントが追加されました

はじめに UI Kit はノーコードで GS2 から取得したデータを元に UI を構築するための高レベルなSDKです。 機能追加の背景 UI Kit には Enabler コンポーネントが存在し、条件に基づいて GameObject を有効化したり無効化することができます。 この仕組みを利…

(C) Game Server Services, Inc.