SlideShare a Scribd company logo
1 of 45
Download to read offline
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Wright Flyer Studios部 西田綾佑
Cocos2d-xを用いた
"LINE タワーライジング" の開発事例
GREE GameDevelopers' Meetup 01
#greegdm01
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 西田綾佑 (にしだ りょうすけ)
• グリー株式会社 Wright Flyer Studio部
• クライアントリード(エンジニア)
• @hosi_mo
• 塔コード : 4M9EVCBK
• 経歴
• 東京大学大学院情報理工学系研究科 修了
• グリー株式会社(2014年~)
自己紹介
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
ゲーム紹介
配信日 : 2015/6/23
ジャンル : RPG、アドベンチャー
プラットフォーム : iOS / Android
おかげさまで事前登録43万人
▼塔はつんでも、人生つむな
▼頭脳系ダンジョンRPG
▼方向音痴の作者が作った、
新しいスタイルのダンジョン探検
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
実はDungeon Flickerがベースとなった
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
“タワーライジング” リリースまでの開発体制
プロデューサー
1名
クライアントプログラマ
4名
サーバプログラマ
3名
アート
2名
ディレクター(原作)
1名
ゲームデザイナー
2名
PM
3名 16名
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
全体スケジュール(14ヶ月)
2015年
3月~ ダンジョンフリッカー公開
2014年
4月~ α開発 10月~ β開発
β開発 ~1月
1月~ LINE連携
4~6月 チュートリアル改善
6月 GA
社内リリース 社内リリース
11月〜ベンダーテスト
ベンダーテスト ~4月
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Cocos2d-x 3.2
• コーディング環境
• C++ 11
• Mac + Xcode
• 主にiOSの実機開発(手触りを重視)
• Android
• 動作確認 Android 2.3~ (動作保証は現状4.0)
• なにか起きたらlog catを眺めてスレッドを感じる
開発環境
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• libdispatch
• 並列化したい処理だけキューに投げられて便利
• Cricket Audio
• サウンドの再生。安定してる。
• 他プロジェクト(Cocos2d-x)で実績あり
• Jenkins
• 毎日自動でビルドを作って社内チャットに共有
• Hockey App
• ビルド配布
• クラッシュログ収集
要素技術
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
タワーライジングの開発
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Cocos2d-xで作り直したい
• ダンジョンフリッカーはAdobe Air
• 画面数が少ない
• 複雑な画面が少ない
• 社内ツール : レイアウトローダ(psd -> Cocos2d-x) を使うほどでもない
• 簡素な演出が好まれた
• LWFを使うほどではない
• 当時 : (送りバントと呼ばれたプロジェクト)
• そもそものアサインが少ない(さらにFlashアニメータ自体が社内に少ない)
開発初期(2014年春~夏)
2014年3月にダンジョンフリッカーをリリース
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• UI配置 : エンジニアが頑張る
• UIアニメーション : エンジニアが頑張る
• 演出 : エンジニアが頑張る
結果
oh. . . .
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
アサインされたエンジニアが面食らう
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
UI配置
おわかりいただけるだろうか?
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
タワーライジングは町工場だから
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• UI
• コードに座標打ってもなんとかなる..かも?
• 演出
• runAction()も、Easingもあるじゃないか
• パペットアニメーションの実現は…
開発初期
エンジニアから職人へのジョブチェンジ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
アニメーション
安心してください、書いてますよ
Avatar.cpp
1200行くらい
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なんとかなった理由
①画面がシンプル
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なぜその①
画面の仕様がシンプル
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なぜその①
画面の仕様がシンプル
• すべての画面を同一のコンポーネントでつくる
• アニメーションが共通化できる
• SEが共通化できる
• 基本的に9sliceで作りきれる範囲の装飾
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なんとかなった理由
②仕様書もシンプル
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なぜその②
一枚絵とにらめっこして作り上げられる
• 仕様書が画像一枚(+注釈)
• 位置もこれがマスター
究極的には
エンジニアがこの一枚絵を完コピすれば良い
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なんとかなった理由
③Flashで動いている
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Flashでmockを作ってくれた♥
• ソース見てC++に書き換える
• ASのBetweenライクなWrapperをC++で実装
なぜその③
新規のこまかい演出の実装
tween = BetweenAS3.parallel(
BetweenAS3.tween(part.Finger, {y:range * -0.5}, {y:range * 0.5}, 0.6, Quad.easeInOut),
BetweenAS3.tween(part.Gesture, {y:range * -0.5}, {y:range * 0.5}, 0.6, Quad.easeInOut),
BetweenAS3.tween(part.Gesture, {scaleY:2}, {scaleX:0}, 0.6, Quad.easeInOut)
);
anim = Sequence::create(Spawn::create(Between::to(finger, "y:200", 0.7, Easing::QuadInOut),
Between::to(gesture, "y:200", 0.7, Easing::QuadInOut),
Between::to(gesture, "scaleX:2,scaleY:2", 0.7, Easing::QuadInOut),
NULL),
NULL);
ActionScript
C++
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
なんとかなった理由
④消滅都市先輩がいた
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• クライアントサイド
• 通信
• データベース
• サーバーサイド
• 概ね消滅都市と同等の構成(Silex + MagicSpice)
なぜその④
消滅都市から基本機能を切り出して改良した
エンジニアリングにおける挑戦をしなかった
安全な方向に倒す開発に専念した
その他プロジェクトの偵察を怠らなかった
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
設計のはなし
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• TitleScene
• ログイン処理、データベース構築など
• HomeScene
• ホーム画面 (塔を俯瞰したあの画面)
• DungeonScene
• ダンジョン内
• DecorationScene
• デコレーションする画面
全体の設計
シーン一覧 <CCScene.cpp>
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
ステートの分割
UIの動きに見合うステートマシンもどきを設計した
• Layerの管理
• Stack型の状態管理(ゲームロジック)
• Viewのトランジションも自動化
LayerのPush()とPop()で階層的なUIを管理
StateManager::getInstance()->pushState(レイヤー);
StateManager::getInstance()->popState();
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
ステートの分割
(例)ダイアログの表示と消去
auto dlg1 = DialogOne::create();
StateManager::getInstance()->pushState(dlg1);
StateManager::getInstance()->popState();
(例)ダイアログ1のコールバックを受けてダイアログ2を表示
auto dlg1 = DialogOne::create();
auto dlg2 = DialogTwo::create();
StateManager::getInstance()->pushState(dlg1, [dlg2](StateEvent se){
if (se.Name == DialogOne::YES) {
StateManager::getInstance()->pushState(dlg2);
}
});
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 階層的な画面が容易に作れた
• ウィンドウの表示・非表示のアニメー
ションが楽に統一化できた
• UIベタ書きでもなんとか持ちこたえた
階層的なUIの実現
そのおかげで
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
特徴的な機能の実装例
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 地道に1フリックごとに状態を保存
• バトル中は特定のタイミングでス
ナップショットをとっている
• ※暗号化しています
オートセーブ機能
ダンジョン内にいる場合いつでもアプリをkillできる
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• グレースケールで書かれたレンガに
画像を乗算してalpha指定
• 横の壁はSpriteを3軸で歪ませて表現
• レンガのパースが厳密でないので鬼の位置調整
デコレーション
乗算でそれっぽく仕上げる
BlendFunc blend;
blend.src = GL_ZERO;
blend.dst = GL_SRC_COLOR;
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• iOS
• Obj-C
• UIImageで頑張る
• Android
• Java
• Bitmap.createBitmapで頑張る
顔はめ込み機能
両OSでNative Bridge先で端末内の画像をcropする
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• GPUによってはRenderTextureで描画が崩れる(ClippingNode. . .)
• スクショを撮る一瞬だけ不必要なnodeを隠した
• 本当はcropしてシェアしたかった
• 全画面スクショで我慢した
画像シェア機能
Utils::captureScreen
this->node->setVisible(false);
utils::captureScreen([this](bool success, const std::string& output) {
this->node->setVisible(true);
}, "capture.png");
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
パフォーマンス
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• アクションゲームではない
• 30FPSで問題ない
• 演出が激しくない
• 要求されるものがすくない
• がんばらなくてよかった
パフォーマンス
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• アイテム画像全部で500KBくらい
• アートさんがモンスターも1枚1枚減色してくれた
• アセットダウンロード無しで初期リリースを決意
• 結果的に初回起動が早い
あえて言うならば
コンパクトなアートリソース
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
反省
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• やっぱりUIとロジックは切り離したい
• 手書きは慣れると早いけど
• オススメはしない
• 大規模な画面仕様の変更がはいると
• QAを厚くしないと不安で寝れない
• エンジニアが全員職人なわけがない
• アニメーションは書かないと感覚が身につかない
反省点
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
苦労したところ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Cocos2d-x 3.2に積んでるlibcurlが古い
• HTTP Status : 200なのにresponseが空っぽ
• オプションによってはタイムアウト時にクラッシュ
• libcurlの乗り換え検討中
• SQLiteのWriteが遅い
• Write前にReadしてハッシュ比較
• 探検中データの下位互換
• Nヶ月前のダンジョン内のデータをちゃんと救えるかどうか
• どうしてもダメになるまでは諦めないけどやはり辛い
苦労したところ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
おわりに
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 今後ともタワーライジングを宜しくお願いします!
• もうすぐ自分の塔33階まで解放します!
おわりに
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Happy Hacking♥

