SlideShare uma empresa Scribd logo
1 de 32
Desenvolvimento de jogos com Cocos2d-x
GameDays´15
Sobre
• Rafael Martins
• LudeoLabs. Skyzone Entertainment, Electronic Arts e Hive
Digital
• E-mail: ra.martins13@gmail.com
• Portfolio: www.mobilegamedeveloper.com.br
GameDays´15
O que é Cocos2d-x?
• Uma engine open source 2d otimizada com
OpenGL
• 400.000+ desenvolvedores
• Inicialmente criada por Ricardo Quesada em
2008 (Cocos2D)
• Portada por Zhe Wang em 2010 para c++
GameDays´15
Vantagens
• Rápida prototipação
• Comunidade Experiente
• Não são necessários conhecimentos sólidos em
OpenGL
• Abstração de camadas de sistemas operacionais
• Performance
GameDays´15
Pontos Negativos
• Interface visual
• Curva de aprendizado para não-programadores
• Plugins dinâmicos
GameDays´15
Que empresas usam?
GameDays´15
Showcase
• Badland
• Castle Clash
• Family Guy: The Quest for Stuff
• Marvel Avengers Alliance
• Angry Bird Fight
• Clash of Kings
• Star Wars: Tiny Death Star
• Final Fantasy Record
• Diamond Dash
GameDays´15
Instalação
• Framework:
http://www.cocos2d-x.org/download
• Python 2.7.5
• Apache Ant
• Visual Studio 2012+
• Xcode 5+
• Android SDK
• Android NDK (r9d ou r10e)
• Windows Phone 8 SDK
GameDays´15
Versões
Cocos2d-x V3.8.1 (c++, lua)
Cocos2d-x V2.2.6 (c++, lua)
Cocos2d-JS (javascript)
GameDays´15
Plataformas
• Android
• iOS
• Windows Phone 8+
• Windows 7/8/10
• Linux
• Mac OS
• HTML5
• Tizen
• Bada
• Blackberry
GameDays´15
Módulos
• Graphics
• Audio
• Events
• Schedulers/Callbacks
• Input
• GUI
• Data Structure
• Network
• Physics
• Memory Management
• File Stream, I/O
• Debugging
GameDays´15
Gráficos / Animações
• Node
▫ Scene
▫ Layer
▫ Sprite
▫ Menu
• Actions
GameDays´15
Gráficos / Animações
GameDays´15
LayerScene Sprite
Gráficos / Animações
GameDays´15
• Ordens para um Node
• Modifica atributos do objeto
• Chamando uma ação
▫ sprite->runAction(Blink::create(2.0f, 10));
• Algumas ações:
▫ Posição (x,y)
 MoveBy, MoveTo, JumpBy
▫ Escala
 ScaleBy, ScaleTo
▫ Visibilidade
 Show, Hide, Blink
▫ Opacidade
 FadeIn, FadeOut, FadeTo
