しがないエンジニアのブログ

技術的な内容をメモ代わりにつらつら

[Unite2019] Game Server Services ではじめる サーバー開発運用しないゲーム開発

動画・スライド:https://learning.unity3d.jp/3241/

丹羽 一智 Game Server Services 株式会社


学んだ知見

  • Game Server Services(GS2)が目指すもの → 汎用ゲームサーバー
  • 初期費用・運用費用なし
    • 料金は0.02円/API
  • 秒間10万アクセスにも耐えられる
    • SINoALICEのピーク時アクセスの2倍以上
  • 改ざん・チート対策も完備
  • github, excelを用いたマスタ管理
  • 環境をyaml形式で管理、サーバのオートスケールも可能
    • AWZ, GCPの機能を利用

DeNA, KLab, ワンダープラネットでの採用実績あり

サンプル
https://github.com/gs2io/gs2-sample

公式HP
https://gs2.io


講演概要

なぜGS2か?

開発者を追うべき責任
○ おもしろさ
× 動くことの担保

クライアントにはUnity, UE4がある
サーバーには汎用エンジンが存在しないのでは?

GS2が提供するAPI

  • アカウント管理(作成、引継ぎ)
  • 経験値・レベル
  • プレゼントボックス
  • 所持品
  • 回数制限
  • 抽選処理
  • マッチメイキング
  • 課金通貨
  • エス
  • リアルタイム対戦
  • ミッション
  • イベントスケジュール
  • ゲーム内ストア
  • スタミナ
  • 編成(パーティ、装備)
  • チャット機能
  • フレンド
  • バージョン管理

用例1:イベント期間1回だけ買える商品
イベントスケジュール → 販売期間を設定
回数制限       → 購入回数を設定

用例2:ログインボーナス
エスト        → ログインボーナスを「1日1回進行できるクエスト」として定義
回数制限        → クエストの進行回数
イベントスケジュール  → 公開中のログインボーナス
所持品         → ログインボーナスを獲得して追加

サーバスクリプトに記述 → クエストの終端に達したら進行状況をリセット

チート対策

「報酬」と「対価」をセットにしたスタンプシートで管理
報酬と対価の両方が支払われた場合スタンプシートを永久に破棄
以下のようなチートを確実に防げる

  • 対価を支払っていないのに報酬を支払う
  • 対価・報酬を改ざんして請求

所感

  • よさそう
  • 会社で複数ゲームを取り扱うときに、基盤機能の共通プラットフォームとして利用できるのでは
  • ゲーム特有でサーバ処理が必要な場合はどうなるのか?
    • 独自のフックをスクリプトで書いて対応可能
      • リザルトの理論値計算、不正チェック
      • パーティ編成の不正チェックなど(コストオーバー検知)