Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
コードしか書けないエンジニアが
ゲームを作るには
みんなで作る:cocos2d-xゲーム開発
me is 小橋はこ

@hako584

 芸者東京エンターテインメント社
  フロントエンジニアしてます。
 cocos2d-Xで作ったもの
:脳トレクエスト2

iOS/AppStoreで \無料1位/\セールス27位/
android/...
お絵描きプログラマー
     であります
エンジニア・プログラマとしての
仕事のかたわら
 絵も描いてます
こんなの描いてます
今日は
コードしか書けなかった
エンジニアが
一週間で売れるゲームを
作るための
秘密を教えちゃいます
クラスの皆には内緒だよ
\(^o^)/
結論から言います
・エンジニアとデザイナーの
  コラボレーション

・部品化
あとCocosBuilderなどの
活用が鍵
ふつうだ
\(^o^)/
CocosBuilder
Objective-C版のcocos2dに
比べて Cocos2d-xでは
手間が多い。

最大の面倒は変数のバインド
CocosBuilderで変数の設定
するとたくさんコード
書かないといけない
こんな具合

class CCTestLayer : public cocos2d::CCLayer, public cocos2d::extension::CCBSelectorResolver
{
virtual cocos2d::SEL_...
SEL_MenuHandler CCTestLayer::onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName)
{
CCB_SELECTORRE...
変数ひとつ
割り当てるのに
どんだけかかるんだ
自動化!
https://github.com/kohashi/LoaderMaker_from_CCB
LoaderMaker from CCB

Xcodeのビルドのタイミングで
CCBファイルの変更を監視して
さっきのコードを自動生成しま...
シンプル化!
https://github.com/ivzave/cocos2dxext/blob/master/CCPointer.h

CCPointer
NULL初期化不要&解放不要
な
楽チン参照変数管理!
高速な開発には必須!
これでさっきの長い
 コードが
短く。
class CCTestLayer : public cocos2d::CCLayer, CCB_ASSING_RESOLVERS
{
public:
CREATE_FUNC(CCTestLayer);
private:
CCPoint...
シンプルな記述で
コラボレーションを
素早く行う
部品化!

この画面、
いくつの部品から
できてると思いますか?
部品=CCBファイル
20個くらい
↓部品 ↓部品 ↓部品
部品=>
部品=>
部品

<=部品
<=部品

↓部品
部品=>

部品=>

<=部品
よい粒度で部品化すると
デザイナーさんに
動きをお願いして
組み合わせるのが
とても楽になります
再利用性も高まります
\(^o^)/
デザイナーさんと
プログラマの架け橋
みたいなところも
フロントエンドエンジニアの
お仕事だと思います
簡単に絵やアニメ作れるといいですね
\(^o^)/
というわけで
中途入社で
いままでゲームどころか
UIのあるコードすら
書いたこと無い人に
作らせてみました
無茶ぶり
\(^o^)/
一週間で
出来上がったものが
こちらになります
実質4日くらい
\(^o^)/
DEMO
ありがとうございました!

                         
素材提供:                    
Upcoming SlideShare
Loading in …5
×

コードしか書けないエンジニアがゲームを作るには。みんなで作る:ccocos2d-xゲーム開発

2,559 views

Published on

Published in: Technology
  • Be the first to comment

コードしか書けないエンジニアがゲームを作るには。みんなで作る:ccocos2d-xゲーム開発

  1. 1. コードしか書けないエンジニアが ゲームを作るには みんなで作る:cocos2d-xゲーム開発
  2. 2. me is 小橋はこ @hako584  芸者東京エンターテインメント社   フロントエンジニアしてます。  cocos2d-Xで作ったもの :脳トレクエスト2 iOS/AppStoreで \無料1位/\セールス27位/ android/PlayStoreで \無料2位/\売上48位/
  3. 3. お絵描きプログラマー      であります エンジニア・プログラマとしての 仕事のかたわら  絵も描いてます
  4. 4. こんなの描いてます
  5. 5. 今日は コードしか書けなかった エンジニアが 一週間で売れるゲームを 作るための 秘密を教えちゃいます クラスの皆には内緒だよ \(^o^)/
  6. 6. 結論から言います
  7. 7. ・エンジニアとデザイナーの   コラボレーション ・部品化 あとCocosBuilderなどの 活用が鍵 ふつうだ \(^o^)/
  8. 8. CocosBuilder Objective-C版のcocos2dに 比べて Cocos2d-xでは 手間が多い。 最大の面倒は変数のバインド CocosBuilderで変数の設定 するとたくさんコード 書かないといけない
  9. 9. こんな具合 class CCTestLayer : public cocos2d::CCLayer, public cocos2d::extension::CCBSelectorResolver { virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, cocos2d::CCString * pSelectorName); virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, cocos2d::CCString * pSelectorName); void menuTapped(CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent); public: CREATE_FUNC(CCTestLayer); }; class TestBuilderLoader : public cocos2d::extension::CCLayerLoader { public: CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(TestBuilderLoader, loader); protected: CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCTestLayer); };
  10. 10. SEL_MenuHandler CCTestLayer::onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName) { CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "menuTapped", CCTestLayer::menuTapped); return NULL; } void CCTestLayer::menuTapped(CCObject *pSender, CCControlEvent pCCControlEvent) { CCLOG("button tapped"); } SEL_CCControlHandler CCTestLayer::onResolveCCBCCControlSelector(CCObject *pTarget, CCString*pSelectorName) { return NULL; } CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary(); ccNodeLoaderLibrary->registerCCNodeLoader("CCTestLayer", TestBuilderLoader::loader()); CCBReader * ccbReader = new CCBReader(ccNodeLoaderLibrary); CCNode* node = ccbReader->readNodeGraphFromFile("CCTestLayer.ccbi"); CCScene * scene = CCScene::create(); if(node != NULL) { scene->addChild(node); } ccbReader->release(); CCDirector::sharedDirector()->runWithScene(scene);
  11. 11. 変数ひとつ 割り当てるのに どんだけかかるんだ
  12. 12. 自動化! https://github.com/kohashi/LoaderMaker_from_CCB LoaderMaker from CCB Xcodeのビルドのタイミングで CCBファイルの変更を監視して さっきのコードを自動生成します!
  13. 13. シンプル化! https://github.com/ivzave/cocos2dxext/blob/master/CCPointer.h CCPointer NULL初期化不要&解放不要 な 楽チン参照変数管理! 高速な開発には必須!
  14. 14. これでさっきの長い  コードが
  15. 15. 短く。 class CCTestLayer : public cocos2d::CCLayer, CCB_ASSING_RESOLVERS { public: CREATE_FUNC(CCTestLayer); private: CCPointer<CCMenu> menuTapped; }; ※自動生成コードはありますが、 見る必要がないので隠蔽してあります。
  16. 16. シンプルな記述で コラボレーションを 素早く行う
  17. 17. 部品化! この画面、 いくつの部品から できてると思いますか? 部品=CCBファイル
  18. 18. 20個くらい ↓部品 ↓部品 ↓部品 部品=> 部品=> 部品 <=部品 <=部品 ↓部品 部品=> 部品=> <=部品
  19. 19. よい粒度で部品化すると デザイナーさんに 動きをお願いして 組み合わせるのが とても楽になります 再利用性も高まります \(^o^)/
  20. 20. デザイナーさんと プログラマの架け橋 みたいなところも フロントエンドエンジニアの お仕事だと思います 簡単に絵やアニメ作れるといいですね \(^o^)/
  21. 21. というわけで 中途入社で いままでゲームどころか UIのあるコードすら 書いたこと無い人に 作らせてみました 無茶ぶり \(^o^)/
  22. 22. 一週間で 出来上がったものが こちらになります 実質4日くらい \(^o^)/
  23. 23. DEMO
  24. 24. ありがとうございました!                           素材提供:                    

×