Audio
• SimpleAudioEngine
auto audio = SimpleAudioEngine::getInstance();
• Música: Play, Stop, Resume, Pause, Volume
audio->playBackgrundMusic(“music.mp3”, false);
audio->stopBackgroundMusic();
audio->resumeBackgroundMusic();
Audio->pauseBackgroundMusic();
Audio->setBackgroundMusicVolume(5.0f);
GameDays´15
Audio
• Efeitos Sonoros (SFX)
audio->playEffect(“music.mp3”, false, 1.0f, 1.0f, 1.0f);
audio->stopEffect();
audio->resumeEffect();
audio->resumeAllEffects();
Audio->pauseEffect();
• Preload
audio->preloadEffect(“effect.mp3”);
audio->preloadBackgroundMusic(“music.mp3”);
audio->unloadEffect();
GameDays´15
Input
• Touch
• Keyboard
• Accelerometer
• Gamepad
GameDays´15
Input - Touch Event
• Registrando eventos
• .h
void onTouchesBegan(const std:vector<Touch*>& touches, Event* pEvent);
void onTouchesEnded(const std:vector<Touch*>& touches, Event* pEvent);
void onTouchesMoved(const std:vector<Touch*>& touches, Event* pEvent);
• .cpp (init)
auto listener = EventListenerAllAtOnce::create();
listener->onTouchesBegan = CC_CALLBACK_2(GameScene::onTouchesBegan, this);
listener->onTouchesMoved = CC_CALLBACK_2(GameScene::onTouchesMoved, this);
listener->onTouchesEnded = CC_CALLBACK_2(GameScene::onTouchesEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
GameDays´15
Input - Outros
• Keyboard
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event *pEvent);
void onKeyPressed(EventKeyboard::KeyCode keyCode, Event *pEvent);
• Acelerômetro
this->setAccelerometerEnabled(true);
• Gamepad
o 3rd Party
o Implementação própria
o Joysticks virtuais
GameDays´15
Schedulers / Callbacks
• Schedulers são responsáveis por ativar os Callbacks
• Agenda funcões frame a frame ou periodicamente
• Loop principal
scheduleUpdate();
• Agendando uma função específica
schedule(schedule_selector(Enemy::move, 3.0f));
GameDays´15
Criando um projeto
• Linha de comando:
c:cocos2dx_root> cocos new MeuJogo -p
br.com.meujogo -l cpp -d Projetos
-p = nome do pacote
-l = linguagem
-d = pasta
GameDays´15
Estrutura do projeto
• Classes
• Resources
GameDays´15
Inicialização
• Entry Point
▫ Classes/AppDelegate.cpp
• Resources
▫ fonts
▫ Ui
▫ Objects
▫ Iphone6/objects
▫ Android/ui
GameDays´15
AppDelegate
SplashScene
Serviços
• SDKBox
• NextPeer
• Google Game Services
• Game Center
• Game Analytics
• Facebook
• Kamcord
GameDays´15
SDKBox
In-App Purchase
Analytics
Ads / Videos
Social
Rate / Age Check
GameDays´15
SDKBox
• Instalação
c:cocos2dx_rootprojetosdkbox import [modulo]
• Cópia automática de classes e recursos
• Arquivo JSON para configuração de módulos
GameDays´15
Ferramentas
• TexturePacker
• Physics Editor
• SpriteKit
• Tiled
GameDays´15
Tiled
• Principais componentes:
 TMXTiledMap
 TMXLayer
 TMXObjectGroup
TMXTiledMap* map = TMXTiledMap::create(“map1.tmx”);
addChild(map);
GameDays´15
Texture Packer
• Gerador de Spritesheets
• Arquivo Plist
• Armazenando texturas no cache
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“sprites.plist”,
“sprites.png");
• Criando uma sprite a partir do cache
Sprite* playerSprite = Sprite::createWithSpriteFrameName(“player_idle.png”);
GameDays´15
Links
• Cocos2d-x
http://www.cocos2d-x.org/
• TexturePacker
https://www.codeandweb.com/texturepacker
• Tiled
http://www.mapeditor.org/
• SDKBox
http://www.cocos2d-x.org/sdkbox
GameDays´15
Q & A
GameDays´15
Obrigado!
GameDays´15

Mais conteúdo relacionado

Semelhante a Cocos2d-x: Desenvolvimento de jogos

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
 
Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKBruno Cicanci
 
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...Impacta Eventos
 
Arduino genius com display lcd 16x2 usando i2 c
Arduino  genius com display lcd 16x2 usando i2 cArduino  genius com display lcd 16x2 usando i2 c
Arduino genius com display lcd 16x2 usando i2 cThiago Pereira
 
Criação do jogo telyn
Criação do jogo telynCriação do jogo telyn
Criação do jogo telynAndré Martins
 
Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game DesignLeonardo Zamprogno
 
Ferramentas Livres para o Desenvolvimento de Jogos Eletrônicos
Ferramentas Livres para o Desenvolvimento de Jogos EletrônicosFerramentas Livres para o Desenvolvimento de Jogos Eletrônicos
Ferramentas Livres para o Desenvolvimento de Jogos EletrônicosIngrid Mendes
 
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In SantosDesenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In Santosjonathanblacknight
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santosjonathanblacknight
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Fabio Moura Pereira
 
Como Fazer Seu Próprio Gameboy - CPBR11
Como Fazer Seu Próprio Gameboy -  CPBR11Como Fazer Seu Próprio Gameboy -  CPBR11
Como Fazer Seu Próprio Gameboy - CPBR11Rafael Moreira
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameLucas Mousinho
 
