6. @Lexues inc. All rights reserved.6
GAMEPACKシリーズ
• 主に富士通FMVシリーズへのバンドルソフトとして、Windows95以来10年以上続けて組み込み製
品として採用された。
(C) DATT JAPAN INC
※ダットジャパン株式会社より許諾を得て掲載しております。
7. @Lexues inc. All rights reserved.7
やる雀、ゴルフやり隊シリーズ
• 2001年に世界初の携帯端末向け4人対戦麻雀アプリ「やる雀」を松下電器産業と共同開発。
• 翌年には毎週新しいゴルフコースが追加される「ゴルフやり隊」もS-inした。
※ダットジャパン株式会社より許諾を得て掲載しております。
8. @Lexues inc. All rights reserved.8
ゲームパックMOBシリーズ
• PC向け「GAMEPACK」シリーズのモバイル端末向けバージョンを開発。
• Bluetooth対戦、HTTP通信によるネット対戦(1stバージョン)などに対応し、対戦機能を充実。
• 2年後にはUDP通信による高速ネット対戦(2ndバージョン)に対応した。
1stバージョン アプリ本数:7本
対戦アプリ:4本
2ndバージョン アプリ本数:15本
対戦アプリ:11本
※ダットジャパン株式会社より許諾を得て掲載しております。
9. @Lexues inc. All rights reserved.9
私が開発してきた
ネット対戦ゲーム
について解説していきたいと思います
14. @Lexues inc. All rights reserved.14
携帯電話の利用シーンを考えると、
電車の乗り降りなど10秒以下の短時間で
さくっと遊べるアプリの方が流行る。
対戦相手の手番を待ってプレイする人は
少ないだろうと予測していた。
15. @Lexues inc. All rights reserved.15
開発期間:アプリ7本(うち対戦4本)
プログラマ:4名×2人月
ネット対戦のサーバ側の実装期間:せいぜい0.5人月
他にアプリそのものの実装時間や、Bluetooth対戦の
実装も必要だった。
(課金処理やランキング、ユーザー管理も標準装備)
「開発リソース?そんなものはない!」
16. @Lexues inc. All rights reserved.16
mobile client
users
Internet
web server
web server
web server
database
database
1stバージョン構成図
サーバサイド:Javaのみ
通信:HTTPのみ
レスポンス:200ms〜300ms
1秒あたりの総処理量:せいぜい200ms〜300ms
17. @Lexues inc. All rights reserved.17
Internet
ソフトウェア構成
シングルプレイ
ネット対戦対応
ユーザー情報
ランキング
マッチング
ネット対戦
サーバアプリ
18. @Lexues inc. All rights reserved.18
当初は予想通り、誰も遊ばなかった。。。
※同時対戦数=多くて1〜2
21. @Lexues inc. All rights reserved.21
「超美麗ディスプレイ」などとメーカーが持ち上げる
「VGAアプリコーナー」ができる
ただし、VRAM容量は変わらず、実質1/4
当然「将棋」も余裕でメモリ不足。。。
画像をテトリスして詰め込みました。
↓
22. @Lexues inc. All rights reserved.22
同時対戦数は20〜30に
1秒あたりの総処理量:4000ms〜6000ms
ピーク時には毎日アラート
※ちなみに携帯アプリのNET対戦アクティブ率は1%以下。
つまり月額300円のサービスで2000名ほどの新規ユーザーを獲得した計算になります。
24. @Lexues inc. All rights reserved.24
「意外とネット対戦て遊ぶ人いるんだな」
加えてネット対戦利用者は
サービス継続率がめちゃくちゃ高い
↓
では力を入れて開発しましょう
25. @Lexues inc. All rights reserved.25
というわけで
開発コード:NET-ZERO
1ms以下(0ms)のレイテンシを
目標にして開発しました
26. @Lexues inc. All rights reserved.26
mobile client
users
Internet
web server
web server
web server
database
database
1stバージョン構成図@おさらい
サーバサイド:Javaのみ
通信:HTTPのみ
レスポンス:200ms〜300ms
1秒あたりの総処理量:6秒(30名対戦時)
27. @Lexues inc. All rights reserved.27
mobile client
users
Internet
vs server
web server
web server
database
database
2ndバージョン構成図
サーバサイド:Java + C言語(対戦サーバはフルC言語)
通信:HTTP+UDP
レスポンス:0ms(測定不能)
1秒あたりの総処理量:50ns(50名対戦時)
インメモリDB(10秒に1回DBへ書き込み)、オンCPUキャッシュリングバッファ
28. @Lexues inc. All rights reserved.28
Internet
ソフトウェア構成@おさらい
シングルプレイ
ネット対戦対応
ユーザー情報
ランキング
マッチング
ネット対戦
サーバアプリ
29. @Lexues inc. All rights reserved.29
Internet
ソフトウェア構成 2ndバージョン
シングルプレイ
ネット対戦対応
ユーザー情報
サーバアプリ
その他
ランキング
マッチング
ネット対戦
37. @Lexues inc. All rights reserved.37
CloudFront
写真
CloudWatch
Cognito IAM Role
AWSサービスへの
認証情報取得
S3
期限付きURL
Dynamo
Mobile
Platform
トークン登録
メッセージ送信要求
SNS
Lambda
CDN
Xamarin
Mobile
Client
User
Route 53
Amazon API
Gateway
超シンプル
38. @Lexues inc. All rights reserved.38
1stバージョン
リスクは負いたくないですね。
(セコいのは相変わらずです)
39. @Lexues inc. All rights reserved.39
・アプリ側は通信できなくても動作するように実装。
・Dynamoは主キーとrangeキーでデータ引っ張ってきて返すだけ。
・ユーザー固有のデータでもないので問題出たら削除可能。
超スモールスタート。
40. @Lexues inc. All rights reserved.40
・費用を見積もりやすくなった。Lambdaって課金されんの?w
・Dynamoって大して安くないね。書き込みスループットが5倍て。
・Dynamoはユーザーデータであまり編集されないものを入れるべき。
・自動パーティション便利。
・ALTER_TABLEいらないのも便利。メンテいらず。
・メンテ告知を関係者と協議するコストを考えると安くなる?
・Lambdaのレスポンスは150ms〜300ms程度
・マシンに優しく、人に(設計に)厳しいDynamoさん。多少とっつきにくい
・RDSよりは低レイヤー、低レベルなソリューション
・スループットで簡単にパフォーマンスをUP/DOWN。耐障害性が高い。
・テーブルごとにスループット設定しなければならないのは、ちと面倒
成果
42. @Lexues inc. All rights reserved.42
1stバージョン:6000ms (30名)
先のネット対戦との比較
vs server
web server
Lambda
2ndバージョン:50ns (50名)
Lambda:150ms〜300ms
ソフトウェアは違いますし、本来単純比較は出来ませんので、
あくまでお遊び程度でお考えくださいm(_ _ )m
※128MB時。メモリ増やすと速くなることも。
44. @Lexues inc. All rights reserved.44
1stバージョン:300秒 (1000名)
1000人来たら?
vs server
web server
Lambda × 1000
2ndバージョン:1us (1000名)
Lambda:150ms〜300ms (1000名)
※Lambdaは1000インスタンスまでオートスケール
※なので1000名来ても処理時間は変わらず
45. @Lexues inc. All rights reserved.45
Lambda、恐るるに足らず!
(言いたかっただけ)
真面目な話、FPSのような即応性を求められるゲームは無かったので、サーバ内の処理時間が
150ms(Lambda)でも、1us(2ndバージョン)でも、ユーザー体験としてはさほどかわらないです。
46. @Lexues inc. All rights reserved.46
1stバージョン
耐障害性
vs server
web server
Lambda × 1000
2ndバージョン
Lambda
1000名来られると、そもそも動かない。
アラート鳴り続ける。
サーバの不調によりときどき落ちる。
(お客様にお詫びのコイン配布)
※実際にLinuxの不具合やハードの不調と思われる現
象で落ちたことが何度かあった。
300秒@1000名
1us@1000名
150ms@1000名
基本落ちない。
(ソフト的な不具合がないこと前提ですが。)
※落ちても1/1000の問題のため、サービス全体へ
の影響は少ない。ユーザーからすると通信エラーと
なるだけで、リトライすれば済む。
48. @Lexues inc. All rights reserved.48
CloudFront
写真
CloudWatch
Cognito IAM Role
AWSサービスへの
認証情報取得
S3
期限付きURL
Dynamo
Mobile
Platform
トークン登録
メッセージ送信要求
SNS
Lambda
CDN
ELB EC2
SES
SQS
Kinesis
Xamarin
RDS
Redshift
Mobile
Client
User
Route 53
ElastiCache
Amazon API
Gateway
将来的にはこれくらい。