Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
geechs inc. / geechs株式会社
4,572 views
「オルタンシア・サーガ」開発の裏側
f4samuraiが開発する「オルタンシア・サーガ-蒼の騎士団-」について、方式設計における幅広いノウハウの紹介。
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
1
/ 36
2
/ 36
Most read
3
/ 36
4
/ 36
Most read
5
/ 36
6
/ 36
Most read
7
/ 36
8
/ 36
9
/ 36
10
/ 36
11
/ 36
12
/ 36
13
/ 36
14
/ 36
15
/ 36
16
/ 36
17
/ 36
18
/ 36
19
/ 36
20
/ 36
21
/ 36
22
/ 36
23
/ 36
24
/ 36
25
/ 36
26
/ 36
27
/ 36
28
/ 36
29
/ 36
30
/ 36
31
/ 36
32
/ 36
33
/ 36
34
/ 36
35
/ 36
36
/ 36
More Related Content
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
Amazon SageMaker 推論エンドポイントを利用したアプリケーション開発
by
Amazon Web Services Japan
PDF
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
by
Shuichi Tsutsumi
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
by
Shuji Kikuchi
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
PPTX
テストコードの DRY と DAMP
by
Yusuke Kagata
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
Amazon SageMaker 推論エンドポイントを利用したアプリケーション開発
by
Amazon Web Services Japan
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
by
Shuichi Tsutsumi
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
by
Shuji Kikuchi
やはりお前らのMVCは間違っている
by
Koichi Tanaka
テストコードの DRY と DAMP
by
Yusuke Kagata
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
What's hot
PDF
PostgreSQLアンチパターン
by
Soudai Sone
PDF
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
by
Yuhei Miyazato
PPTX
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
PDF
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
by
Y Watanabe
PDF
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
by
Tier_IV
PDF
ストリーミングサービス研究グループ
by
Masaaki Nabeshima
PPTX
backlogsでもCI/CDする夢を見る
by
Takeru Maehara
PDF
良い?悪い?コードコメントの書き方
by
Shigenori Sagawa
PPTX
(2017.6.9) Neo4jの可視化ライブラリまとめ
by
Mitsutoshi Kiuchi
PDF
DevOps with Database on AWS
by
Amazon Web Services Japan
PDF
ペアプログラミング ホントのところ
by
Takuto Wada
PDF
Springを何となく使ってる人が抑えるべきポイント
by
土岐 孝平
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PPTX
オーバーエンジニアリングって何? #devsumi #devsumiA
by
Ore Product
PDF
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
by
SSII
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
PDF
Amazon SageMaker で始める機械学習
by
Amazon Web Services Japan
PDF
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
ドメイン駆動設計入門
by
増田 亨
PostgreSQLアンチパターン
by
Soudai Sone
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
by
Yuhei Miyazato
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
by
Y Watanabe
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
by
Tier_IV
ストリーミングサービス研究グループ
by
Masaaki Nabeshima
backlogsでもCI/CDする夢を見る
by
Takeru Maehara
良い?悪い?コードコメントの書き方
by
Shigenori Sagawa
(2017.6.9) Neo4jの可視化ライブラリまとめ
by
Mitsutoshi Kiuchi
DevOps with Database on AWS
by
Amazon Web Services Japan
ペアプログラミング ホントのところ
by
Takuto Wada
Springを何となく使ってる人が抑えるべきポイント
by
土岐 孝平
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
オーバーエンジニアリングって何? #devsumi #devsumiA
by
Ore Product
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
by
SSII
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
Amazon SageMaker で始める機械学習
by
Amazon Web Services Japan
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
ドメイン駆動設計 本格入門
by
増田 亨
ドメイン駆動設計入門
by
増田 亨
Recently uploaded
PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
「オルタンシア・サーガ」開発の裏側
1.
「オルタンシア・サーガ」 開発の裏側 2016/2/17 株式会社f4samurai 松野 洋希
2.
f4samuraiってこんな会社 • 2010年1月に設立 • モバイル向けゲーム・アプリケーションの開発・運営 •
2012年 株式会社セガゲームス社と業務提携 • 企画・開発・運用は弊社 • 宣伝プロモーションはセガゲームス社 2
3.
f4samurai TOP SALES 3 72013.7.29 2014.7.11 3
62015.12.10
4.
f4samurai オフィスの変遷 0 5 10 15 20 25 30 35 40 45 50 第1期(2010/12) 第2期(2011/12) 第3期(2012/12)
第4期※(2013/3) 第5期(2014/3) 第6期(2015/3) 第7期(2016/3予) 社員数 4
5.
オルタンシア・サーガ –蒼の騎士団- • 2015年4月リリース •
300万ダウンロード • 特長 • クエストの新しいゲーム性 • ギルド vs. ギルド • 50万文字を超えるストーリー • 2015年 Googleベストゲーム 5
6.
オルタンシア・サーガ 開発体制 • プランナー 6名 •
サーバエンジニア 5名 • クライアントエンジニア 4名 • フロントエンジニア 4名 • デザイナー 4名 • シナリオライター 3名 ・イラスト、サウンド、テストなどは一部外部に依頼 6
7.
オルタンシア・サーガ リリースまでのスケジュール ▲2013/12 プロジェクト開始 ▲2014/4 プロトタイプ完成 ▲2014/8
αバージョン完成 ▲2014/9 βバージョン完成 2014/11当初リリース予定→作り直し ▲ 2015/1リリース予定→作り直し ▲ 2015/4リリース ▲ 7
8.
オルタンシア・サーガ 技術要素 cocos2d-x Java/ Objective-C CentOS Java/Apache Tomcat/Jetty mem- cached Wicket Spring Framework iBATIS クライアント サーバ 8 Apache httpd MySQL
9.
技術選定のポイント • 技術的に派手なこと、新しいことはやっていない • 枯れている、メンバーのスキルセットにあった技術を選定 •
基本に忠実に作る • 5つの「新」によるリスク • 新業界 • 新顧客 • 新技術 • 新PM • 新パートナー 9
10.
基本に忠実に作る • 「方式設計」 • システムを構築する上で考慮するポイントを 事前に整理 10
11.
方式設計 • システム要件 • 性能目標
(DAU、スループット、レスポンスタイム) • 使用するプロトコル • システム拡張方式 • 想定外の負荷が発生したときにどのようにシステムを拡張するか • スケールアップ、スケールアウト • 負荷分散方式 • データ保持方式 • どのような形式でデータを持つか • どこにデータを持つか(分割するか) 11
12.
方式設計(2) • アプリケーション処理方式 • 認証 •
トランザクション • 流量制御 • チート対策 • キャッシュ方式 • セキュリティ方式 12
13.
方式設計(3) • 運用方式 • 通常運用
(リリース、メンテナンス、バックアップ、ログ保持、 問い合わせ調査、KPI) • 障害時運用 (縮退運転、リカバリ) • 監視方式 • 死活監視、リソース監視 • 障害通知 • 性能監視 • 開発方式、テスト方式 • できるだけ短いサイクルで開発者が確認できるような仕組み • テスト環境と本番環境の使い分け 13
14.
方式設計(4) • ネットワーク設計 • ハードウェア選定 •
ソフトウェア選定 • パラメタ設計 14
15.
オルタンシア・サーガ サーバ構成図 Web (iOS) DB Web (iOS)Web (iOS) WebApp WebApp WebApp LB Web (iOS) DB Web (iOS)Web (And) WebApp WebApp WebApp LB Socket Socket・・・ Cache Cache DNS Batch DNS 15 Admin
16.
オルタンシア・サーガ 方式設計 (1) • システム要件 •
ゲームの仕様上、HTTPとWebSocketを併用 • システム拡張方式 • Web, WebApp, Socket, Cacheはスケールアウト可能 • DBはスレーブのみスケールアウト可能 • マスタDBはスケールアップ or データ分散 • 負荷分散方式 • 入り口はロードバランサ • Web → WebApp は mod_proxy のロードバランス機能 • WebSocket はホスト名による負荷分散 16
17.
WebSocketサーバの分散 • ギルド vs.
ギルドのバトル中、 対戦しているギルド(チーム)同士は 同じSocketサーバに接続したい • サーバのホスト名を分けて、負荷を分散する • Socketサーバ障害発生時の動作を考慮する 17
18.
WebSocketサーバの分散(2) Client WebApp Socket1 DB BattleID ServerID 10001
1 10002 2 … … ServerName=socket2 Socket2 ws://socket2.jp/… http://web.jp/… 18 Batch 監視
19.
WebSocketサーバの分散 (障害発生時) Client WebApp Socket1 DB BattleID ServerID 10001
1 10002 1 … … ServerName=socket1 Socket2 ws://socket1.jp/… http://web.jp/… 19 Batch 監視
20.
オルタンシア・サーガ 方式設計(2) • データ保持方式 • 大事なデータはサーバ側で持つ •
マスタデータは垂直分散 • 認証方式 • トークン方式を採用し、同一ユーザ複数端末からの アクセスを制御 20
21.
複数端末を使ったチート • 同一ユーザが複数端末を用意して、 同時にアクセスすることでゲームを有利に進める 21 Client-A WebApp DB Client-B sync
22.
トークンによる制御 • アプリ起動時にトークンを発行 22 Client-A WebApp DB Client-B UserID
Token User1 tokenAAA tokenAAA
23.
トークンによる制御 (2) • 別端末でアプリを起動した時にトークンを上書き 23 Client-A WebApp
DB Client-B UserID Token User1 tokenBBB tokenAAA tokenBBB
24.
トークンによる制御 (3) • 端末から送信されたトークンと、サーバで保持している トークンが違うので認証エラー 24 Client-A WebApp
DB Client-B UserID Token User1 tokenBBB tokenAAA tokenBBB
25.
オルタンシア・サーガ 方式設計(3) • キャッシュ方式 • マスタデータはWebAppサーバ上に保持 •
ユーザデータ(の一部)はCacheサーバ上に保持 • フロントは backbone.js を使って必要なアセットの先読み 25
26.
マスタデータキャッシュ • マスタデータはほぼ更新されないので WebAppサーバでキャッシュしたい • iBATISのキャッシュは、高負荷時にスループットが 低下するバグがある •
WebAppサーバ起動時にマスタデータをDBから取得して、 WebAppサーバ上にキャッシュする仕組みを実装 26
27.
backbone.js • JavascriptでMVCを実現するフレームワーク • 必要なアセットを最初に読み込むことで、 ページ遷移をするときのもたつき感を減らす •
1イベントごと、など機能単位での採用 (イベント外のページに出ると再読込が必要) 27
28.
オルタンシア・サーガ 方式設計(4) • 通常時のログ運用・問い合わせ調査 • SmartBeatというプロダクトを使用 28
29.
SmartBeat • iOS/Androidでクラッシュが発生した場合に、 クラッシュ時のログ・端末情報などを収集する • アプリのバージョンアップ時は頻繁にチェック •
ユーザIDによる検索も可能 29
30.
オルタンシア・サーガ 方式設計(5) • 障害時の動き • Web,
WebApp, Cache, SlaveDB サーバは落ちても対策しない (落ちてもシステム全体は耐えられるよう多めにサーバを用意) • Batch/AdminはWebAppと同じ構成なので、 落ちたら他サーバを転用する • Socket サーバは前述の通り • MasterDBはMHAによる監視 30
31.
MHA for MySQL •
Master High Availability Manager and tools for MySQL • MySQLサーバの監視 • 障害発生時にはスレーブをマスタに自動昇格させる 31
32.
MHA(2) DB Master MHA 監視 db01-master DB Slave1 WebApp DB Slave2 db01-slave Name IP db01-master
192.168.10.1 db01-slave 192.168.10.2 db01-slave 192.168.10.3 32 MHA db01-slave
33.
MHA(マスタサーバ障害) DB Master MHA 監視 db01-master DB Master WebApp DB Slave db01-slave Name IP db01-master 192.168.10.2 db01-slave
192.168.10.2 db01-slave 192.168.10.3 33 MHA
34.
まとめ • 「方式設計」という観点から「オルタンシア・サーガ」の 裏側をご紹介 • 新しい技術ではなく枯れた技術の組み合わせで ゲームシステムを実現 34
35.
f4samuraiの今後 • 新規タイトルを2本開発中 • 1本はアニメ原作のIPタイトル •
1本は3Dグラフィクスを使ったオリジナルタイトル • 今まで以上のテクニカルスキルが必要なので、 引き続きチャレンジャーとして頑張ります 35
36.
ありがとうございました