More Related Content

What's hot

Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
次世代ゲームにおける自動生成技術
次世代ゲームにおける自動生成技術 次世代ゲームにおける自動生成技術
次世代ゲームにおける自動生成技術 Youichiro Miyake
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例gree_tech
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021Unity Technologies Japan K.K.
 
ゲームAI入門(前半)
ゲームAI入門(前半)ゲームAI入門(前半)
ゲームAI入門(前半)Youichiro Miyake
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Yoshifumi Kawai
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onionGoichi Shinohara
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
スマートフォンゲームのチート事情
スマートフォンゲームのチート事情スマートフォンゲームのチート事情
スマートフォンゲームのチート事情直生 亀山
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unity Technologies Japan K.K.
 

What's hot (20)

Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
次世代ゲームにおける自動生成技術
次世代ゲームにおける自動生成技術 次世代ゲームにおける自動生成技術
次世代ゲームにおける自動生成技術
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
 
非同期ロード画面 Asynchronous Loading Screen
非同期ロード画面 Asynchronous Loading Screen非同期ロード画面 Asynchronous Loading Screen
非同期ロード画面 Asynchronous Loading Screen
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021
 
ゲームAI入門(前半)
ゲームAI入門(前半)ゲームAI入門(前半)
ゲームAI入門(前半)
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
 