Workshop Games for Good
Workshop Games for GoodWorkshop Games for Good
Workshop Games for GoodClara Ferreira
 
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
Curso (2010) - Desenvolvimento de Jogos 2D  com XNACurso (2010) - Desenvolvimento de Jogos 2D  com XNA
Curso (2010) - Desenvolvimento de Jogos 2D com XNAKleber de Oliveira Andrade
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanTchelinux
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Tchelinux
 
Desenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - UnisantosDesenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - Unisantosjonathanblacknight
 

Semelhante a Cocos2d-x: Desenvolvimento de jogos (20)

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
 
Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDK
 
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
 
Arduino genius com display lcd 16x2 usando i2 c
Arduino  genius com display lcd 16x2 usando i2 cArduino  genius com display lcd 16x2 usando i2 c
Arduino genius com display lcd 16x2 usando i2 c
 
Criação do jogo telyn
Criação do jogo telynCriação do jogo telyn
Criação do jogo telyn
 
Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game Design
 
Ferramentas Livres para o Desenvolvimento de Jogos Eletrônicos
Ferramentas Livres para o Desenvolvimento de Jogos EletrônicosFerramentas Livres para o Desenvolvimento de Jogos Eletrônicos
Ferramentas Livres para o Desenvolvimento de Jogos Eletrônicos
 
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In SantosDesenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santos
 
Aula1 intro
Aula1  introAula1  intro
Aula1 intro
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
 
Como Fazer Seu Próprio Gameboy - CPBR11
Como Fazer Seu Próprio Gameboy -  CPBR11Como Fazer Seu Próprio Gameboy -  CPBR11
Como Fazer Seu Próprio Gameboy - CPBR11
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
 
Historia do videogame
Historia do videogameHistoria do videogame
Historia do videogame
 
Histori do videogame
Histori do videogameHistori do videogame
Histori do videogame
 
Workshop Games for Good
Workshop Games for GoodWorkshop Games for Good
Workshop Games for Good
 
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
Curso (2010) - Desenvolvimento de Jogos 2D  com XNACurso (2010) - Desenvolvimento de Jogos 2D  com XNA
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael Jeffman
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
 
Desenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - UnisantosDesenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - Unisantos
 

