Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
「KiQ」が拓くゲームサーバの未来
株式会社アトミテック 研究開発室 長久勝
2016/7/15 GTMF2016東京
1
Copyright (c) Atomitech Corporation. All rights reserved.
(株)アトミテック
設立:2004年
資本金:26,000,000円
代表取締役:松本 浩司
拠点:山口本社、東京本社、福岡営業所
関連会社:(株)エクスジール
統合運用管理ツール「Hinemos」
公式ソリューションパートナー
APNスタンダード
コンサルティングパートナー2
Copyright (c) Atomitech Corporation. All rights reserved.
長久勝
株式会社アトミテック 研究開発室 室長
「KiQ」開発チーム責任者
早稲田大学GEC非常勤講師
担当講義:大規模データ解析入門
NPO法人IGDA日本
SIG-4NG 正世話人 / FGJ-TF 副世話人
株式会社エスエヌケイをふりだしに、ゲームや映像配信などコ
ンテンツ業界を中心に技術者として働き、国立情報学研究所を
経て、2015年から現職。CEDEC他で講演など多数。
http://researchmap.jp/mnagaku/
3
Copyright (c) Atomitech Corporation. All rights reserved.
「KiQ」が拓くゲームサーバの未来
 「KiQ」は、不正に対する安全性や開発ワークフローに配慮し
たゲームサーバエンジンとして開発を行っており、採用タイトル
運用の経験もフィードバックしながら、日々進化を目指していま
す。
 本セッションでは、ゲームサーバに求められると我々が考え、
「KiQ」で提案している事柄について、説明をさせて頂きます。
 ゲームサーバの開発や運用に携わっておられる方に、参考に