Epic Online Services でできること
Epic Online Services でできることEpic Online Services でできること
Epic Online Services でできること
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onion
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
スマートフォンゲームのチート事情
スマートフォンゲームのチート事情スマートフォンゲームのチート事情
スマートフォンゲームのチート事情
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 

Similar to Cocos2d-xを用いた "LINE タワーライジング" の開発事例

消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれShun Noguchi
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議Kaoru NAKAMURA
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップShinra_Technologies
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
Cedec2015 お客様に驚きを提供する運営 消滅都市の事例から-
Cedec2015 お客様に驚きを提供する運営  消滅都市の事例から-Cedec2015 お客様に驚きを提供する運営  消滅都市の事例から-
Cedec2015 お客様に驚きを提供する運営 消滅都市の事例から-gree_tech
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)Toru Yamaguchi
 
Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年gree_tech
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現gree_tech
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみましたKoji Hasebe
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Atsushi Harada
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメNIFTY Cloud
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方Kaoru NAKAMURA
 
IkaLog Presentation for BMD users
IkaLog Presentation for BMD usersIkaLog Presentation for BMD users
IkaLog Presentation for BMD usersTakeshi HASEGAWA
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングRyohei Kamiya
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方Kaoru NAKAMURA
 

Similar to Cocos2d-xを用いた "LINE タワーライジング" の開発事例 (20)

消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
Cedec2015 お客様に驚きを提供する運営 消滅都市の事例から-
Cedec2015 お客様に驚きを提供する運営  消滅都市の事例から-Cedec2015 お客様に驚きを提供する運営  消滅都市の事例から-
Cedec2015 お客様に驚きを提供する運営 消滅都市の事例から-
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)技術選択とアーキテクトの役割 (要約版)
技術選択とアーキテクトの役割 (要約版)
 
Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメ
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方
 
IkaLog Presentation for BMD users
IkaLog Presentation for BMD usersIkaLog Presentation for BMD users
IkaLog Presentation for BMD users
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方
 

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
 
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介gree_tech
 
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてgree_tech
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験gree_tech
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組みgree_tech
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違いgree_tech
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介gree_tech
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてgree_tech
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーgree_tech
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-gree_tech
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜gree_tech
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)gree_tech
 

