[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回進行できるクエスト」として定義
回数制限 → クエストの進行回数
イベントスケジュール → 公開中のログインボーナス
所持品 → ログインボーナスを獲得して追加
サーバスクリプトに記述 → クエストの終端に達したら進行状況をリセット
チート対策
「報酬」と「対価」をセットにしたスタンプシートで管理
報酬と対価の両方が支払われた場合スタンプシートを永久に破棄
以下のようなチートを確実に防げる
- 対価を支払っていないのに報酬を支払う
- 対価・報酬を改ざんして請求
所感
- よさそう
- これからデファクトスタンダードになっていくかも?
- 会社で複数ゲームを取り扱うときに、基盤機能の共通プラットフォームとして利用できるのでは
- 車輪の再開発がいらなくなる
- ゲーム特有でサーバ処理が必要な場合はどうなるのか?
- 独自のフックをスクリプトで書いて対応可能
- リザルトの理論値計算、不正チェック
- パーティ編成の不正チェックなど(コストオーバー検知)
- 独自のフックをスクリプトで書いて対応可能