Cocos2d-x: Desenvolvimento de jogos

  • 1. Desenvolvimento de jogos com Cocos2d-x GameDays´15
  • 2. Sobre • Rafael Martins • LudeoLabs. Skyzone Entertainment, Electronic Arts e Hive Digital • E-mail: ra.martins13@gmail.com • Portfolio: www.mobilegamedeveloper.com.br GameDays´15
  • 3. O que é Cocos2d-x? • Uma engine open source 2d otimizada com OpenGL • 400.000+ desenvolvedores • Inicialmente criada por Ricardo Quesada em 2008 (Cocos2D) • Portada por Zhe Wang em 2010 para c++ GameDays´15
  • 4. Vantagens • Rápida prototipação • Comunidade Experiente • Não são necessários conhecimentos sólidos em OpenGL • Abstração de camadas de sistemas operacionais • Performance GameDays´15
  • 5. Pontos Negativos • Interface visual • Curva de aprendizado para não-programadores • Plugins dinâmicos GameDays´15
  • 7. Showcase • Badland • Castle Clash • Family Guy: The Quest for Stuff • Marvel Avengers Alliance • Angry Bird Fight • Clash of Kings • Star Wars: Tiny Death Star • Final Fantasy Record • Diamond Dash GameDays´15
  • 8. Instalação • Framework: http://www.cocos2d-x.org/download • Python 2.7.5 • Apache Ant • Visual Studio 2012+ • Xcode 5+ • Android SDK • Android NDK (r9d ou r10e) • Windows Phone 8 SDK GameDays´15
  • 9. Versões Cocos2d-x V3.8.1 (c++, lua) Cocos2d-x V2.2.6 (c++, lua) Cocos2d-JS (javascript) GameDays´15
  • 10. Plataformas • Android • iOS • Windows Phone 8+ • Windows 7/8/10 • Linux • Mac OS • HTML5 • Tizen • Bada • Blackberry GameDays´15
  • 11. Módulos • Graphics • Audio • Events • Schedulers/Callbacks • Input • GUI • Data Structure • Network • Physics • Memory Management • File Stream, I/O • Debugging GameDays´15
  • 12. Gráficos / Animações • Node ▫ Scene ▫ Layer ▫ Sprite ▫ Menu • Actions GameDays´15
  • 14. Gráficos / Animações GameDays´15 • Ordens para um Node • Modifica atributos do objeto • Chamando uma ação ▫ sprite->runAction(Blink::create(2.0f, 10)); • Algumas ações: ▫ Posição (x,y)  MoveBy, MoveTo, JumpBy ▫ Escala  ScaleBy, ScaleTo ▫ Visibilidade  Show, Hide, Blink ▫ Opacidade  FadeIn, FadeOut, FadeTo
  • 15. Audio • SimpleAudioEngine auto audio = SimpleAudioEngine::getInstance(); • Música: Play, Stop, Resume, Pause, Volume audio->playBackgrundMusic(“music.mp3”, false); audio->stopBackgroundMusic(); audio->resumeBackgroundMusic(); Audio->pauseBackgroundMusic(); Audio->setBackgroundMusicVolume(5.0f); GameDays´15
  • 16. Audio • Efeitos Sonoros (SFX) audio->playEffect(“music.mp3”, false, 1.0f, 1.0f, 1.0f); audio->stopEffect(); audio->resumeEffect(); audio->resumeAllEffects(); Audio->pauseEffect(); • Preload audio->preloadEffect(“effect.mp3”); audio->preloadBackgroundMusic(“music.mp3”); audio->unloadEffect(); GameDays´15
  • 17. Input • Touch • Keyboard • Accelerometer • Gamepad GameDays´15
  • 18. Input - Touch Event • Registrando eventos • .h void onTouchesBegan(const std:vector<Touch*>& touches, Event* pEvent); void onTouchesEnded(const std:vector<Touch*>& touches, Event* pEvent); void onTouchesMoved(const std:vector<Touch*>& touches, Event* pEvent); • .cpp (init) auto listener = EventListenerAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(GameScene::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(GameScene::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(GameScene::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); GameDays´15
  • 19. Input - Outros • Keyboard void onKeyReleased(EventKeyboard::KeyCode keyCode, Event *pEvent); void onKeyPressed(EventKeyboard::KeyCode keyCode, Event *pEvent); • Acelerômetro this->setAccelerometerEnabled(true); • Gamepad o 3rd Party o Implementação própria o Joysticks virtuais GameDays´15
  • 20. Schedulers / Callbacks • Schedulers são responsáveis por ativar os Callbacks • Agenda funcões frame a frame ou periodicamente • Loop principal scheduleUpdate(); • Agendando uma função específica schedule(schedule_selector(Enemy::move, 3.0f)); GameDays´15
  • 21. Criando um projeto • Linha de comando: c:cocos2dx_root> cocos new MeuJogo -p br.com.meujogo -l cpp -d Projetos -p = nome do pacote -l = linguagem -d = pasta GameDays´15
  • 22. Estrutura do projeto • Classes • Resources GameDays´15
  • 23. Inicialização • Entry Point ▫ Classes/AppDelegate.cpp • Resources ▫ fonts ▫ Ui ▫ Objects ▫ Iphone6/objects ▫ Android/ui GameDays´15 AppDelegate SplashScene
  • 24. Serviços • SDKBox • NextPeer • Google Game Services • Game Center • Game Analytics • Facebook • Kamcord GameDays´15
  • 25. SDKBox In-App Purchase Analytics Ads / Videos Social Rate / Age Check GameDays´15
  • 26. SDKBox • Instalação c:cocos2dx_rootprojetosdkbox import [modulo] • Cópia automática de classes e recursos • Arquivo JSON para configuração de módulos GameDays´15
  • 27. Ferramentas • TexturePacker • Physics Editor • SpriteKit • Tiled GameDays´15
  • 28. Tiled • Principais componentes:  TMXTiledMap  TMXLayer  TMXObjectGroup TMXTiledMap* map = TMXTiledMap::create(“map1.tmx”); addChild(map); GameDays´15
  • 29. Texture Packer • Gerador de Spritesheets • Arquivo Plist • Armazenando texturas no cache SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“sprites.plist”, “sprites.png"); • Criando uma sprite a partir do cache Sprite* playerSprite = Sprite::createWithSpriteFrameName(“player_idle.png”); GameDays´15
  • 30. Links • Cocos2d-x http://www.cocos2d-x.org/ • TexturePacker https://www.codeandweb.com/texturepacker • Tiled http://www.mapeditor.org/ • SDKBox http://www.cocos2d-x.org/sdkbox GameDays´15