Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Game Server Services ではじめる サーバ開発運用しないゲーム開発
Search
Kazutomo Niwa
July 12, 2019
Technology
1
7.3k
Game Server Services ではじめる サーバ開発運用しないゲーム開発
https://gs2.io
Kazutomo Niwa
July 12, 2019
Tweet
Share
More Decks by Kazutomo Niwa
See All by Kazutomo Niwa
Amazon Event Bridge による次世代の Pub/Sub
kazutomo
0
1.9k
DynamoDB のインデックス再編事例
kazutomo
2
780
Production-ready Amazon Event Bridge
kazutomo
2
960
もうそこまで迫っている! Cloud2.0 時代の開発
kazutomo
3
1.7k
Cloud2.0時代のゲーム開発を支えるGS2
kazutomo
1
2k
Unityネットワーク完全に理解した.pdf
kazutomo
3
3.1k
サーバレスアプリケーションの監視・運用
kazutomo
13
6.4k
ゼロからサーバレスの先頭に追いつこう
kazutomo
25
12k
サーバレスアーキテクチャ入門
kazutomo
16
6.1k
Other Decks in Technology
See All in Technology
話題のGraphRAG、その可能性と課題を理解する
hide212131
4
1.5k
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
4
4.6k
ガチ勢によるPipeCD運用大全〜滑らかなCI/CDを添えて〜 / ai-pipecd-encyclopedia
cyberagentdevelopers
PRO
3
210
Gradle: The Build System That Loves To Hate You
aurimas
2
150
プロダクトエンジニアが活躍する環境を作りたくて 事業責任者になった話 ~プロダクトエンジニアの行き着く先~
gimupop
1
480
一休.comレストランにおけるRustの活用
kymmt90
3
580
Fargateを使った研修の話
takesection
0
120
「 SharePoint 難しい」ってよく聞くけど、そんなに言うなら8歳の息子に試してもらった
taichinakamura
1
620
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
110
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
【若手エンジニア応援LT会】AWS Security Hubの活用に苦労した話
kazushi_ohata
0
170
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
840
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Unsuck your backbone
ammeep
668
57k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Embracing the Ebb and Flow
colly
84
4.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Speed Design
sergeychernyshev
24
570
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
RailsConf 2023
tenderlove
29
880
Building an army of robots
kneath
302
42k
A Tale of Four Properties
chriscoyier
156
23k
Transcript
Game Server Services ではじめる サーバ開発運⽤しないゲーム開発
⾃⼰紹介 代表取締役社⻑CEO 丹⽻ ⼀智 新卒で株式会社セガに⼊社、携帯電話向けのゲームおよびサーバ開発業 務に従事。約3年勤める 任天堂株式会社に⼊社、ニンテンドー3DSのOS開発や、ゲームサーバの 開発・運⽤。Nintendo Switchのサーバシステム設計などに従事。約7年 間勤める
2016年9⽉ Game Server Services 株式会社を設⽴
会社概要 事業内容 ゲームサーバを、初期費⽤・運⽤費⽤など⼀切かからず、サーバアクセ ス1回あたり 0.02円 で使⽤出来るクラウドサービス。 パズドラ / モンスト のようなゲームをサーバ開発
/ 運⽤ することなく リリース出来る。 代表的なゲーム関連企業の株主 DeNA KLab Venture Partners ワンダープラネット
なぜ GS2 が必要か
コードを書くことには責任が伴う コードを書くことで責任が発⽣する バグがないか? 脆弱性がないか? スケールするか?
ゲーム開発者の負うべき責任 ゲームを⾯⽩く ゲームを遊べる状態を維持
構築から利⽤へ ゲームのコアバリューに関係のないものは責任を負って構築する のではなく、責任を他者に転嫁して利⽤するようにしましょう。 ゲームサーバの多くの要素は“当たり前に存在するもの”であり、 新たな価値を⽣み出しません。
今のゲームサーバに⾜りないもの 汎⽤ゲームエンジンはゲーム開発 シーンで過去10年で最もイノベー ティブな存在でした。 開発効率を向上させ、ゲーム開発 の敷居を⼤幅に引き下げました。 ゲームサーバの分野には開発環境 の改善が不⾜しています。
GS2 が提供する価値
サーバダウンの恐怖から解放 GS2は AWS と GCP のハイブリッドクラウドで提供します。 秒間10万アクセスを超える負荷テストを実施しそれ以上のアク セスを受け⼊れられることを確認しました。 これはローンチ時に未曾有のアクセスが発⽣し、1,000台以上の サーバーを⽤意したというSINoALICEのピーク時のアクセスの2
倍以上※です。 ※ CEDEC 2018 公演より
先⾏投資なし GS2 は初期費⽤無しで採⽤できます。 従来はゲームサーバの初期開発には開発リソースが必要で、外部 委託する場合は数百〜数千万円の初期投資が必要でした。 これらのコストはゲームを⾯⽩くするための開発に活⽤できます。
運⽤費なし 通常、サーバの保守運⽤費として継続的に費⽤が発⽣します。 GS2は利⽤料⾦に運⽤費が含まれるため、追加の費⽤は発⽣しま せん。 GS2はフルサーバレスアーキテクチャを採⽤。 AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞 GS2の責任で動作しているサーバは1台もない アプリケーションコードより下のサーバに関する全ての責任は
AWS/GCPが負っている 世界で最も優れた監視運⽤体制でGS2のインフラは提供される
ゼロスケール GS2 はサーバのAPI呼び出し回数など利⽤状況に応じて料⾦が計 算されます。 GS2は⼤量のアクセスを捌くためのスケーリングは当然ながら、 ゲームサーバーを使⽤していないときには⼀切費⽤が発⽣ないゼ ロスケールまでをサービスとして提供します。
ゲームのニーズに合わせてカスタマイズ GS2では、アカウント新規登録時、レベルアップ時、クエストク リア時など様々なイベントをトリガーとしてサーバサイドでスク リプトを実⾏できます。 この仕組みを使うことでゲームの特徴にあわせてゲームサーバー の動作を⾃由に拡張できます。
チート対策に頭を悩ませない GS2は不正⾏為に対して強固な設計になっています。 所持品や課⾦通貨の不正な⼊⼿など、あってはならない不具合を ⽣み出せないよう設計されています。 → 後ほど解説
様々な⾔語向けSDKを提供 ゲームエンジン向けSDKを提供。 Unity, Unreal Engine4, cocos-2dx ゲーム内から利⽤するだけでなく独⾃の管理ツールを作りたい場 合は。各⾔語向けSDKも。 Java, PHP,
Python, Ruby, Node.js(JavaScript), C#, C++
GS2 の概念
わかりやすいAPI Unity のゲームにアカウント機能を導⼊する場合は7種類のAPI を意識するだけでOK! Gs2Account.Create() アカウントの新規作成 ‒ ユーザID/パスワードを発⾏ Gs2Account.Authentication() ユーザID/パスワードでアカウントを認証
Gs2Account.AddTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を登録 Gs2Account.ListTakeOverSettings() データ引き継ぎ⽤ ID/パスワード の⼀覧を取得 Gs2Account.UpdateTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を更新 Gs2Account.DeleteTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を削除 Gs2Account.DoTakeOver() データ引き継ぎ⽤を実⾏
わかりやすいAPI 管理⽤のAPI も提供。ゲーム向けAPIキーでは使⽤できないよう に設定可能。 管理⽤APIの例(⼀部) Gs2Account.DescribeAccounts() 存在するアカウントの⼀覧取得 Gs2Account.DeleteAccount() アカウントの削除 Gs2Account.DescribeTakeOversByUserId()
ユーザIDを指定して引き継ぎ情報⼀覧取得
必要な機能を組み合わせて実装 アカウント管理 経験値・ランク管理 プレゼントボックス 所持品管理 回数制限管理 抽選処理 マッチメイキング 課⾦通貨管理 クエスト管理
リアルタイム対戦 ミッション管理 イベントスケジュール管理 ゲーム内ストア管理 スタミナ管理 パーティ編成管理 テキストチャット フレンド管理 バージョン管理
⽤例A GS2 が提供する機能をそのまま利⽤する。
⽤例A アカウント管理
⽤例A SDKが提供するAPIを呼び出すだけで実装できて、すぐにゲーム に導⼊可能。
⽤例B GS2 が提供する様々な機能を連携させて利⽤する。
⽤例B ゲーム内ストア イベント期間1回だけ 買える商品 イベント スケジュール管理 商品販売期間 回数制限管理 商品購⼊回数 所持品管理
買った商品 課⾦通貨管理 所持してる通貨量
⽤例B 複雑な仕様を実現しようと思うと必要となるパターン。 GS2 ではこのパターンでの利⽤を前提に設計しており、多くの 場合は設定項⽬で連携するサービスのID※を指定するだけで連携 できる様になっている。 ※ イベントスケジュールのイベントID ストアに陳列した商品を購⼊するために必要なアイテムID 購⼊したら⼿に⼊るアイテムのID
⽤例C 全く新しい仕組みを作り出す。
⽤例C クエスト管理 1⽇1回だけ 進⾏できるクエスト 回数制限管理 今⽇の クエスト進⾏回数 所持品管理 プレイヤーの所持品 イベント
スケジュール管理 公開中のログボ サーバスクリプト クエストの終端に 来たら進⾏状況を リセット ログインボーナスシステム
⽤例C GS2 が提供するコンポーネントを組み合わせることで、全く新 しいゲームサーバシステムが⽣まれます。
GS2 の提供するサービスの紹介
アカウント管理 データの引き継ぎに対応 ID/パスワード ソーシャルアカウント ⾃社でアカウント管理の仕組みがある場合は使わなくても他の GS2の機能を利⽤可能
課⾦通貨管理 資⾦決済法の前払式⽀払⼿段(⾃家型)に対応 通貨の単価ごとに数量を管理 未使⽤残⾼が⾃動計算 ⼆次通貨の管理にも対応
経験値・ランク管理 ランクアップテーブルを登録するとランクを⾃動計算 単純なレベルだけでなく経験を積み上げてランクをあげる仕組 み全般で使⽤可能 信頼度 クエストを3回クリアするとスキップチケットが使えるようになる クリア回数を経験値とする ランク2になるとスキップチケットが使える
プレゼントボックス 事前登録ボーナスを届ける お詫びの品を届ける 所持品管理サービスやスタミナ管理サービスと連携すれば溢れ たリソースを⾃動的にプレゼントボックスに届けることが可能
所持品管理 消費型アイテム ガチャチケット、スタミナドリンク 資産 キャラクター、ゲーム内通過 素材 強化素材、進化素材 : 様々なものを所持品として管理 所持品枠の拡張機能あり
回数制限管理 ⾏動回数のカウンター 商品の購⼊回数 クエストの挑戦回数 ガチャの抽選回数 リセット間隔を設定可能 毎⽇X時 毎週X曜⽇ X時 毎⽉X⽇
X時 リセットしない
抽選処理 排出確率テーブルを設定するだけで利⽤可能 重みベースの確率設定 アイテムA(重み1), アイテムB(重み3)に設定すると アイテムA(25%), アイテムB(75%)と処理される 排出コンテンツに排出確率テーブルを指定可能 1段⽬ SSR/SR/R
のようなレアリティ抽選 2段⽬ 各レアリティのコンテンツを抽選
クエスト管理 進⾏管理・前提クエストのクリア判定などに対応 パーティメンバーに特定キャラが編成されているか? スクリプトによる判定処理の拡張で対応可能 クエストの報酬を抽選可能 レアモンスターの出現判定 クエスト開始時に乱数シードと⼊⼿可能なコンテンツの最⼤量 クエスト終了時に実際に⼊⼿したコンテンツの数量を報告
ミッション管理 実績(トロフィー)に相当する機能 クエストのクリア報酬などでミッションのカウンターを操作 カウンターが閾値を超えたときにミッション達成 カウンターには「デイリー」「ウィークリー」といったスコー プを設定可能 ミッション達成時にサーバからプッシュ通知 ミッションの報酬受取、カウンターの操作に期間を設定可能
イベントスケジュール管理 ゲーム内イベントの管理 絶対期間・相対期間のイベントに対応 相対期間の場合は開始トリガーを引く必要あり ログイン時のパラメータで時間のオフセットを指定できる QA担当は1⽇進んだ状態でプレイできる
ゲーム内ストア管理 現⾦で課⾦通貨 / 現⾦で相対期間イベントのトリガー 課⾦通貨でガチャ / 課⾦通貨で所持品枠の拡張 ゲーム内通貨で進化素材 / ゲーム内通貨でスタミナ
様々なリソースを IN/OUT に指定可能 販売期間の設定が可能 複数商品をグルーピング。購⼊条件を満たす最初の商品が陳列 ステップガチャ、購⼊するたび売価が⾼くなる商品
スタミナ管理 時間経過で回復するスタミナ値の管理 ⼆段階の上限値を設定可能 50/100 の状態で 100回復アイテムを使うと 150/100 になる その場合でも 999/100
を上限とする 999 を超えるとプレゼントボックス送り 回復間隔・回復量・最⼤値 は経験値ランク管理と連携可能 建築系ゲームの資源回収にも応⽤可能
マッチメイキング 属性値の範囲で条件を設定 ゲームモード、レーティング、地域など ロールで条件を設定 盾役1、回復役1、攻撃役2 でマッチメイキング ホワイトリスト フレンドのみ参加できるルーム ブラックリスト このプレイヤーとは⼀緒に遊びたくない
リアルタイム対戦 初期はパケットリレーサーバとして提供 サーバで動かすロジックを変更できるように サーバでロジックを動かせるとレイドバトルなどを実装できる ボスの体⼒をサーバで管理 サーバでダメージ計算 ボスが死んだら参加者に報告
GS2 のサービス連携と不正対策の仕組み
スタンプシート GS2 内のサービス間を連携させる仕組みとして、スタンプシー トシステムを提供。 スタンプシートシステムは、稟議のようなもの。
対価と報酬 スタンプシートには対価と報酬が設定されています。 たとえば、1回だけ100円で買える1,000個の課⾦通貨を購⼊する としましょう。 その場合のスタンプシートは以下のようになります。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う
対価: 購⼊回数を 1回増やす
対価を払うとスタンプがもらえる GS2-Money に スタンプシートと、AppStore や PlayStore で購 ⼊したときに発⾏されるレシートを持っていきます。 すると、GS2-Money はレシートを検証して、スタンプシートに
スタンプを押してくれます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済
すべてのスタンプが揃ったら すべてのスタンプが揃ったら報酬を受け取りに⾏きます。 報酬を受け取るとスタンプシートは⼆度と使えないよう破棄され ます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価:
購⼊回数を 1回増やす 済 済
チート対策 GS2 内のリソースの増加は基本的にこのスタンプシートを通し て⾏います。 対価を払わなければ報酬がもらえない仕組みによって不正⾏為を ⾏えなくします。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価:
100円⽀払う 対価: 購⼊回数を 1回増やす まだスタンプ揃ってないけど、 持っていくぜ これでは報酬は払えませんな
チート対策 スタンプシートには改ざん検出機能があり、不正にスタンプシー トを改ざんしても報酬は払い出されません。 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済 済
内容を書き換えたろ 報酬:課⾦通貨 1,,000 個を⼊⼿する件 改ざんされてますな これでは報酬は払えませんな 報酬:課⾦通貨 1,000,000,000,000,000 個を⼊⼿する件
チート対策 対価を改ざんした場合も同様に、スタンプを押してもらえません。 対価: 1円⽀払う 対価: 購⼊回数を 1回増やす えーい。なら対価を変えてやる 報酬:課⾦通貨 1,000
個を⼊⼿する件 改ざんされてます これではスタンプは押せません
GS2 のマスターデータ管理
マスターデータ管理 サービスごとにJSON形式でマスターデータ管理 ゲーム内ストアは 購⼊に必要なリソースのIDと数量 そして、⼊ ⼿できるリソースのIDと数量 を設定。 リソースが何者かはしらない。 リソースのマスターデータは所持品管理のサービスなどに設定。 GS2の管理画⾯で登録してエクスポートもできるが、独⾃のツー
ルで定められた形式のJSONファイルを出⼒してもOK。
もちろん Excel でも Excel のマクロを使⽤して JSON 形式で出⼒すれば、Excel ベー スのマスターデータ管理も可能。
GS2 を利⽤した開発・運営の流れ
GS2-Deploy GS2 を利⽤した開発・運営をサポートするのが GS2-Deploy で す。 GS2-Deploy はGS2内で作成したいリソースを宣⾔的に記述する ことで、⾃動的に作成・更新・削除してくれる機能です。 この宣⾔ファイルのことをテンプレートと呼びます。
⾃動的に環境を作成 テンプレートを GS2-Deploy にアップロードすると、⾃動的に 必要となるリソース(サーバの設定)が作成されます。 この機能は開発環境と製品環境で内容を揃えるときに活⽤できま す。 開発期間も、テンプレートさえ共有していれば、開発者ごとに別 の環境を利⽤することができます。 テンプレートは
YAML形式のテキストファイルなので Git で管 理できます。
環境の削除 アップロードしたテンプレートを削除するだけで、その定義に よって作成されたリソースがまとめて削除されます。
GS2-Deploy を使ったイベント運営 テンプレートはアカウントに対して1つではなく、複数定義する ことができます。 ゲームを構成する基本的なテンプレートとは別にイベント開催⽤ のテンプレートを作成し、イベントが終わったらテンプレートを 削除することでイベント関連のリソースをまとめて削除できます。 復刻イベントを開催するときも過去のテンプレートを使えばすぐ に復刻できます。
カスタマーサポート サポート業務に即した管理画⾯を⽤意したい場合があります。 GS2-SDK を使うと独⾃の管理画⾯を作成できます。 GS2の提供する管理画⾯もSDKを使⽤して開発されています。
ロードマップ
第⼆世代GS2 を来週⽕曜⽇公開 現在サービス中の第⼀世代GS2から更に発展した第⼆世代GS2が 今⽉β公開されます。(本公演の内容は第⼆世代の内容) β期間は提供されているすべての機能を無料で試していただくこ とができます。 フィードバックも受け付け、フィードバックいただいた内容は正 式サービス開始までに優先度をつけて対応していきます。
年内正式サービス開始 年内に正式サービスを開始します。 正式サービス開始で変わること - 99.99% のSLA - ⽇本リージョン以外に北⽶・欧州リージョンの提供開始 - 利⽤料が発⽣
- 毎⽉2万円まで無料 (APIリクエスト100万回相当)
新発表 Cloud Weave
Cloud Weave Cloud Weave はGS2-Deployのテンプレートリポジトリです。 Unity Editor をはじめとした ゲームエンジンのIDE上のボタン ⼀つで
GS2-Deploy にアップロードし反映できます。 GS2-Deploy Cloud Weave テンプレート テンプレート 検索/選択 アップロード
機能特化の管理画⾯ テンプレートが提供する機能の視点でわかりやすい管理画⾯も含 むことで、より開発体験を良くしていきます。 ログインボーナスをインストール ログインボーナス管理 1⽇⽬の報酬 2⽇⽬の報酬 : 1⽇⽬の報酬は何にしようかな
最後に
会場にブースを出しています 詳しい説明を聞いてみたい!という場合はお⽴ち寄りください。 - ⼤阪会場 18 - 東京会場 26 Webサイトのお問い合わせページからも随時承っています。 https://gs2.io/
Good-bye, dedicated servers. https://gs2.io/