60
Copyright (C) DeNA Co.,Ltd. All Rights Reserved. FINAL FANTASY Record Keeper cocos2dx レイヤーの最適化 株式会社ディー・エヌ・エー Japanリージョン ゲーム事業本部 技術・編成部 開発基盤グループ 惠 和隆 [email protected]

FFRK cocos2d xレイヤーの最適化

Embed Size (px)

Citation preview

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    FINAL FANTASY Record Keeper cocos2d-x

    Japan [email protected]

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    2002 etc

    201310

    cocos2d-x etc

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    FFRKKickmotor cocos2d-x

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! cocos2d-x

    ! cocos2d-xGoogle

    ! http://www.cocos2d-x.org ! Github

    https://github.com/cocos2d/cocos2d-x/tree/cocos2d-x-2.2.6

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! Kickmotor

    D.O.TDeNA

    WebViewcocos2d-x

    cocos2d-x

    etc

    http://www.slideshare.net/dena_study/20141111-seminar-eisuke http://www.slideshare.net/dena_study/20141111-dena-study21

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! CBT

    <

    ! WebViewcocos2d-x WebView cocos2d-x

    ! iPhone5S

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    (^o^)

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    C++

    VV ^':::::::::::::::::::::::v l / , l..:.::::::::::::::::::::::::::::= = |.:::::::::::::::::::::::::::::: |= -= |:r--:::::|= = |:} _. }f' =-. -= l | /, , ,}`'``|:::|.|.. ., ,| , l|:}r . . |/ :-=-./| |.|:::::| ||/= =:.:.:: : | |.|:::::| | / . -=:.:::::::.,/.:::::| | /|= . -= :::::::::::.z.:| |' | =| |:::::::::::::::::::::::::::::::::::.|'.:Y/, | |::::::::::::::::::::::::::::::::::::__::| ', ./ | |:::::::::::::::::::::::::::::::::::.|::|. / / r|::::::::::::::::::::::::::::::::::::::::::::::::|

    cocos2d-xC++

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    cocos2d-x

    ! cocos2d-x C++ cocos2d-x

    !

    !

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    orz

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! CBT !

    ! ! iOSAndroid

    iOSiPhone4S AndroidGalaxy S2Android2.3

    ! iOS Android

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    1. 2. XcodeInstruments 3. 4.

    a) b) c)

    5. 6. 1.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Xcode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Xcode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Xcode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Xcode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Xcode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Instruments Time Proler

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Instruments Time Proler

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! 0 ! ! ! OpenGL ES APIDrawCall ! ! CCNode ! cocos2d-x ! !

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    RGBA

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    20glClear()

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    ! 20

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    OpenGL ES APIDrawCall

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    OpenGL ES APIDrawCall

    cocos2d-xOpenGL

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    CCNode

    CCNode::visit()

    CCNode2000

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    CCNode::visit()

    ! Visiblevisit()

    ! OpenGL ! OpenGL ! visit() ! draw()

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    CCNode::visit() !

    CCNode

    CCSprite CCNode::onEnter()/CCNode::onExit()

    ! CCNode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    cocos2d-x !

    ! MFC

    ! double cos()/sin()cosf()/sinf()

    ! ! D$

    cocoa

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    FFRKX

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    CCNode::nodeToWorldTransform()

    CCAffineTransform CCNode::nodeToWorldTransform() { CCAffineTransform t = this->nodeToParentTransform(); for (CCNode *p = m_pParent; p != NULL; p = p->getParent()) t = CCAffineTransformConcat(t, p->nodeToParentTransform()); return t; }

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! AnimationBuilderCocosBuilder

    RootCCNode CharactorsCCNode)

    Char1CCNode CharIconCCSprite

    CharStatusIconCCSprite GaugeBaseCCScale9Sprite

    GaugeBarCCScale9Sprite

    GaugeFrameCCScale9Sprite Char2CCNode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! CCSpriteBatchNode CCSpriteBatchNodeCCSprite

    ! 150 100

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    CCSpriteBatchNode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    !

    ! OpenGL ES !

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! MVP

    uniform mat4 CC_MVPMatrix; aUribute vec4 a_posiWon; aUribute vec2 a_texCoord; aUribute vec4 a_color;

    varying vec4 v_fragmentColor; varying vec2 v_texCoord;

    void main() {

    gl_PosiWon = CC_MVPMatrix * a_posiWon; v_fragmentColor = a_color; v_texCoord = a_texCoord;

    }

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! MVP MVP

    //! Custom Vertex Data struct V3F_C4B_T2F_I1 { //! verWces (3F) ccVertex3F verWces; // 12 bytes //! colors (4B) ccColor4B colors; // 4 bytes //! tex coords (2F) ccTex2F texCoords; // 8 bytes //! matrix index oat matIdx; // 4 bytes };

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! MVP

    uniform mat4 CC_MVPMatrixArray[30]; aUribute vec4 a_posiWon; // V3F_C4B_T2F_I1::verWces aUribute vec2 a_texCoord; // V3F_C4B_T2F_I1::texCoords aUribute vec4 a_color; // V3F_C4B_T2F_I1::colors aUribute oat a_index; // V3F_C4B_T2F_I1::matIdx

    arying vec4 v_fragmentColor; varying vec2 v_texCoord;

    void main() { gl_PosiWon = CC_MVPMatrixArray[int(a_index)] * a_posiWon; v_fragmentColor = a_color; v_texCoord = a_texCoord; }

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! CCSpriteCCSpriteBatchNode FFRKCCScale9Sprite

    ! CCSpriteCCSpriteBatchNode

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! CCSprite::draw

    CCSprite

    MVP

    ! CCSpriteBatchNode::draw CCSpriteBatchNode

    CCSprite MVP

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    319

    Before

    76 !

    Aier

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Before

    Aier

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    Before

    Aier

    30FPS 60FPS

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.

    ! FFRKcocos2d-x

    5QA !

    !

    ! ! !

    ! ()

  • Copyright (C) DeNA Co.,Ltd. All Rights Reserved.