Neste artigo conheceremos um pouco sobre o Cocos2d para iOS, framework popular para desenvolvimentos de jogos 2D. Tendo sua versão original em Python, o Cocos2d foi portado para o iOS e sua primeira release estável em 2010. Mostraremos aqui alguns conceitos básicos, além de um tutorial sobre como criar um jogo simples utilizando a plataforma.
O cocos2d se destaca em relação aos demais frameworks por ser open source, ter uma grande e crescente comunidade, além de uma grande quantidade de jogos publicados na App Store. Possui uma boa documentação, é baseado em OpenGL e tem duas engines físicas embarcadas, o Chipmunk e o Box2D, o que dá ao desenvolvedor a possibilidade de criar os mais variados tipos de jogos utilizando a plataforma.
Em
que situação o tema é útil
O desenvolvimento de jogos é sem dúvida um dos
grandes nichos de mercado para o desenvolvimento mobile. O tema discutido neste
artigo é essencial para aqueles que tenham interesse em entrar no mercado para
plataforma iOS. O framework apresentado neste artigo ajudará você a criar jogos
inovadores com baixa complexidade à alta produtividade.
O uso de frameworks é sem dúvidas um dos responsáveis pelo aumento da produtividade na indústria de software. Frameworks facilitam as atividades de desenvolvimento pois trazem com eles um conjunto pronto de funcionalidades para serem utilizadas em suas aplicações.
Quando o cenário do projeto a ser desenvolvido é o de jogos, isto fica ainda mais claro e a escolha do framework correto tem um peso considerável no sucesso do projeto em desenvolvimento. O desenvolvimento de jogos é uma tarefa realmente desafiadora devido à complexidade natural que há na definição e construção de sua lógica. Recursos como resposta ao usuário, simulação de física, manipulação de imagens e sons, e a própria jogabilidade tornam todo o cenário um tanto quanto complexo.
Neste contexto, para amenizar a complexidade no desenvolvimento de jogos, apresentaremos neste artigo o framework Cocos2d que apoia o desenvolvimento de jogos para a plataforma iOS da Apple.
O Cocos2d tem suas raízes na Argentina. Um grupo de amigos da comunidade de Python se reunia duas vezes por ano para participar de uma competição de desenvolvimento de jogos. Por programar em um nível mais baixo nessas competições e serem obrigados a “reinventar a roda” várias vezes, em 2008 decidiram criar um framework de jogos 2D; por estarem em uma localidade chamada “Los Cocos”, foi batizado de Cocos2d.
No meio de 2008, o framework em Python foi portado para Objective-C e teve sua primeira release. Ao fim do mesmo ano, já havia pelo menos 40 aplicativos na App Store que utilizavam o framework.
A partir daí, estava consolidando o framework pioneiro para jogos 2D em iOS. A popularização e o crescimento foram estrondosos, e até hoje ele se mantém como referência quando o assunto é desenvolver um jogo 2D.
Conceitos básicos
O desenvolvimento de jogos envolve uma variedade muito grande conhecimento. Desde questões relacionadas à área de interatividade, como desenhos e recursos sonoros utilizados até questões mais técnicas como a inteligência embutida no jogo através de lógicas de comportamento complexas e uso da física (como peso, velocidade, detecção de colisão, força e gravidade, dentre outros) para tornar a jogabilidade mais próxima da realidade.
O Cocos2d é totalmente baseado no OpenGL ES (OpenGL for Embedded Systems). Este se refere a um subconjunto da API de gráficos em três dimensões definida pela OpenGL para dispositivos móveis como smartphones e tablets. Mesmo que você não tenha muito conhecimento do assunto, isto não é tão relevante; na realidade, o OpenGL é completamente abstraído pelo framework. Quando o assunto é desenvolver jogo em Cocos2d, há alguns conceitos essenciais a serem abordados relacionados a seis classes do mesmo, analisadas a seguir:
- Scene: uma Scene é justamente uma "tela" do jogo. Por exemplo, a tela do menu é uma Scene, bem como a tela de recordes e a tela principal do jogo. É representada pela classe CCScene, e existe apenas uma Scene ativa de cada vez no jogo. No diagrama de um jogo, cada Scene, em geral, é tratada isoladamente, tendo alguma relação somente na hora que ocorre a transição de uma Scene para outra;
- Director: o Director tem duas funções: gerencia as Scenes do jogo e inicializa o OpenGL ES. Ele cuida da pilha de Scenes e é responsável pela transição entre elas. Sua classe, CCDirector, é um singleton, e trata de alguns assuntos relevantes para o desenvolvedor como pausar/resumir uma Scene, agendar ações e animações;
- Layer: as Layers são camadas dentro da tela. Ocupam toda a área desenhável da tela e são responsáveis por definir o comportamento e aparência do jogo. Fazem também o tratamento de eventos, como toques na tela. Ou seja, grande parte do código do jogo ficará em subclasses de CCLayer. O Cocos2D providencia algumas subclasses padrões de CCLayer para facilitar a vida do desenvolvedor. A mais importante talvez seja a CCMenu, que facilita na hora de criar um menu padrão. Nas Layers, pode-se adicionar vários filhos para compor a tela, como outras Layers e Sprites;
- Sprite: os Sprites são objetos que carregam a imagem e são responsáveis por todos os efeitos relativos a ela como rotacionar, mover, animar de inúmeras maneiras, alterar forma, tamanho, dentre outras propriedades. Eles podem ter outros sprites como filhos, e suas transformações podem ocorrer manualmente ou através de Actions;
- Node: um node (representado pela classe CCNode) é o elemento principal. Todas as classes que são desenhadas ou que contêm alguma coisa desenhável são subclasses de CCNode. Por exemplo, CCScene, CCLayer e CCSprite são subclasses de CCNode, e tem em comum métodos que permitem adicionar outros Nodes, agendar e executar ações. Além de todas as propriedades essenciais para classes desenháveis, como posição (x, y) na tela, rotação, escala, tamanho, visibilidade e z-Order. Este último é bastante útil quando temos muitos Nodes na tela; é responsável por definir quais ficarão sobrepostos; ...