して頂けるような、お話をさせて頂きたいと考えています。
4
Copyright (c) Atomitech Corporation. All rights reserved.
「KiQ」が拓く
ゲームサーバの
未来
5
Copyright (c) Atomitech Corporation. All rights reserved.
未来6
Copyright (c) Atomitech Corporation. All rights reserved.
Future
7
Copyright (c) Atomitech Corporation. All rights reserved.
The Future
Is Now
8
Copyright (c) Atomitech Corporation. All rights reserved.
未来、もう、来てた
● ゲームのオンライン要素について、
ある程度の合意が得られている
○ ゲームサーバエンジンが作れている
● 最近のリアルタイム要素など、
合意内容は更新されるが、
基本的に追加で進む
○ 今の枠組みを捨てることはなさそう
○ クライアント側の歴史もそうだし
● 適切なOSSを選定・利用することで
必要な技術の調達コストが下がった
○ 試行錯誤の経験と、アンテナ張って事例を見つければ、
やり方が見えてくる9
Copyright (c) Atomitech Corporation. All rights reserved.
拓く前に
もう来てた
10
Copyright (c) Atomitech Corporation. All rights reserved.
完11
今後も追加される新しい要素に、ご期待下さい!
Copyright (c) Atomitech Corporation. All rights reserved.
ほんまに?
12
Copyright (c) Atomitech Corporation. All rights reserved.
現実
13
Copyright (c) Atomitech Corporation. All rights reserved.
問題
提供価値を評価しやすいフロントの開発の比重が
高まり、サーバの開発・運用に対する制約が強く
なった。
「分かっているけど、できない」
既に体制や資産がある場合は、「未来」の恩恵を
十分に受けられる。一方、それがない場合は、とて
も厳しい戦いになる。
14
Copyright (c) Atomitech Corporation. All rights reserved.
解決
前例:
「3Dとかレンダリングとか、もう書いてられへん」
つ「げえむえんじんー」
「通信とかLinuxとか、もう書いてられへん」
つ「げえむさあばあえんじんー」
15
Copyright (c) Atomitech Corporation. All rights reserved.
ほんまに?
16
Copyright (c) Atomitech Corporation. All rights reserved.
新たなる敵
その名は「運用」
ゲームサーバエンジンを導入しても、自分たちで構
築・運用・監視していたら、手間が減らない。
今回は、「書いてられへん」だけでなく「見てられへ
ん」にも対応しないといけなかった。
17
Copyright (c) Atomitech Corporation. All rights reserved.
真・解決
「通信とかLinuxとか、もう書いてられへ
ん。サーバとかネットワークとか、もう見て
られへん」
つ「オンラインゲーム開発・運営支援サー
ビスぅー(ゲームサーバエンジンの提供含
む)」
18
Copyright (c) Atomitech Corporation. All rights reserved.
オンラインゲーム開発・運営支援サービス「KiQ」
● 開発支援
○ ゲームサーバエンジン「KiQ」(狭義のKiQ)
○ ゲームサーバ標準機能「KiQ BasicPlugin」
○ デバッグ(アトミテック福岡営業所)
● 運営支援
○ 構築・運用・監視
19
運営フェーズ開発フェーズ
ゲーム開発社さま
ゲームクライアント開発 ゲーム運営、追加開発
アトミテック
ゲームサーバエンジン「 KiQ」提供(KiQBasicPlugin、開発社さま独自ロジックの注入)
AWS上に開発・運営環境を提供(構築・運用)
デバッグ(アトミテック福岡営業所)
サービス監視・システム監視
Copyright (c) Atomitech Corporation. All rights reserved.
オンラインゲーム開発・運営支援サービス「KiQ」
● 開発支援
○ ゲームサーバエンジン「KiQ」(狭義のKiQ)
○ ゲームサーバ標準機能「KiQ BasicPlugin」
○ デバッグ(アトミテック福岡営業所)
● 運営支援
○ 構築・運用・監視
ゲーム本体の開発、運営以外の、ゲームクリエイターにとって煩わし
い作業を、全てアトミテックが引き受ける。
開発と運営の支援を一括で担当することで、素早い障害対応、精度
の高い監視が可能。つまり、「インフラが動いていること」、「サーバが
動いていること」ではなく、「ゲームが動いていること」を監視できる。
20
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例A 概要
2016年3月末にリリースされたブラウザゲームにて
採用。ゲームサーバ基盤提供、構築、運用・監視
を担当。毎分数万アクセスの環境で、3ヶ月間、担
当部分でトラブルなし。
● 開発支援
○ ゲームサーバエンジン「KiQ」
○ デバッグ(アトミテック福岡営業所)
● 運営支援
○ 構築・運用・監視
21
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例A
デプロイ
サーバ上のゲームロジックは、クライア
ント開発チームが担当し、クライアント開
発に使われているC++で開発が行われ
た。ビルド、デプロイはJenkins job化さ
れ、クライアント開発チームは、自分た
ちの好きなタイミングで、自由にサーバ
上のゲームロジックを更新でき、最新の
コードを動作確認できた。
運営においても、本番環境への最新
コードのデプロイなど、通常のオペレー
ションは、クライアント開発チームが
Jenkinsのjobを通じて実施している。22
Copyright (c) Atomitech Corporation. All rights reserved.
サーバ上の
ゲームロジックは、
クライアント開発チームが
担当し?23
Copyright (c) Atomitech Corporation. All rights reserved.
サーバを書くための専任者を置く必要がない
C/Sが別々の実装言語で、実装担当者が別々だと、コミュニ
ケーションコストや待ち時間など、ムダが多い。1つの機能実現
が分担作業になってしまう。
そこで、
同じ言語で同じ人が
両方書けるようにする。
24 Linux
Vert.X
KiQ
JVM 共有ライブラリ(so)JNA
サーバ側
ゲームロジック
(C++、プラグイン)
コンパイル
クライアント側
ゲームプログラム
(C++)
RPC
プログラマ
1人のC++プ
ログラマが両
方書ける
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例A 開発
クライアント開発から見た場合
RPCは単なる関数呼び出しに
見える25
クライアントプログラム
サーバロジック関数呼び出し
クライアントプログラム
サーバ呼び出し
ライブラリ(所与)
関数呼び出し
ゲームサーバ
サーバロジック
通信
開発初期:
サーバなしで開発
開発後期:
サーバと組み合わせて開発
Copyright (c) Atomitech Corporation. All rights reserved.
ゲームサービスは、多種のサブシステムの
複合体として構成されるため、監視すべき
項目は多岐にわたるが、その何れかに異
常を見つけた時、サービスが影響を受けて
いないか確認する必要がある。
運用に入る前から、デバッグ業務を通じて、そのゲームの振る舞いについて
知見を蓄積できる。この知見を有効活用して、サービス監視の自動化を実現
している。
適用事例A 監視
26
監視システム
異常
通知監視
動作確認システム
※デバッグチームが運用報告
クライアント
及び
弊社メンバ
Copyright (c) Atomitech Corporation. All rights reserved.
サービス監視の自動化?
27
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例A 監視の自動化
28
監視システム
異常
通知監視
動作確認システム
※デバッグチームが運用報告
クライアント
及び
弊社メンバ
枠内は全部コンピュータがやってる
監視システム、動作確認システム、人間の間は
メールで連携。メールの状況をGoogleAppScript
で監視し、動作確認システムが起動しなかった場
合や、動作確認でサービス停止が判明した場合に
は、人間にエスカレーション(着手しましたメールを
出すまで、携帯電話にメールが飛び続ける)する。
「24-365」を外注していない
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例B 概要
2016年8月にリリース予定のタイトルにて採用。
ゲームサーバ(KiQBasicPlugin)提供、構築、運用
・監視を担当予定。
● 開発支援
○ ゲームサーバエンジン「KiQ」
○ ゲームサーバ標準機能「KiQ BasicPlugin」
○ デバッグ(アトミテック福岡営業所)
● 運営支援
○ 構築・運用・監視
29
Copyright (c) Atomitech Corporation. All rights reserved.
適用事例B 工数削減
開発が進んでいたタイトルについ
て、サーバに不安があるという相談
を頂き、仕様を協議したところ
KiQBasicPluginで賄えることが分
かり、提案、採用。
KiQBasicPluginの仕様の範囲内に
収まる場合、ゲームサーバ側のロ
ジックを書く必要はなく、クライアント
にRPCライブラリを入れて、呼ぶだ
けで済む。
30
クライアントプログラム
サーバ呼び出し
ライブラリ(所与)
関数呼び出し
ゲームサーバ
KiQBasicPlugin
通信
サーバロジックに所与の
「KiQBasicPlugin」を採用
Copyright (c) Atomitech Corporation. All rights reserved.
それ今までの他社製品と同じやん......
31
Copyright (c) Atomitech Corporation. All rights reserved.
多言語対応
RPCフレームワーク
「Thrift」
RPC定義言語Thrift IDLの
採用により、クライアント側
の通信ライブラリを、多言語
で、自動生成できる。クライ
アント側のプログラミング言
語に合わせて、通信ライブラ
リを提供できる。
32
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
ご相談、
お待ちしています!
ご希望があれば詳細説明に伺います。
下記まで、ご連絡ください。
sales@atomitech.jp
33
Copyright (c) Atomitech Corporation. All rights reserved.
お高いんでしょう?
34
Copyright (c) Atomitech Corporation. All rights reserved.
無料サービス準備中
KiQBasicPluginのみ利用できる(独自ロジックは
実装できない)ゲームサーバを、無料で提供する
準備を進めています。CEDECまでには何とか......
※無料サービスに対する動作保証は限定的なものになる予定です
小規模な案件に対して、性能保証の低い廉価なプ
ランを、秋以降に順次、提供する予定です。月に1
万円、10万円、50万円といった枠を検討中です。
それを超える規模の案件につきましては、個別に
対応させて頂きます。35
Copyright (c) Atomitech Corporation. All rights reserved.
無料ハンズオン準備中
無償版のサーバを公開後、
UDXにてハンズオンセミナを
計画しています。
36
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
ご相談、
お待ちしています!
ご希望があれば詳細説明に伺います。
下記まで、ご連絡ください。
sales@atomitech.jp
37
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
開発スタッフ他募集中
(勤務地:UDX)
プログラマ、インフラエンジニア、広報・営業など
スタッフも募集中です!
https://careers.atomitech.jp/
エントリーシートの「その他」に、
希望職種と「KiQチームへの応募」を記入して下さい。
38
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
よし、
出展費分は
宣伝したぞ!
ここからは自由時間です
まずは告知から
39
Copyright (c) Atomitech Corporation. All rights reserved.
告知
CEDEC2016
ラウンドテーブル
「ゲームサーバ
についてのパ
ターンマイニン
グ」
応募時の詳細、
本文5行で通っ
た、やる前から
伝説のラウンド
テーブル40
Copyright (c) Atomitech Corporation. All rights reserved.
告知
IGDA日本SIG-4NG
地方の小中学生を対象にワーク
ショップを提供しています。
公益財団法人
中山隼雄科学
技術文化財団
からの助成を
受けて実施して
います。
41
Copyright (c) Atomitech Corporation. All rights reserved.
告知
IGDA日本
福島ゲームジャム
今年もあるよ!
郡山メイン会場の参
加申し込み締め切
りは、7/19(火)
42
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
残り時間で
中身とか構想とか
43
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえた
(うちでやれるはんいで)
さいきょうのげーむさーばの
えーだぶるえすじょうでのこうせい
44
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえた
(うちでやれるはんいで)
さいきょうのげーむさーばの
びるどとでぷろい
45
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえた
(うちでやれるはんいで)
さいきょうのげーむさーばの
しゅっかはんていしけん
46
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえた
(うちでやれるはんいで)
さいきょうのげーむさーばの
ふかしけん
47
fullbok、直しました!(うちのスタッフが)
CentOSに入れ替えて直しました!
(AmazonLinuxがね、ちょっとね……)
https://github.com/mnagaku/fullbok/blob/develop/fullbok.template
Copyright (c) Atomitech Corporation. All rights reserved.
48
インフラ監視の一環で、使っているAWSのサービスの稼働
状況を、実リクエストベースで監視している。特定リージョ
ンの特定サービスで、瞬断が観測されることは月に何回か
みたいな頻度である。そのつもりでコードを書いたり構成を
考えたりしておく。
# aws ec2 start-instances --instance-ids hogehoge
A server error (InsufficientInstanceCapacity) occurred when calling the
StartInstances operation: We currently do not have sufficient c4.8xlarge
capacity in the Availability Zone you requested (ap-northeast-1c). Our system
will be working on provisioning additional capacity. You can currently get c4.
8xlarge capacity by not specifying an Availability Zone in your request or
choosing ap-northeast-1a.
マシンを起動できない場合も考えたりしておく。
IT土方は見た
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえたさいきょうの
ちゅうしょうどのたかいせっけいがいねん
● 現状
C/Sで技術基盤が違う
C/S開発を別々の担当者が行う
「2つのシステム」が連携して動く
● 理想
ゲームという「1つのシステム」の中の
C/Sという部分があるに過ぎない
49
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえたさいきょうの
ちゅうしょうどのたかいせっけいがいねん
例:画面遷移
● 現状
「Cで画面遷移」、「C/Sで通信、Sでゲームロジック
の処理」は個別に考えられている。通信APIは「S
でゲームロジックの処理」単位に設計される
● 「1つのシステム」
何かを表示する必要があり、その何かを得る1つ
の実装パターンが、通信とSのゲームロジック処
理、に過ぎない。画面遷移と通信を不可分の関係
として見直せるのでは?50
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえたさいきょうの
ちゅうしょうどのたかいせっけいがいねん
51
Copyright (c) Atomitech Corporation. All rights reserved.
ぼくのかんがえたさいきょうの
ちゅうしょうどのたかいせっけいがいねん
画面遷移と通信を不可分の関係とする
→例外を包含可能な形で、そのような設計が可能
メリット
● 通信エラーの単純化
● チート対策
● 仕様が分かりやすくなる
● 検証しやすくなる
52
Copyright (c) Atomitech Corporation. All rights reserved.
「状態遷移の管理」
53
KiQゲーム
KiQ
クライアントとサーバが
それぞれ状態遷移を管理し整合性を確認
Copyright (c) Atomitech Corporation. All rights reserved.
「画面遷移から通信を設計」
54
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知①
● 状態遷移図の情報を使うと、設計上あ
り得る通信の順序が明確になり、異常
(不正)な通信を検知することができる
55
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知②
//状態遷移図から起こした遷移のチェーンの定義
S->checkLogin
checkLogin->(login | t1[isLogin==true])
login->(getTopTotalRanking | t2[プレイ開始操作])
t1->(getTopTotalRanking | t2)
getTopTotalRanking->
(getScopedTotalRanking | t3[ランキング画面からタイトル画面に戻る])
getScopedTotalRanking->(getScopedTotalRanking | t3)
t3->(getTopTotalRanking | t2)
t2->(stageClear | gameset)
stageClear->t4[ステージ終了からステージに戻る]
t4->(stageClear | gameset)
gameset->t5[終了画面からタイトル画面に戻る]
t5->(getTopTotalRanking | t2)
56
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知③
//通信の無い遷移を捨象して通信のある遷移のみに変換した
//遷移のチェーンの定義
S->checkLogin
checkLogin->(login | getTopTotalRanking | stageClear | gameset)
login->(getTopTotalRanking | stageClear | gameset)
getTopTotalRanking->
(getScopedTotalRanking | getTopTotalRanking
| stageClear | gameset)
getScopedTotalRanking->(getScopedTotalRanking |
getTopTotalRanking | stageClear | gameset)
stageClear->(stageClear | gameset)
gameset->(getTopTotalRanking | stageClear | gameset)
57
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知④
//ある通信の前にあり得る通信をまとめたもの
S->checkLogin
checkLogin->login
(checkLogin | login | getTopTotalRanking |
getScopedTotalRanking | gameset)->getTopTotalRanking
(getTopTotalRanking | getScopedTotalRanking)
->getScopedTotalRanking
(checkLogin | login | getTopTotalRanking |
getScopedTotalRanking | stageClear | gameset)->stageClear
(checkLogin | login | getTopTotalRanking |
getScopedTotalRanking | stageClear | gameset)->gameset
58
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知⑤
● ここまでの変換は自動で行える
● サーバ側でこの情報を元に監視を行う
● 設計時に、この情報をレビューすること
で、この例では、stageClearやgameset
を無限ループで呼べることが脆弱だと
判断できたりする
59
Copyright (c) Atomitech Corporation. All rights reserved.
状態遷移で異常検知⑥
● モデル検査できる
● プロセス代数系の実装モデルを採用し
たプログラミング言語と相性が良い
○ ほんとは、GoやErlangで書けるとキ
レイなんじゃよ
60
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
ご相談、
お待ちしています!
ご希望があれば詳細説明に伺います。
下記まで、ご連絡ください。
sales@atomitech.jp
61

GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック

  • 1.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. 「KiQ」が拓くゲームサーバの未来 株式会社アトミテック 研究開発室 長久勝 2016/7/15 GTMF2016東京 1
  • 2.
    Copyright (c) AtomitechCorporation. All rights reserved. (株)アトミテック 設立:2004年 資本金:26,000,000円 代表取締役:松本 浩司 拠点:山口本社、東京本社、福岡営業所 関連会社:(株)エクスジール 統合運用管理ツール「Hinemos」 公式ソリューションパートナー APNスタンダード コンサルティングパートナー2
  • 3.
    Copyright (c) AtomitechCorporation. All rights reserved. 長久勝 株式会社アトミテック 研究開発室 室長 「KiQ」開発チーム責任者 早稲田大学GEC非常勤講師 担当講義:大規模データ解析入門 NPO法人IGDA日本 SIG-4NG 正世話人 / FGJ-TF 副世話人 株式会社エスエヌケイをふりだしに、ゲームや映像配信などコ ンテンツ業界を中心に技術者として働き、国立情報学研究所を 経て、2015年から現職。CEDEC他で講演など多数。 http://researchmap.jp/mnagaku/ 3
  • 4.
    Copyright (c) AtomitechCorporation. All rights reserved. 「KiQ」が拓くゲームサーバの未来  「KiQ」は、不正に対する安全性や開発ワークフローに配慮し たゲームサーバエンジンとして開発を行っており、採用タイトル 運用の経験もフィードバックしながら、日々進化を目指していま す。  本セッションでは、ゲームサーバに求められると我々が考え、 「KiQ」で提案している事柄について、説明をさせて頂きます。  ゲームサーバの開発や運用に携わっておられる方に、参考に して頂けるような、お話をさせて頂きたいと考えています。 4
  • 5.
    Copyright (c) AtomitechCorporation. All rights reserved. 「KiQ」が拓く ゲームサーバの 未来 5
  • 6.
    Copyright (c) AtomitechCorporation. All rights reserved. 未来6
  • 7.
    Copyright (c) AtomitechCorporation. All rights reserved. Future 7
  • 8.
    Copyright (c) AtomitechCorporation. All rights reserved. The Future Is Now 8
  • 9.
    Copyright (c) AtomitechCorporation. All rights reserved. 未来、もう、来てた ● ゲームのオンライン要素について、 ある程度の合意が得られている ○ ゲームサーバエンジンが作れている ● 最近のリアルタイム要素など、 合意内容は更新されるが、 基本的に追加で進む ○ 今の枠組みを捨てることはなさそう ○ クライアント側の歴史もそうだし ● 適切なOSSを選定・利用することで 必要な技術の調達コストが下がった ○ 試行錯誤の経験と、アンテナ張って事例を見つければ、 やり方が見えてくる9
  • 10.
    Copyright (c) AtomitechCorporation. All rights reserved. 拓く前に もう来てた 10
  • 11.
    Copyright (c) AtomitechCorporation. All rights reserved. 完11 今後も追加される新しい要素に、ご期待下さい!
  • 12.
    Copyright (c) AtomitechCorporation. All rights reserved. ほんまに? 12
  • 13.
    Copyright (c) AtomitechCorporation. All rights reserved. 現実 13
  • 14.
    Copyright (c) AtomitechCorporation. All rights reserved. 問題 提供価値を評価しやすいフロントの開発の比重が 高まり、サーバの開発・運用に対する制約が強く なった。 「分かっているけど、できない」 既に体制や資産がある場合は、「未来」の恩恵を 十分に受けられる。一方、それがない場合は、とて も厳しい戦いになる。 14
  • 15.
    Copyright (c) AtomitechCorporation. All rights reserved. 解決 前例: 「3Dとかレンダリングとか、もう書いてられへん」 つ「げえむえんじんー」 「通信とかLinuxとか、もう書いてられへん」 つ「げえむさあばあえんじんー」 15
  • 16.
    Copyright (c) AtomitechCorporation. All rights reserved. ほんまに? 16
  • 17.
    Copyright (c) AtomitechCorporation. All rights reserved. 新たなる敵 その名は「運用」 ゲームサーバエンジンを導入しても、自分たちで構 築・運用・監視していたら、手間が減らない。 今回は、「書いてられへん」だけでなく「見てられへ ん」にも対応しないといけなかった。 17
  • 18.
    Copyright (c) AtomitechCorporation. All rights reserved. 真・解決 「通信とかLinuxとか、もう書いてられへ ん。サーバとかネットワークとか、もう見て られへん」 つ「オンラインゲーム開発・運営支援サー ビスぅー(ゲームサーバエンジンの提供含 む)」 18
  • 19.
    Copyright (c) AtomitechCorporation. All rights reserved. オンラインゲーム開発・運営支援サービス「KiQ」 ● 開発支援 ○ ゲームサーバエンジン「KiQ」(狭義のKiQ) ○ ゲームサーバ標準機能「KiQ BasicPlugin」 ○ デバッグ(アトミテック福岡営業所) ● 運営支援 ○ 構築・運用・監視 19 運営フェーズ開発フェーズ ゲーム開発社さま ゲームクライアント開発 ゲーム運営、追加開発 アトミテック ゲームサーバエンジン「 KiQ」提供(KiQBasicPlugin、開発社さま独自ロジックの注入) AWS上に開発・運営環境を提供(構築・運用) デバッグ(アトミテック福岡営業所) サービス監視・システム監視
  • 20.
    Copyright (c) AtomitechCorporation. All rights reserved. オンラインゲーム開発・運営支援サービス「KiQ」 ● 開発支援 ○ ゲームサーバエンジン「KiQ」(狭義のKiQ) ○ ゲームサーバ標準機能「KiQ BasicPlugin」 ○ デバッグ(アトミテック福岡営業所) ● 運営支援 ○ 構築・運用・監視 ゲーム本体の開発、運営以外の、ゲームクリエイターにとって煩わし い作業を、全てアトミテックが引き受ける。 開発と運営の支援を一括で担当することで、素早い障害対応、精度 の高い監視が可能。つまり、「インフラが動いていること」、「サーバが 動いていること」ではなく、「ゲームが動いていること」を監視できる。 20
  • 21.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例A 概要 2016年3月末にリリースされたブラウザゲームにて 採用。ゲームサーバ基盤提供、構築、運用・監視 を担当。毎分数万アクセスの環境で、3ヶ月間、担 当部分でトラブルなし。 ● 開発支援 ○ ゲームサーバエンジン「KiQ」 ○ デバッグ(アトミテック福岡営業所) ● 運営支援 ○ 構築・運用・監視 21
  • 22.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例A デプロイ サーバ上のゲームロジックは、クライア ント開発チームが担当し、クライアント開 発に使われているC++で開発が行われ た。ビルド、デプロイはJenkins job化さ れ、クライアント開発チームは、自分た ちの好きなタイミングで、自由にサーバ 上のゲームロジックを更新でき、最新の コードを動作確認できた。 運営においても、本番環境への最新 コードのデプロイなど、通常のオペレー ションは、クライアント開発チームが Jenkinsのjobを通じて実施している。22
  • 23.
    Copyright (c) AtomitechCorporation. All rights reserved. サーバ上の ゲームロジックは、 クライアント開発チームが 担当し?23
  • 24.
    Copyright (c) AtomitechCorporation. All rights reserved. サーバを書くための専任者を置く必要がない C/Sが別々の実装言語で、実装担当者が別々だと、コミュニ ケーションコストや待ち時間など、ムダが多い。1つの機能実現 が分担作業になってしまう。 そこで、 同じ言語で同じ人が 両方書けるようにする。 24 Linux Vert.X KiQ JVM 共有ライブラリ(so)JNA サーバ側 ゲームロジック (C++、プラグイン) コンパイル クライアント側 ゲームプログラム (C++) RPC プログラマ 1人のC++プ ログラマが両 方書ける
  • 25.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例A 開発 クライアント開発から見た場合 RPCは単なる関数呼び出しに 見える25 クライアントプログラム サーバロジック関数呼び出し クライアントプログラム サーバ呼び出し ライブラリ(所与) 関数呼び出し ゲームサーバ サーバロジック 通信 開発初期: サーバなしで開発 開発後期: サーバと組み合わせて開発
  • 26.
    Copyright (c) AtomitechCorporation. All rights reserved. ゲームサービスは、多種のサブシステムの 複合体として構成されるため、監視すべき 項目は多岐にわたるが、その何れかに異 常を見つけた時、サービスが影響を受けて いないか確認する必要がある。 運用に入る前から、デバッグ業務を通じて、そのゲームの振る舞いについて 知見を蓄積できる。この知見を有効活用して、サービス監視の自動化を実現 している。 適用事例A 監視 26 監視システム 異常 通知監視 動作確認システム ※デバッグチームが運用報告 クライアント 及び 弊社メンバ
  • 27.
    Copyright (c) AtomitechCorporation. All rights reserved. サービス監視の自動化? 27
  • 28.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例A 監視の自動化 28 監視システム 異常 通知監視 動作確認システム ※デバッグチームが運用報告 クライアント 及び 弊社メンバ 枠内は全部コンピュータがやってる 監視システム、動作確認システム、人間の間は メールで連携。メールの状況をGoogleAppScript で監視し、動作確認システムが起動しなかった場 合や、動作確認でサービス停止が判明した場合に は、人間にエスカレーション(着手しましたメールを 出すまで、携帯電話にメールが飛び続ける)する。 「24-365」を外注していない
  • 29.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例B 概要 2016年8月にリリース予定のタイトルにて採用。 ゲームサーバ(KiQBasicPlugin)提供、構築、運用 ・監視を担当予定。 ● 開発支援 ○ ゲームサーバエンジン「KiQ」 ○ ゲームサーバ標準機能「KiQ BasicPlugin」 ○ デバッグ(アトミテック福岡営業所) ● 運営支援 ○ 構築・運用・監視 29
  • 30.
    Copyright (c) AtomitechCorporation. All rights reserved. 適用事例B 工数削減 開発が進んでいたタイトルについ て、サーバに不安があるという相談 を頂き、仕様を協議したところ KiQBasicPluginで賄えることが分 かり、提案、採用。 KiQBasicPluginの仕様の範囲内に 収まる場合、ゲームサーバ側のロ ジックを書く必要はなく、クライアント にRPCライブラリを入れて、呼ぶだ けで済む。 30 クライアントプログラム サーバ呼び出し ライブラリ(所与) 関数呼び出し ゲームサーバ KiQBasicPlugin 通信 サーバロジックに所与の 「KiQBasicPlugin」を採用
  • 31.
    Copyright (c) AtomitechCorporation. All rights reserved. それ今までの他社製品と同じやん...... 31
  • 32.
    Copyright (c) AtomitechCorporation. All rights reserved. 多言語対応 RPCフレームワーク 「Thrift」 RPC定義言語Thrift IDLの 採用により、クライアント側 の通信ライブラリを、多言語 で、自動生成できる。クライ アント側のプログラミング言 語に合わせて、通信ライブラ リを提供できる。 32
  • 33.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. ご相談、 お待ちしています! ご希望があれば詳細説明に伺います。 下記まで、ご連絡ください。 sales@atomitech.jp 33
  • 34.
    Copyright (c) AtomitechCorporation. All rights reserved. お高いんでしょう? 34
  • 35.
    Copyright (c) AtomitechCorporation. All rights reserved. 無料サービス準備中 KiQBasicPluginのみ利用できる(独自ロジックは 実装できない)ゲームサーバを、無料で提供する 準備を進めています。CEDECまでには何とか...... ※無料サービスに対する動作保証は限定的なものになる予定です 小規模な案件に対して、性能保証の低い廉価なプ ランを、秋以降に順次、提供する予定です。月に1 万円、10万円、50万円といった枠を検討中です。 それを超える規模の案件につきましては、個別に 対応させて頂きます。35
  • 36.
    Copyright (c) AtomitechCorporation. All rights reserved. 無料ハンズオン準備中 無償版のサーバを公開後、 UDXにてハンズオンセミナを 計画しています。 36
  • 37.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. ご相談、 お待ちしています! ご希望があれば詳細説明に伺います。 下記まで、ご連絡ください。 sales@atomitech.jp 37
  • 38.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. 開発スタッフ他募集中 (勤務地:UDX) プログラマ、インフラエンジニア、広報・営業など スタッフも募集中です! https://careers.atomitech.jp/ エントリーシートの「その他」に、 希望職種と「KiQチームへの応募」を記入して下さい。 38
  • 39.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. よし、 出展費分は 宣伝したぞ! ここからは自由時間です まずは告知から 39
  • 40.
    Copyright (c) AtomitechCorporation. All rights reserved. 告知 CEDEC2016 ラウンドテーブル 「ゲームサーバ についてのパ ターンマイニン グ」 応募時の詳細、 本文5行で通っ た、やる前から 伝説のラウンド テーブル40
  • 41.
    Copyright (c) AtomitechCorporation. All rights reserved. 告知 IGDA日本SIG-4NG 地方の小中学生を対象にワーク ショップを提供しています。 公益財団法人 中山隼雄科学 技術文化財団 からの助成を 受けて実施して います。 41
  • 42.
    Copyright (c) AtomitechCorporation. All rights reserved. 告知 IGDA日本 福島ゲームジャム 今年もあるよ! 郡山メイン会場の参 加申し込み締め切 りは、7/19(火) 42
  • 43.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. 残り時間で 中身とか構想とか 43
  • 44.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえた (うちでやれるはんいで) さいきょうのげーむさーばの えーだぶるえすじょうでのこうせい 44
  • 45.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえた (うちでやれるはんいで) さいきょうのげーむさーばの びるどとでぷろい 45
  • 46.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえた (うちでやれるはんいで) さいきょうのげーむさーばの しゅっかはんていしけん 46
  • 47.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえた (うちでやれるはんいで) さいきょうのげーむさーばの ふかしけん 47 fullbok、直しました!(うちのスタッフが) CentOSに入れ替えて直しました! (AmazonLinuxがね、ちょっとね……) https://github.com/mnagaku/fullbok/blob/develop/fullbok.template
  • 48.
    Copyright (c) AtomitechCorporation. All rights reserved. 48 インフラ監視の一環で、使っているAWSのサービスの稼働 状況を、実リクエストベースで監視している。特定リージョ ンの特定サービスで、瞬断が観測されることは月に何回か みたいな頻度である。そのつもりでコードを書いたり構成を 考えたりしておく。 # aws ec2 start-instances --instance-ids hogehoge A server error (InsufficientInstanceCapacity) occurred when calling the StartInstances operation: We currently do not have sufficient c4.8xlarge capacity in the Availability Zone you requested (ap-northeast-1c). Our system will be working on provisioning additional capacity. You can currently get c4. 8xlarge capacity by not specifying an Availability Zone in your request or choosing ap-northeast-1a. マシンを起動できない場合も考えたりしておく。 IT土方は見た
  • 49.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえたさいきょうの ちゅうしょうどのたかいせっけいがいねん ● 現状 C/Sで技術基盤が違う C/S開発を別々の担当者が行う 「2つのシステム」が連携して動く ● 理想 ゲームという「1つのシステム」の中の C/Sという部分があるに過ぎない 49
  • 50.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえたさいきょうの ちゅうしょうどのたかいせっけいがいねん 例:画面遷移 ● 現状 「Cで画面遷移」、「C/Sで通信、Sでゲームロジック の処理」は個別に考えられている。通信APIは「S でゲームロジックの処理」単位に設計される ● 「1つのシステム」 何かを表示する必要があり、その何かを得る1つ の実装パターンが、通信とSのゲームロジック処 理、に過ぎない。画面遷移と通信を不可分の関係 として見直せるのでは?50
  • 51.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえたさいきょうの ちゅうしょうどのたかいせっけいがいねん 51
  • 52.
    Copyright (c) AtomitechCorporation. All rights reserved. ぼくのかんがえたさいきょうの ちゅうしょうどのたかいせっけいがいねん 画面遷移と通信を不可分の関係とする →例外を包含可能な形で、そのような設計が可能 メリット ● 通信エラーの単純化 ● チート対策 ● 仕様が分かりやすくなる ● 検証しやすくなる 52
  • 53.
    Copyright (c) AtomitechCorporation. All rights reserved. 「状態遷移の管理」 53 KiQゲーム KiQ クライアントとサーバが それぞれ状態遷移を管理し整合性を確認
  • 54.
    Copyright (c) AtomitechCorporation. All rights reserved. 「画面遷移から通信を設計」 54
  • 55.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知① ● 状態遷移図の情報を使うと、設計上あ り得る通信の順序が明確になり、異常 (不正)な通信を検知することができる 55
  • 56.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知② //状態遷移図から起こした遷移のチェーンの定義 S->checkLogin checkLogin->(login | t1[isLogin==true]) login->(getTopTotalRanking | t2[プレイ開始操作]) t1->(getTopTotalRanking | t2) getTopTotalRanking-> (getScopedTotalRanking | t3[ランキング画面からタイトル画面に戻る]) getScopedTotalRanking->(getScopedTotalRanking | t3) t3->(getTopTotalRanking | t2) t2->(stageClear | gameset) stageClear->t4[ステージ終了からステージに戻る] t4->(stageClear | gameset) gameset->t5[終了画面からタイトル画面に戻る] t5->(getTopTotalRanking | t2) 56
  • 57.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知③ //通信の無い遷移を捨象して通信のある遷移のみに変換した //遷移のチェーンの定義 S->checkLogin checkLogin->(login | getTopTotalRanking | stageClear | gameset) login->(getTopTotalRanking | stageClear | gameset) getTopTotalRanking-> (getScopedTotalRanking | getTopTotalRanking | stageClear | gameset) getScopedTotalRanking->(getScopedTotalRanking | getTopTotalRanking | stageClear | gameset) stageClear->(stageClear | gameset) gameset->(getTopTotalRanking | stageClear | gameset) 57
  • 58.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知④ //ある通信の前にあり得る通信をまとめたもの S->checkLogin checkLogin->login (checkLogin | login | getTopTotalRanking | getScopedTotalRanking | gameset)->getTopTotalRanking (getTopTotalRanking | getScopedTotalRanking) ->getScopedTotalRanking (checkLogin | login | getTopTotalRanking | getScopedTotalRanking | stageClear | gameset)->stageClear (checkLogin | login | getTopTotalRanking | getScopedTotalRanking | stageClear | gameset)->gameset 58
  • 59.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知⑤ ● ここまでの変換は自動で行える ● サーバ側でこの情報を元に監視を行う ● 設計時に、この情報をレビューすること で、この例では、stageClearやgameset を無限ループで呼べることが脆弱だと 判断できたりする 59
  • 60.
    Copyright (c) AtomitechCorporation. All rights reserved. 状態遷移で異常検知⑥ ● モデル検査できる ● プロセス代数系の実装モデルを採用し たプログラミング言語と相性が良い ○ ほんとは、GoやErlangで書けるとキ レイなんじゃよ 60
  • 61.
    Copyright (c) AtomitechCorporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. ご相談、 お待ちしています! ご希望があれば詳細説明に伺います。 下記まで、ご連絡ください。 sales@atomitech.jp 61