Tutorial: Criando um jogo ao estilo Robot Unicorn Attack – Parte 1: Criando o projeto no Cocos2d-x

Iniciaremos o desenvolvimento de mais um game.

Dessa vez faremos um jogo ao estilo Robot Unicorn Attack.

Partiu iniciar mais um projeto.

Vimos no último tutorial como criar projetos na versão mais atual do Cocos2d-x (não é mais tão atual assim … =P). Vimos que mudou um pouco a forma como se cria, sendo necessário instalar o interpretador Python e criar um projeto por meio do terminal Cocos. Nesse tutorial, nós iniciaremos o desenvolvimento de um jogo ao estilo Robot Unicorn Attack. Como de praxe, nesse início, nós apenas mostraremos alguns Sprites na tela para termos ideia de como ficará o jogo no final.

 

Robot Unicorn Attack

O jogo foi criado e publicado pela empresa Adult Swim Games. O principal objetivo é fazer o  personagem jogável, um unicórnio robótico, alcançar a maior distância possível sem cair nos precipícios. Para que o jogador consiga realizar tal tarefa, ele deve pular sobre os elevados para evitar cair. Não obstante, o jogador deve evitar algumas barreiras, como estrelas, e pode colher borboletas para aumentar a sua pontuação. Há quem diga que o jogo tem como público-alvo a comunidade LGBT, pela sua temática e cores, mas ele é um jogo muito viciante e conquistou o respeito de muitas pessoas, pertencentes ao LGBT ou não. Se você quiser saber como é o game, entre nesse site. A Figura 1 mostra o jogo executando.

Figura 1 - Jogo Robot Unicorn Attack

Figura 1 – Jogo Robot Unicorn Attack

 

Criando o projeto Cocos2d-x

Iniciaremos o desenvolvimento, obviamente, com a criação do projeto do jogo. Crie um projeto no Cocos2d-x com pacote “com.Santy.Runrun” e com nome “Runrun”. Use a API que você achar melhor, eu usei uma para o Android 2.3.4. Caso você não saiba como criar um projeto Android no Cocos2d-x, veja esse tutorial.

Entre na pasta “Resources” e apague o arquivo “HelloWorld.png”, ele é desnecessário para o nosso game. Descompacte nessa mesma pasta todos os arquivos contidos nesse arquivo compactado. Nele estão os sprite sheets que utilizaremos no jogo e os arquivos de tileset, necessários para incluirmos as plataformas no jogo. Caso você queira saber mais como eu criei os arquivos de sprite sheet,veja esse tutorial e, caso você queira saber como eu criei os arquivos de tileset, veja esse tutorial.

Agora abra o arquivo “HelloWorldScene.cpp” existente na pasta “Classes” e exclua todas as linhas de código que se iniciam nessas (inclusive):

/////////////////////////////

// 3. add your codes below…

// add a label shows “Hello World”

// create and initialize a label

CCLabelTTF* pLabel = CCLabelTTF::create(“Hello World”, “Thonburi”, 34);

e vão até essa (inclusive):

this->addChild(pSprite, 0);

Nesse trecho do código padrão era implementada uma etiqueta escrita “Hello World” e era aberto um sprite com aquela imagem que você apagou anteriormente. Como não necessitamos desses elementos no nosso game, nós excluímos esse trecho. Nesse mesmo lugar onde você apagou o código, adicione as seguintes linhas:

CCSize size = CCDirector::sharedDirector()->getWinSize();

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(“spriteSheet.plist”);

CCSprite* fundo = CCSprite::createWithSpriteFrameName(“Fundo.png”);

if(size.width/size.height>fundo->boundingBox().size.width/fundo->boundingBox().size.height)

    fundo->setScale(size.width/fundo->boundingBox().size.width);

else

    fundo->setScale(size.height/fundo->boundingBox().size.height);

fundo->setPosition(ccp(size.width/2,size.height/2));

addChild(fundo);

CCSprite* sonic = CCSprite::createWithSpriteFrameName(“SonicCorrendo1.png”);

sonic->setScale((0.1*size.height)/sonic->boundingBox().size.height);

sonic->setPosition(ccp(size.width/4,size.height/2));

addChild(sonic);

CCTMXTiledMap* plataforma = CCTMXTiledMap::create(“plataforma.tmx”);

plataforma->setScale((0.075*size.height)/plataforma->boundingBox().size.height);

plataforma->layerNamed(“Camada1”)->setTileGID(1,ccp(1,0));

plataforma->layerNamed(“Camada1”)->setTileGID(1,ccp(2,0));

plataforma->layerNamed(“Camada1”)->setTileGID(1,ccp(3,0));

plataforma->setPosition(ccp(size.width/4.8,size.height/2-plataforma->boundingBox().size.height-sonic->boundingBox().size.height/2));

addChild(plataforma);

Se você analisar o código, perceberá que, primeiramente, nós carregamos os arquivos de sprite sheet para que pudéssemos utilizar os sprites no nosso jogo. Logo após, nós criamos um sprite de fundo e o redimensionamos de forma que ele cobrisse toda a tela do aparelho. Finalizamos com a criação do nosso personagem jogável (o Sonic, créditos a Sega) e de uma plataforma sob ele. O resultado é mostrado na Figura 2.

Figura 2 - Jogo executando

Figura 2 – Jogo executando

Conhecemos nesse tutorial como funciona o jogo Robot Unicorn Attack. Vimos como funciona os mecanismos dele e como será o nosso próximo game. Criamos um projeto no Cocos2d-x, adicionamos os arquivos de sprite sheet e de tile set e testamos os sprites e plataforma para termos ideia de como o jogo ficará. No próximo tutorial nós iniciaremos a implementação da física do jogo e o sistema de pulos com toque na tela.

Um grande abraço e até mais. []

Santiago Viertel

Santiago Viertel

Formado em Bacharelado em Ciência da Computação (UDESC), mestre e doutorando em Análise de Algoritmos (UFPR). Foi programador da Céu Games por 8 anos. Possui a preferência por jogos de estratégia e de tiro em primeira pessoa. Jogando bastante DotA 2, Left 4 Dead 2 e Age of Empires II HD.

Send this to a friend