Mais conteúdo relacionado Semelhante a [141004] cedec 2014 참관기 & 강연 리뷰 #1 (20) Mais de MinGeun Park (16) [141004] cedec 2014 참관기 & 강연 리뷰 #113. 인벤의 CEDEC 관련 특별 취재 기사들도 있습니다.
http://www.inven.co.kr/webzine/special/gameshow.php?gs=cedec
14. CEDEC 2014 리뷰
• 전체적인 분위기는 KGC와 매우 흡사
• 일본 게임 개발 트렌드의 특징을 보여줌
• 콘솔게임 강국답게 콘솔게임의 그래픽스 기술력은 최강
• 온라인 네트워크 기술 관련 내용은 국내보다 미흡한 수준
• 유명한 게임 시리즈들(테일즈,FF,뿌요뿌요)을 가지고 있기
때문에, 프로그래밍보다는 관련 기획적 세션이 많음.
• 유니티 내용도 유니티 소개와 입문 수준의 강연이 많음.
15. CEDEC 2014 리뷰
• 다양한 미들웨어 회사들이 존재하기때문에, 미들웨어 홍보
세션이 많음
• 오큘러스 + LEAP등을 이용한 VR, AR관련 내용이 많음
• 사운드 관련 세션이 상당히 많음
• 전체적으로 그래픽과 사운드는 매우 우수하고, 반대로
네트워크 동기화나 온라인 시스템(ex. 패치)에 대한
수준은 국내보다 미흡
16. CEDEC 2014 리뷰
• DX11, PS4, GPGPU에 의한 처리 고속화에 대한 내용이
많음.
• 그래픽스는 물리 기반 렌더링이 대세. 거의 모든 그래픽스
기술의 주요 테마는 물리 기반 렌더링
17. CEDEC 2014 강연 정리
1. Deep Down(PS4)의 그래픽스 표현의 기술 해설 – 캡콤
2. 파이날판타지14(PS4, PC)의 파일시스템과 패치 시스템 – 스퀘어
에닉스
3. 해외의 대단한 크리에이터들이 중요시하는 단 한가지(일미 양국의
디렉션 경험을 통해서 배운 많은 힌트) – 스퀘어 에닉스
4. Tales of 시리즈에서의 자동 리깅과 워크플로우 – 반다이남코
5. 소멸도시 포스트모텀 – 반년만에 멋진 게임을 릴리즈하기 위해서는-
Gree
6. “하늘과 대지와 여신의 마법”의 멀티플레이 기술(스마트폰에서
리얼타임 멀티플레이라니 무모하죠 라고 이야기 들었다) – Gree
95. Talse of 시리즈에서의
자동 리깅과 워크플로우
山本佑平
Software Architect
BANDAI NAMCO Studios Inc.
96. Tales of シリーズにおける
自動リギングとワークフロー
山本佑平
Software Architect
BANDAI NAMCO Studios Inc.
98. ABOUT ME
2007 Namco Tales Studio
社内ライブラリ作成
R&D Programmer
2012 BANDAI NAMCO Studios
社内フレームワーク作成
Software Architect
99. 関わった
タイトル
Tales of Vesperia(360/ps3)
Tales of Graces(wii/ps3)
Tales of Hearts(ds)
Tales of Abyss(3ds)
Tales of Xillia(ps3)
Tales of Xillia 2(ps3)
Pac-Man party(3ds)
Tales of Symphonia(ps3)
Tales of Zestiria(開発中)( ps3)
100. 導入
タイトル
Tales of Vesperia(360/ps3)
Tales of Graces(wii/ps3)
Tales of Hearts(ds)
Tales of Abyss(3ds)
Tales of Xillia(ps3)
Tales of Xillia 2(ps3)
Pac-Man party(3ds)
Tales of Symphonia(ps3)
Tales of Zestiria(開発中)( ps3)
116. 1Bone
• 2ジョイントからなる構成
• 先端をTrans制御
• 始端をRotate制御
命名規則
• Spine1~連番
• Neck1~連番
• Neck?->Head?
• 複数頭の場合はNeck1_1/Neck1_2
117. 2Bone
• 3ジョイントからなる構成
• 主に人間の腕などに使用
命名規則
• Arm/Forearm/Hand
• Upleg/Leg/Foot
• 複数はArm2/Forearm2/Hand2となっていく
118. 3Bone
• 4ジョイントからなる構成
• 主に4足歩行系に使用
命名規則
• Arm/Forearm/Hand/Fingerbase
• Upleg/Leg/Foot/Toebase
• 複数は
Arm2/Forearm2/Hand2/Fingerbase2
119. Chain
• 1Boneの連鎖
• ジョイント個別制御も
可能なスプラインIK
• 尻尾や触手などに使用
• 命名規則
• Tail1~連番
• Tentacle1~連番
120. 特殊用途
• Center
– 重心を表す必須要素
– 命名規則:Center_C
• Rotate
– 末端の回転のみを行う場合に使用
– 例えば手首
– 自動で必要な箇所に適用される
121. その他
• リグを入れない骨
– 命名規則から外れた名前を付ける
• もっと特殊なもの
– 基礎構成はこのリグにした上で、更に追加で手
動リグをかぶせる
140. 導入した副次的効果
• 共通言語化
• モデラー/アニメーター間の
やり取りが増えた
– 良い意味で
• 会話の文脈が変わった
– 導入前:作りやすい・操作しやすいというhowの議論
– 導入後:こういう動きをさせたいというwhatの議論
– やりたいことの本質に近づいた会話に
141. 今後の改良点
• ラベル対応
– ノード名は別の用途に使ったりもする
– 既存データへの対応が困難
• UIの改良
– どの箇所のリグなのかをもう少し分かりやすく
• 命名規則をもっとシンプルに
– 作りながらつぎはいだ部分が多数
142. さいごに
• とにかく始めて継続していく
– 継続は力なり
– 改善していけば良い
– やる前からごちゃごちゃ言う人は相手にしない
• なるべくシンプルに
– 破綻しにくい
– 改善しやすい
• 仲間を作る
– 1人じゃ大きなものは作れない
– 保守し続けられない
145. 소멸도시 포스트모텀
- 반년만에 멋진 게임을 릴리즈하기 위해서는 -
WRIGHT FLYER STUDIOS
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
147. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
自己紹介
• 澤智明(33歳)
– 消滅都市プロデューサー
• 経歴
– 野村総合研究所に3年勤務(SE)
– 2006年に社員20名くらいの頃にグリーJOIN
• インターネットサービスのエンジニア, プロデューサー
• ゲームプログラマー, ディレクター, プロデューサー
151. 消滅都市ご紹介
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 現代を舞台にした
• おかげさまで1ヶ月で100万DL
• まもなく新章追加, イベント追加
153. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
開発体制
プロデューサー
1名
ディレクター
1名
PM
1名
クライアント
プログラマー
4名
サーバー
プログラマー
3名
アート
4名
テクニカル
アート
1名
合計17名
ゲーム
デザイナー
2名
154. スケジュール
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
2013年
10月
2014年
11月12月1月2月3月4月5月
プロト開
発
α開発
- 主要機能完成-
β開発
- ひととおり
完成-
全社
公開,
改善
QA
G
O
A
L
計7ヶ月
アジャイルQA
165. 2.チームワークを高める
• 企画立案時にメンバー全員で納得する
まで話し合って決めた
– 企画だけでなく、プログラマーもアートも
謎と、ちょっとした
恋があると熱中する
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
舞台が現代の作品は
面白い
簡単操作の
アクションが好き
167. 2.チームワークを高める
• Vision/夢を語った、議論した
– ちょっと照れくさかったけど。。
– 30枚の資料にまとめた
– 2時間くらいひたすら語り合った
チームの全員が消滅都市を愛し、良くした
いと思うチームにしたい
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
こういうゲームに
したい
多くのお客様に遊んでいただきたい。
家族に遊んでいただきたい。
半年後こうなってたい
168. 2.チームワークを高める
• SCRUMベースの開発で毎週結束を高めた
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
– 担当チームによる見積もり
– 毎週の振り返り
• 建設的なだめ出しをする事も
– 朝会、週次のセレモニー
• プロデューサーからQAまで全員参加
• 密な情報共有
176. 2.チームワークを高める
• 結果2:QAから仕様の提案
ずっとQAやってて思ったんですが、
このステージこうした方が面白いと
思いました!
レベルデザイナーとしてジョインしてステージを作ることに!
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
177. 2.チームワークを高める
• 結果3:公式Twitterを勝手にメンバーが運用
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
アカウントとりあえず作ったけど、
公式Twitterの運用は、
このマンパワーでは無理だ。
運用はじめちゃいました!
アイコンも作りました!
3ヶ月で約6,000ツイートいきました!
181. • チームワークを高める!
– 良いゲームは良いチームでないと産み出せない
– とにかく労力をいとわない。何でもやる。
– 結果、全員が自律的に動く、良い・早いチームに
• プログラマーが自ら仕様を改善、
QAが仕様を提案するくらいに
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
182. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
半年で
素敵なゲームを
作るには
チームワークを
高める
183. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
消滅都市のつくり方
(アート編)
- 半年で素敵なゲームをリリースできた5の理由-
184. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 濱坂真一郎(43歳)
– リードデザイナー
– 株式会社スクウェア・エニックス
(2~3回程就職⇔退職)
• FF6
• クロノトリガー
• FF10
• フロントミッションシリーズ
• ファイナルファンタジー零式
• ……etc
– 2011年7月にグリー株式会社に転職
• ……etc
• 絶対防衛レヴィアタン
• 消滅都市
自己紹介
185. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• アートディレクション
– アートスタッフ(2~7名)の進捗とタスク管理
– アセット管理
– 内製・外製各種素材のクオリティ管理
• UIデザイン
– 詳細は渡部晋司パートにて
• キャラクターデザイン
– 詳細は後述
消滅都市での業務内容
212. まず、バイクを描く
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
そっけない表情の
ヒロイン
それに軽くイライラ
している主人公
キャラコンペ時の提出作品
215. プラモデルを使った
ジオラマの制作
1/35 ドイツIII号戦車L型ロンメル野戦指揮セット(人形6体付き)
画像は株式会社タミヤの公式サイトから引用
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
222. • しんどいリードデザイナーにならない
– 美味しい仕事を不健全に独占しない
• コンペには戦略を立てて挑む
– 採用されるコツは適度なハッタリ?
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
223. チームワークを
高める
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
半年で
素敵なゲームを
作るには
美味しい仕事を
独占しない!!
225. WHO ARE YOU?
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 下田翔大(31歳)
– ディレクター
– 株式会社スクウェア・エニッ
クスに9年勤務
• AI
• レベルデザイン
• シナリオテキスト
– その後グリー株式会社に転職
• 消滅都市においてディレクター
を務める
226. 消滅都市での業務内容は?
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• ディレクション
• ゲームデザイン
• レベルデザイン
– 初期設計
– ステージデータ作成
– エネミーデータ作成(攻撃パターンなど)
• シナリオ
– シナリオテキスト
– 演出
229. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
コンセプト
↓
ゲームデザインと
ディレクション
↓
レベルデザインと
シナリオプロット
↓
データ
230. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
コンセプト
↓
ゲームデザインと
ディレクション
↓
レベルデザインと
シナリオプロット
↓
データ
ものづくりの
初期衝動を言語化する
コンセプトを体現する
“感情”を明確にする
“感情”の流れを作る
245. ゲームデザインの
コアは
HPが減って
”ヤバイ”という感情
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
247. “なんとかしなきゃ!” という切迫感を最大化
• ピンチをきっちり認識させる仕組み
– 敵の攻撃時はアクションを止める
• ピンチをたくさん用意する
– ”HPをギリギリまで削って生かす”バランス設計
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
250. 消滅都市の仕様書は以下のみ
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 1. 画面レイアウト
– 他社製品のパーツを組み合わせてつくる
• 2. プレイヤーができること
– シチュエーションを明確にする
• 3. どうやってデータを作りたいか
251. 大切なのは”感情”
• 例:下スワイプで下の段に降りる
– 操作受付時間や反応タイミングを語るより
– この操作でどういうピンチを乗り切り、どう
いう感情の流れを生みたいかを伝える
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
255. シナリオはミッドポイント理論で構成
少年を倒し
ロストへ
少年と再戦
謎の男女登場
謎の女を倒す
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
救出
仲間を集める
少年の
正体判明
敵の存在が
徐々に明らかに
ミッド
ポイント
序破急+序破急
謎の男を倒す
父の意識と対峙
ラスボスとの戦い
256. ゲーム体験も全く同じカーブに乗せる
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
初バトル
チュートリアル
ユニット強化で
乗り越える山
ミッド
ポイント
序破急+序破急
さらに
進化でHPを
増やす
進化と
リーダースキルで
越える山
DPSを
一定以上に
上げる
257. シナリオと
ゲーム体験を
密接に
リンクさせつつ
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
259. 例: 登場人物を”機能”に割りふる
タマシイガチャ特別クエスト
納期の関係で
削減した
システム
Twitter担当
@shoumetsutoshi
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
仲間を集めるというシナリオ体験と
機能解放というゲーム体験を
リンクさせる
273. • コンセプトを明確にする
– 迷いなく進むためにも初期衝動を深く見つめる
• コアの感情にフォーカスしづつける
– 感情にフォーカスしたディレクションが大事
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
274. チームワークを
高める
美味しい仕事を
独占しない!!
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
半年で
素敵なゲームを
作るには
コンセプトと感情に
フォーカスする
275. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
消滅都市のつくり方
(クライアント開発編)
- 半年で素敵なゲームをリリースできた5の理由-
276. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 渡部晋司
自己紹介
– リードエンジニア
• 経歴
– 会津大学コンピュータ理工学部性能評価学講座
– 任天堂株式会社(2007年~)
– グリー株式会社(2012年~)
• GREE Platform事業
• 消滅都市
277. 消滅都市のクライアント開発
• クライアントプログラマ4名
– 増員要望実らず…
– 終盤にサーバと掛け持ちで1名追加
• 半年後のリリースが絶対
– ギャグだと思ったがマジだった
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
279. 消滅都市のプロトタイプ開発
• 人数、期日的に3Dゲームは厳しそう
– 2Dゲームの企画にしてもらうようにした
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• ゲーム基盤
– Cocos2d-x Ver3.0.0 α → Ver3.0.0 RC
– LWF for Cocos2d-x
• swf (Flash) を再生する
– 開発言語C++11
280. 消滅都市のプロトタイプ開発
• がっちり決めないで開発開始
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
– ラフな仕様書
– 画面イメージ
• プログラマで適当に作る
– アクション部分1名/ 裏の戦闘部分1名
– プロトタイプ開始一週間後から結合実験
• プロトタイプはスタンドアロン
– 本番ではサーバが持つべきデータも全部抱く
281. 消滅都市のプロトタイプ開発
• 実働ゲームを基に企画の練り込み
– 仕様書が都度並行で作られた
– 実働するゲームがすべてだった
– ゲームシステム等もこれをベースに検討
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 週一回でプレイ会
– 全員手元で遊んでみる
– 課題出し
– 職種を超えてみんなで意見を出しあった
286. ポストモーテム
• 実機ベースによる議論は良かった
– 各人の想像によって議論が進むことがない
– 触り心地等が机上の空論では無い
– 仕様書が無い/ 少ない状態でも問題なかった
• 環境を維持するのが大変だった
– サーバとの開発進捗ずれ
– 初期化シーケンスのバグで起動しない
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
287. ポストモーテム
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 常時動作できるように
– クラッシュログは最優先対応
– サーバ開発は極力手元で行えるように
• チーム内の周知
– 開発環境ダウンタイムの連絡
– 前もって連絡することで別作業をしてもらう
• スゴイ仕組みを用意したわけではない
– 機械的ではなく人間的な温もり
289. 消滅都市の開発環境
• Cocos2d-xはツールを含まない
• 開発環境のバランスが重要に
– 全てのセクションでリソース不足
– 全体の工期が短い
– 投資に見合ったリターンがないと厳しい
• 各個人の能力が最大限活かせるように
– 今までの経験/ バックグランド
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
290. 消滅都市の開発環境
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• UI作成の環境整備
– ゲームの画面数が多い
– UI制作スピードがプロジェクトの成否を左右
• Cocos2d-x向けのUIツール
– Cocos Builder
– Cocos Studio (旧称: CocoStudio)
– などなど
291. 消滅都市の開発環境
• 新しいツールを覚えるのは負担…
– そもそも画面デザインはPhotoshopで作る
– 作ったのをツール上で再配置?するの?え?
• 最初からPhotoshopで作れればいい
– JSXでレイヤー構造をエクスポートする
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
295. 消滅都市の開発環境
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• UI系アニメーション
– Photoshopで全体的な画面構成は出来た
– でもアニメーション付けは無理
• プログラマが適当につけた
– 雰囲気で
– 長さとか距離とかカーブとか適当に空気読んで
– あまりにも酷い時はダメだししてもらう
296. ポストモーテム
• デザイナの反応は良好
– 見た目どおりに画面が作れた
– 使い慣れてるツールで制作ができた
• アニメーション適当でなんとかなった
– デザイナさんにあまり怒られなかった
• 実機と若干見た目が異なる
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
– フォント周りの箇所
– (仕様ということに…)
297. 消滅都市の開発環境
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• ゲームデータ制作
– ゲームバランスに直結
– データ制作者が入力しやすいように
• Excelでデータ管理
– 機能の豊富さ
– データ制作者が慣れていた
299. 消滅都市の開発環境
• ツールでExcelの内容を細かく検証
– 設定画像ファイルの存在しているか
– ID重複していないか
– 必須設定パラメータが設定されているか
– クリア時報酬タマシイの最大レベル
– などなど…
• ミスを事前に検知して止める
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
303. ポストモーテム
• データ検証機能の充実が良かった
– データ制作者の安心につながる
– データ起因の問題に時間を割かなかった
– 人に怒られるよりも、機械に怒られたい
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• データ共有が難しい
– Excelの共有ブック機能では使えない機能もある
– 作業者ごとにExcelファイルを分けた
304. 消滅都市の開発環境
• ゲームステージを作りやすくする
– アクションゲームの面白さに直結する
• ステージエディタは独自開発
– ゲーム仕様はどう変わるか分からない
– ツールの都合でゲームの仕様を落としたくない
– 実は裏で壮大な計画があった(が、中止)
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
306. ポストモーテム
• ゲーム仕様追加/ 変更に柔軟に対応
– ツール側も機能追加することで対処できた
• 専用ツールなので分かりやすい
– 新しく配属された人でもすぐ使える
– QAチームとのデータ共有
• 機能追加の要望に対応しきれない
– 細かいところまでやり切れていない
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
308. クライアント開発
• とにかく人数/ 時間が足りなかった
• お互いを信じてとにかく並行作業
– 技術ドキュメント無し
– コードレビュー無し
– 他人の担当箇所も勝手に直す
– 空気読んで適当に何とかする
「修羅の国」と呼ばれる
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
310. ポストモーテム
• 納期に間に合った(結果論)
– かなり危険な綱渡りだった
– 誰か一人でも交通事故にでも遭ったらアウト
• コードがカオスに(お察し)
– 運用する製品でこんなことしちゃダメだった
– 辛くなってきたので全体を整理中(今現状)
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 属人性が高すぎる
– リリース後にジョブローテーションを実施
– ドキュメントの充実
312. パフォーマンス関連
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• スマホゲームの宿命
– いろんな端末がある
– いろんなGPUがある
– 60FPS出てても、さらに軽く(バッテリ)
• 初期リリースギリギリまで調整
– 危険な変更も多かった
– 結果論だけど、入れてよかった
314. パフォーマンス関連
• 調べてみると残念な箇所が見つかった
– 見えない透明レイヤーが描画されてる…
– 頻繁に作成削除を繰り返してた…
– 毎回オブジェクトのデシリアライズが…
– 見えてないLWF(アニメーション)が動いてた…
– ゲーム中にディスクアクセスしてた…
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
315. パフォーマンス関連
• パーティクルの使用をやめた
– Cocos2d-xのパーティクルはCPU負荷が結構
高かった
– LWFアニメーションで代用(表現の変更)
• オーバードローを回避
– 不要なピクセルの上書きをしない
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• glClear呼ばない
– Cocos2d-xを改造
– どうせ全画面が塗りつぶされるゲーム
316. パフォーマンス関連
• SpriteBatchNode結局速い
– Ver3系から自動バッチレンダリング機能
– 分かっているものは事前にまとめておく
• フラグメントシェーダを変更
– 無駄な乗算演算を削除
– 一部GPUで効果が高かった
• iPhone等ではほぼ変化無し
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
318. • 個々の能力が最大限活かせる開発現場
– 開発環境の設計
– 開発手法
– そして、お互いを信じること
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 役割の明確化
– 人にやってもらって嬉しい事は人に
– 怒られるのは機械に
319. チームワークを
高める
美味しい仕事を
独占しない!!
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
半年で
素敵なゲームを
作るには
コンセプトと感情に
フォーカスする
個々の能力を
最大限引き出す
320. Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
消滅都市のつくり方
(サーバ開発編)
- 半年で素敵なゲームをリリースできた5の理由-
321. 名前:吉川毅
役割:エンジニアマネー
ジャ
• グリーの古参です(5年)
• Webベースのソシャゲを
沢山作ってきた
– 踊り子クリノッペ(PG)
– ハコニワ(PG)
– ガンダムマスターズ(PL)
– 絶対防衛レヴィアタン(PD)
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
自己紹介
322. 消滅都市のサーバーインフラ
• チャレンジとしてAWS採用
– 構成管理の自動化の実現
– オートスケール・オートヒーリング
– Blue&Greenデプロイ
• ピーク10万DAU想定で見積もり
外部コンサル会社を入れつつ、最新
トレンドの編成を採用した
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
323. なぜAWS採用に至ったか
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
• 安い・早い・ウマい!
– 人的リソースが少なくても運用可能
– サーバ費用のコントロールが容易
• 何が当たるか分からない市場に対してス
モールスタートできる!
• プロモーションで突発的に人が増えると
いう状況にも対応できる!
要件を叶えてくれる!是非チャレンジし
たい
324. リリースを迎えて
• オープン数日で想定ピークを突破
• 数々の想定外の問題発生
– 負荷検証時と比較して性能が出ない
– デプロイ時の切り替えで障害
– ロードバランサーの挙動が不安定
– 無停止でスケールアウト/アップできない
対応方法わからず、とりあえずの停止メ
ンテナンスを繰り返すことに
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
325. 結局どうなったのか
• 費用が爆増し、制御不可能、運用コスト
が極限まで高まった
– 性能が出ないので、最終的に一番高いインスタン
スに買い替えた
– オートスケールは実現できず手運用
– デプロイが致命的に不安定でエンジニアが付きき
り、施策運用が柔軟にできなかった
自社インフラ(オンプレミス)に全面移
行することを決断した
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
326. AWSをどう使えばよかったか
• 前提としてAWS自体は良い製品だが、圧
倒的な検証不足だった
– ハードウェアの集合としての仮想化技術であるこ
とという当たり前の前提を常に疑うべきだった
– 仮想化されたブラックボックスを扱うので、トラ
ブル発生の際の運用リスクを重視すべきだった
– 特性を理解したうえで最適なソリューション・
ツールを取捨選択し、徹底検証するべきだった
AWSに夢を見ず、自分の頭で考えて慎重
に導入しましょう
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
328. • (手段を選ばなければ)新しいチャレ
ンジは半年でもできる
– 一応爆増するDAUに対応はできましたが
• でもやっぱり新しいことをやるときは
検証に時間を割かないと失敗します
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
329. チームワークを
高める
美味しい仕事を
独占しない!!
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
半年で
新しいことにチャレ
ンジしてみる
素敵なゲームを
作るには
コンセプトと感情に
フォーカスする
個々の能力を
最大限引き出す
331. • 消滅都市は様々なメンバーの工夫と苦労と失
敗から生まれました
• これからもどんどん改善して多くのお客様に
楽しんでいただけるゲームにしていきます!
• 一緒に楽しいゲームを作る仲間を
絶賛募集中です!
http://jobs.gree.net/jp/ja/
Copyright © 2014 Wright Flyer Studios, Inc. All Right Reserved.
まとめ
333. 스마트폰에서 리얼타임 멀티플레이라니
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
무모하죠
라고 이야기 들었다
하늘과 대지와 여신의 마법의
멀티플레이 기술
338. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
デモ
マルチプレイのデモ
やります!
にゃー
Special thanks to ソラナさん、松崎さんin 六本木
340. Client Server
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
システム概要
Real-time Server
(独自実装, C++)
API Server
(Apache, PHP)
DB
IOS
Android
OSX
(Unity)
battle / lobby
building / others
341. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
マルチバトル
Client
Real-time
Client Server
Client
Client
最大4クライアント/ バトル
342. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
Client
マルチバトルをプラグイン
Client
Plugin Real-time
Server
Plugin
Plugin
Client
Plugin
Client
Plugin 最大5プラグイン/ バトル
343. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
ゲームのAI
プラグイン
- フィールドの管理
- キャラクターの動作
- キャラクター最大255 x 4 players + 防衛施設
マルチプラットフォーム
- C++
- OSX / IOS / Android / Debian(Server, Simulator)
344. クライアントのプラグイン
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
ユーザ入力
Plugin
Object
Buffer
Projectile
Buffer View
画面出力
バトル結果
345. サーバのプラグイン
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
バトル結果
Plugin
Object
Buffer
Projectile
Buffer
DB
ユーザ入力
346. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
プラグインAPI
- extern C
- 構造体のアライメントに注意
- 可変長配列を含む構造体は×
- C++からC#へコールバックも可
- 共用バッファはC# managed
349. Real-time Server のプラグインの結果を保存
Client
Plugin Real-time
Server
Plugin
DB
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
Client
Plugin
Client
Plugin
Client
Plugin
350. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
実装するよ
開発中の苦労。。。
351. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
いろいろなコンパイラ
• LLVM 5.1
• android-ndk-r9
• gcc 4.4.5
マルチプラットフォーム
353. Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
ある日のQA
100%クリア!やったーえッ!?98%?
354. 結果不一致問題
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
実行順序に注意!
環境により変わるコードに注意!
外部環境に注意!
マルチスレッド実行に注意!
355. 実行順序に注意
ポインターのsetをイテレートしない
// NG
typedef std::set<MapObjectBase*> MapObjects;
for (MapObjects::iterator i = map_objects_.begin(); i != map_objects_.end(); ++i)
{
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
// do something
}
// OK
typedef std::vector<MapObjectBase*> MapObjects;
実行するたびに結果が異なる
356. 実行順序に注意
呼び出しパラメータ内で乱数を取得しない
// NG
Vector3f position(start_pos_.x + Rand(0, kRelaseSparse * 10.0f) / 10.0f,
start_pos_.y + Rand(0, kRelaseSparse * 10.0f) / 10.0f,
start_pos_.z);
// OK
const float offset_x = Rand(0, kRelaseSparse * 10.0f) / 10.0f;
const float offset_y = Rand(0, kRelaseSparse * 10.0f) / 10.0f;
Vector3f position(start_pos_.x + offset_x,
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
start_pos_.y + offset_y,
start_pos_.z);
実行環境により結果が異なる
357. 環境により変わるコードに注意
実行環境によって乱数を取得しない
// NG
if (sound_callback_ != NULL && ShouldSound()) {
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
sound_callback_(kAttackSound);
}
bool ShouldSound() {
return Rand(0, 1) == 0; // 50%
}
サーバとクライアントで結果が異なる
358. 外部環境に注意
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
バッファサイズが異なる
弾を管理するバッファサイズが異なり、
遠距離攻撃ユニットの弾数がゼロ...。
マスターデータが異なる(リリース前日)
検証用にスピード10倍…。
サーバとクライアントで結果が異なる
360. プラグインまとめ
- マルチプラットフォーム
- サーバの結果を保存
- 実行結果が異なると大問題
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
362. COMMANDS RESULTS
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
CLIENT
REAL-TIME
SERVER
Plugin
バトルの処理フロー。
DB
Plugin
RESULTS
COMMANDS
COMMANDS
(独自プロトコルon TCP)
RESULTS
VIEW
RESULTS
366. マルチプレイバトルの要件
コマンドが同期する間もバトルは進む。
(AIによる進行)
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
CLIENT A
REAL-TIME
SERVER
I PUT
CLIENT A PUT
Plugin
CLIENT B
Plugin
Plugin
OK!
FRAME 300
FRAME 310
370. マルチプレイバトルのコマンド先延ばし処理
コマンドを未来に先延ばしする。
(その未来に到達するまでの遅延は許容)
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
CLIENT A
REAL-TIME
SERVER
FRAME 300
I PUT
CLIENT A PUT
Plugin
CLIENT B
Plugin
Plugin
FRAME 310
OK!
YOU PUT at FRAME 320
at FRAME 320
Hmmm.
320 will be
OK.
OK!
373. マルチプレイバトルのコマンド先延ばし処理
推定最悪遅延(T) =
当該片道遅延(T1) +直近最悪片道遅延(T2)
T2 T
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
REAL-TIME
SERVER
CLIENT A
T1
CLIENT B
375. マルチプレイバトルのコマンド先延ばし処理
先延ばし時間(T) =
推定最悪遅延(T1 + T2) + 許容変化量(T3)
T2 T
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
REAL-TIME
SERVER
CLIENT A
T1
CLIENT B
T3
385. ご清聴ありがとうございます
TenMeGa !
50クリスタルがもらえます。
てんめがを遊んでください!
Copyright © 2014 Wright Flyer Studios, Inc. All Rights Reserved.
1103-CEDECTMG
386. 용과 같이 유신 : 제작 사례
진화하는 이벤트 제작의
운용기법과 크로스플랫폼으로의
새로운 도전
SEGA