More from gree_tech (20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
 
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
 
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Recently uploaded (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

Cocos2d-xを用いた "LINE タワーライジング" の開発事例

  • 1. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Wright Flyer Studios部 西田綾佑 Cocos2d-xを用いた "LINE タワーライジング" の開発事例 GREE GameDevelopers' Meetup 01 #greegdm01
  • 2. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 西田綾佑 (にしだ りょうすけ) • グリー株式会社 Wright Flyer Studio部 • クライアントリード(エンジニア) • @hosi_mo • 塔コード : 4M9EVCBK • 経歴 • 東京大学大学院情報理工学系研究科 修了 • グリー株式会社(2014年~) 自己紹介
  • 3. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. ゲーム紹介 配信日 : 2015/6/23 ジャンル : RPG、アドベンチャー プラットフォーム : iOS / Android おかげさまで事前登録43万人 ▼塔はつんでも、人生つむな ▼頭脳系ダンジョンRPG ▼方向音痴の作者が作った、 新しいスタイルのダンジョン探検
  • 4. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 実はDungeon Flickerがベースとなった
  • 5. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. “タワーライジング” リリースまでの開発体制 プロデューサー 1名 クライアントプログラマ 4名 サーバプログラマ 3名 アート 2名 ディレクター(原作) 1名 ゲームデザイナー 2名 PM 3名 16名
  • 6. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 全体スケジュール(14ヶ月) 2015年 3月~ ダンジョンフリッカー公開 2014年 4月~ α開発 10月~ β開発 β開発 ~1月 1月~ LINE連携 4~6月 チュートリアル改善 6月 GA 社内リリース 社内リリース 11月〜ベンダーテスト ベンダーテスト ~4月
  • 7. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Cocos2d-x 3.2 • コーディング環境 • C++ 11 • Mac + Xcode • 主にiOSの実機開発(手触りを重視) • Android • 動作確認 Android 2.3~ (動作保証は現状4.0) • なにか起きたらlog catを眺めてスレッドを感じる 開発環境
  • 8. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • libdispatch • 並列化したい処理だけキューに投げられて便利 • Cricket Audio • サウンドの再生。安定してる。 • 他プロジェクト(Cocos2d-x)で実績あり • Jenkins • 毎日自動でビルドを作って社内チャットに共有 • Hockey App • ビルド配布 • クラッシュログ収集 要素技術
  • 9. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. タワーライジングの開発
  • 10. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Cocos2d-xで作り直したい • ダンジョンフリッカーはAdobe Air • 画面数が少ない • 複雑な画面が少ない • 社内ツール : レイアウトローダ(psd -> Cocos2d-x) を使うほどでもない • 簡素な演出が好まれた • LWFを使うほどではない • 当時 : (送りバントと呼ばれたプロジェクト) • そもそものアサインが少ない(さらにFlashアニメータ自体が社内に少ない) 開発初期(2014年春~夏) 2014年3月にダンジョンフリッカーをリリース
  • 11. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • UI配置 : エンジニアが頑張る • UIアニメーション : エンジニアが頑張る • 演出 : エンジニアが頑張る 結果 oh. . . .
  • 12. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. アサインされたエンジニアが面食らう
  • 13. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. UI配置 おわかりいただけるだろうか?
  • 14. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. タワーライジングは町工場だから
  • 15. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • UI • コードに座標打ってもなんとかなる..かも? • 演出 • runAction()も、Easingもあるじゃないか • パペットアニメーションの実現は… 開発初期 エンジニアから職人へのジョブチェンジ
  • 16. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. アニメーション 安心してください、書いてますよ Avatar.cpp 1200行くらい
  • 17. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なんとかなった理由 ①画面がシンプル
  • 18. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なぜその① 画面の仕様がシンプル
  • 19. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なぜその① 画面の仕様がシンプル • すべての画面を同一のコンポーネントでつくる • アニメーションが共通化できる • SEが共通化できる • 基本的に9sliceで作りきれる範囲の装飾
  • 20. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なんとかなった理由 ②仕様書もシンプル
  • 21. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なぜその② 一枚絵とにらめっこして作り上げられる • 仕様書が画像一枚(+注釈) • 位置もこれがマスター 究極的には エンジニアがこの一枚絵を完コピすれば良い
  • 22. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なんとかなった理由 ③Flashで動いている
  • 23. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Flashでmockを作ってくれた♥ • ソース見てC++に書き換える • ASのBetweenライクなWrapperをC++で実装 なぜその③ 新規のこまかい演出の実装 tween = BetweenAS3.parallel( BetweenAS3.tween(part.Finger, {y:range * -0.5}, {y:range * 0.5}, 0.6, Quad.easeInOut), BetweenAS3.tween(part.Gesture, {y:range * -0.5}, {y:range * 0.5}, 0.6, Quad.easeInOut), BetweenAS3.tween(part.Gesture, {scaleY:2}, {scaleX:0}, 0.6, Quad.easeInOut) ); anim = Sequence::create(Spawn::create(Between::to(finger, "y:200", 0.7, Easing::QuadInOut), Between::to(gesture, "y:200", 0.7, Easing::QuadInOut), Between::to(gesture, "scaleX:2,scaleY:2", 0.7, Easing::QuadInOut), NULL), NULL); ActionScript C++
  • 24. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. なんとかなった理由 ④消滅都市先輩がいた
  • 25. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • クライアントサイド • 通信 • データベース • サーバーサイド • 概ね消滅都市と同等の構成(Silex + MagicSpice) なぜその④ 消滅都市から基本機能を切り出して改良した エンジニアリングにおける挑戦をしなかった 安全な方向に倒す開発に専念した その他プロジェクトの偵察を怠らなかった
  • 26. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 設計のはなし
  • 27. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • TitleScene • ログイン処理、データベース構築など • HomeScene • ホーム画面 (塔を俯瞰したあの画面) • DungeonScene • ダンジョン内 • DecorationScene • デコレーションする画面 全体の設計 シーン一覧 <CCScene.cpp>
  • 28. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. ステートの分割 UIの動きに見合うステートマシンもどきを設計した • Layerの管理 • Stack型の状態管理(ゲームロジック) • Viewのトランジションも自動化 LayerのPush()とPop()で階層的なUIを管理 StateManager::getInstance()->pushState(レイヤー); StateManager::getInstance()->popState();
  • 29. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. ステートの分割 (例)ダイアログの表示と消去 auto dlg1 = DialogOne::create(); StateManager::getInstance()->pushState(dlg1); StateManager::getInstance()->popState(); (例)ダイアログ1のコールバックを受けてダイアログ2を表示 auto dlg1 = DialogOne::create(); auto dlg2 = DialogTwo::create(); StateManager::getInstance()->pushState(dlg1, [dlg2](StateEvent se){ if (se.Name == DialogOne::YES) { StateManager::getInstance()->pushState(dlg2); } });
  • 30. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 階層的な画面が容易に作れた • ウィンドウの表示・非表示のアニメー ションが楽に統一化できた • UIベタ書きでもなんとか持ちこたえた 階層的なUIの実現 そのおかげで
  • 31. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 特徴的な機能の実装例
  • 32. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 地道に1フリックごとに状態を保存 • バトル中は特定のタイミングでス ナップショットをとっている • ※暗号化しています オートセーブ機能 ダンジョン内にいる場合いつでもアプリをkillできる
  • 33. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • グレースケールで書かれたレンガに 画像を乗算してalpha指定 • 横の壁はSpriteを3軸で歪ませて表現 • レンガのパースが厳密でないので鬼の位置調整 デコレーション 乗算でそれっぽく仕上げる BlendFunc blend; blend.src = GL_ZERO; blend.dst = GL_SRC_COLOR;
  • 34. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • iOS • Obj-C • UIImageで頑張る • Android • Java • Bitmap.createBitmapで頑張る 顔はめ込み機能 両OSでNative Bridge先で端末内の画像をcropする
  • 35. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • GPUによってはRenderTextureで描画が崩れる(ClippingNode. . .) • スクショを撮る一瞬だけ不必要なnodeを隠した • 本当はcropしてシェアしたかった • 全画面スクショで我慢した 画像シェア機能 Utils::captureScreen this->node->setVisible(false); utils::captureScreen([this](bool success, const std::string& output) { this->node->setVisible(true); }, "capture.png");
  • 36. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. パフォーマンス
  • 37. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • アクションゲームではない • 30FPSで問題ない • 演出が激しくない • 要求されるものがすくない • がんばらなくてよかった パフォーマンス
  • 38. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • アイテム画像全部で500KBくらい • アートさんがモンスターも1枚1枚減色してくれた • アセットダウンロード無しで初期リリースを決意 • 結果的に初回起動が早い あえて言うならば コンパクトなアートリソース
  • 39. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 反省
  • 40. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • やっぱりUIとロジックは切り離したい • 手書きは慣れると早いけど • オススメはしない • 大規模な画面仕様の変更がはいると • QAを厚くしないと不安で寝れない • エンジニアが全員職人なわけがない • アニメーションは書かないと感覚が身につかない 反省点
  • 41. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 苦労したところ
  • 42. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Cocos2d-x 3.2に積んでるlibcurlが古い • HTTP Status : 200なのにresponseが空っぽ • オプションによってはタイムアウト時にクラッシュ • libcurlの乗り換え検討中 • SQLiteのWriteが遅い • Write前にReadしてハッシュ比較 • 探検中データの下位互換 • Nヶ月前のダンジョン内のデータをちゃんと救えるかどうか • どうしてもダメになるまでは諦めないけどやはり辛い 苦労したところ
  • 43. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. おわりに
  • 44. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 今後ともタワーライジングを宜しくお願いします! • もうすぐ自分の塔33階まで解放します! おわりに
  • 45. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Happy Hacking♥