Você está na página 1de 25

Programação 2D

1
Sumário

INTRODUÇÃO ......................................................................................... 3

EVOLUÇÃO DA ÁREA DE JOGOS ..................................................... 4


PLANEJAMENTO DE UM JOGO COMPUTACIONAL ......................... 6
A PROGRAMAÇÃO EM 2D ................................................................. 8
SEQUÊNCIA DA PROGRAMAÇÃO EM 2D ......................................... 9
GERENCIAMENTO DOS RECURSOS DOS JOGOS ....................... 12
TEMPO DE DESENVOLVIMENTO 2D .............................................. 17
ENGINES ........................................................................................... 18
CONSTRUCT 2 .............................................................................. 19

GAME MAKER STUDIO ................................................................. 20

STENCYL ....................................................................................... 21

GAME BUILD STUDIO ................................................................... 22

CONSIDERAÇÕES FINAIS ................................................................... 23

REFERÊNCIAS ..................................................................................... 24

1
FACULESTE

A história do Instituto FACULESTE, inicia com a realização do sonho de um


grupo de empresários, em atender à crescente demanda de alunos para cursos
de Graduação e Pós-Graduação. Com isso foi criado a FACULESTE, como
entidade oferecendo serviços educacionais em nível superior.

A FACULESTE tem por objetivo formar diplomados nas diferentes áreas de


conhecimento, aptos para a inserção em setores profissionais e para a
participação no desenvolvimento da sociedade brasileira, e colaborar na sua
formação contínua. Além de promover a divulgação de conhecimentos culturais,
científicos e técnicos que constituem patrimônio da humanidade e comunicar o
saber através do ensino, de publicação ou outras normas de comunicação.

A nossa missão é oferecer qualidade em conhecimento e cultura de forma


confiável e eficiente para que o aluno tenha oportunidade de construir uma base
profissional e ética. Dessa forma, conquistando o espaço de uma das instituições
modelo no país na oferta de cursos, primando sempre pela inovação tecnológica,
excelência no atendimento e valor do serviço oferecido.

2
INTRODUÇÃO

A área de jogos eletrônicos está se tornando cada vez mais popular, sendo uma
área de grande interesse financeiro principalmente no segmento de
entretenimento digital podendo ser encontrado em diversos dispositivos, como
computadores pessoais, console domésticos e dispositivos móveis [Barboza
2008]. Uma das aplicações interessantes dos jogos computacionais é sua
utilização no processo educacional.

Muitos jogos possibilitam o desenvolvimento de habilidades como cooperação,


competição, perseverança, envolvimento, organização e autonomia. Através de
softwares educacionais, temos a oportunidade de criar novos jogos e reinventar
jogos utilizados em madeira, papel, etc.

A possibilidade de divertidas animações, a integração de várias mídias como a


escrita, a imagem, o vídeo e o som que o computador oferece enriquecem os
jogos [Porto et al. 2008]. Casos de sucesso de jogos computacionais na
educação podem ser vistos em Mendes (2007), Santos (2008) e Porto (2008)
através do software CONSTRUFIG3D. Este artigo visa mostrar os passos
básicos do desenvolvimento de um jogo 2D inspirado no clássico de arcade,
Space Invaders.

A linguagem de programação escolhida foi Java, devido a sua portabilidade e


facilidade de utilização dos seus recursos de computação gráfica através do
pacote Java2D. O objetivo é que este texto seja mais uma referência para alunos
de cursos de computação interessados em iniciar os estudos e desenvolvimento
de jogos computacionais.

O tema jogos é muito importante hoje em dia na área de Informática. Não só pelo
lado do entretenimento, como também porque propicia várias pesquisas nas
áreas de interface de usuário e computação gráfica.

Desenvolvimento de jogos evoluiu e a geração de hoje preza bastante pelo seu


design mágico, estrutura, renderização e textura. Isso tem influenciado
diretamente em saber se é melhor criar um jogo 2D ou 3D. Desenvolvedores de

3
jogos trabalham apaixonadamente com grande dedicação para agradar ao seu
público. Eles estão fazendo isso para os amantes do jogo que gostam de jogar
diferentes jogos modernos.

Hoje, o jogo não é apenas a parte do entretenimento no tempo de lazer para os


jogadores, mas também a fonte de renda para muitos jogadores e o pão com
manteiga para os desenvolvedores de jogos e as empresas que desenvolvem
jogos.

Ao decidir qual game você irá produzir, algo que deve ser levado – e muito – em
consideração é o tipo artístico do seu projeto. Acredito que uma dúvida cruel de
muitos ao iniciar o desenvolvimento de um jogo é o estilo artístico a ser seguido.
Afinal, é melhor criar um jogo 2D ou 3D?

Um bom designer de jogos sabe que ambos os estilos podem ser usados de
forma eficaz, cada um no seu “quadrado”. Ambos os métodos são diferentes em
termos de qualidade gráfica também.

EVOLUÇÃO DA ÁREA DE JOGOS

Na realidade, o impulso na área de jogos se verificou a partir do surgimento de


novas plataformas para desenvolvimento de sistemas interativos. Essas
plataformas ofereciam dispositivos de interação que iam muito além dos antigos
dispositivos de ler e imprimir arquivos.

Hoje, o usuário, com base em uma série de técnicas e estilos de interação, é


imerso num mundo virtual, em várias áreas de aplicação, particularmente na de
jogos, e interage de forma intuitiva, sem sofrer influência de tais dispositivos. Por
outro lado, o aspecto desafiador da interface de usuário de jogos leva à ideia de
podermos aplicá-los em áreas empresariais – a partir da premissa de que as
empresas podem jogar entre si, existindo inclusive os conceitos de jogos de
empresas e jogos de guerra.

4
Por exemplo, antes de 1970 eu já era professor do ITA, e havia reuniões do
Estado Maior da Aeronáutica em que se jogava com um programa chamado
Jogo de Guerras. Recordo-me de que vinham vários ofi ciais para o ITA, que
eram separados em grupo, e cada grupo representava um país. Os ofi ciais
reuniam-se, faziam suas estratégias e entravam com parâmetros, perfurando
cartões de leitura de forma a alimentar um programa de simulação para ver quem
ganhava a guerra. Naquela época, usava-se como plataforma o computador
IBM1130.

Nesse mesmo computador surgiu a possibilidade de conectar um terminal


interativo, que tinha a capacidade de usar uma light pen. À época, desenvolvi
vários programas de computação gráfica 2D para esse terminal, programando
em Assembler e Fortran.

A partir da década de 80, surgiram programas no APPLE II, cujo código era feito
em Basic, tipo Packman e Ping-Pong. O Apple já permitia uma tela interativa e o
uso do mouse. Pensando em jogos de guerra, em um nível mais alto, faz sentido
relacionar a área de jogos à de governança. As técnicas de jogos podem ser
aplicadas na área de gestão. Hoje em dia fala-se muito em inteligência
competitiva nessa área.

A inteligência competitiva visa a gerenciar o conhecimento externo à empresa


para melhorar o processo decisório interno. Isso pode ser visto como um jogo.
Então, a ideia de jogos, que em princípio está atrelada a entretenimento, torna-
se uma ideia de jogo real.

5
PLANEJAMENTO DE UM JOGO COMPUTACIONAL

A fase inicial do ciclo de desenvolvimento de um jogo é o planejamento. Assim


que se tem a idéia inicial do jogo, deve-se fazer uma reunião com membros da
equipe onde à mesma deve ser exposta e discutida [PERUCIA et al. 2007].

Cabe lembrar que uma equipe para o desenvolvimento de jogos deve possuir
profissionais de várias áreas (artística, produtores de textos, animadores,
programadores etc.). Terminada a fase de planejamento inicia-se a fase de game
design. Na fase de game design são definidas as principais características do
jogo, como sua interface, jogabilidade, personagens, fases, inimigos, itens e
outras características gerais, que geram o design documento, um documento
onde os membros da equipe podem ter noção de como irão trabalhar para
realizar o que foi planejado [PERUCIA et al. 2007].

É importante também a criação de um level design, que é como um mapa geral


com as missões e desafios das fases em geral. Em projetos maiores é
necessário que cada fase tenha seu planejamento específico, para que cada
membro da equipe possa planejar como fazer a sua parte.

6
Depois de tudo planejado, inicia-se a fase de criação ou desenvolvimento do
jogo. A Figura abaixo mostra esquematicamente as etapas descritas acima.

( Fonte >
https://www.researchgate.net/publication/266074389_Tutorial_para_o_Desenvolvimento_de_Jo
gos_2D_usando_a_Linguagem_Java)

7
A PROGRAMAÇÃO EM 2D

2D é um estilo tradicional que mostra dois ângulos e também mostra os objetos


e personagens em um estilo de desenho animado, mas existe um enorme
público que ainda gosta desses tipos de jogos “retrô” então há importância em
jogos 2D.

Design 2D

Prós

 Em comparação com o 3D, é bem mais barato desenvolver, o que


economiza nos custos;
 É bem mais rápido de produzir;
 Menos software e tecnologia são necessários para projetá-lo. Por isso é
fácil projetar;
 Qualquer um pode aprender sem muito tutorial;
 O design é menos notado do que o jogo e isso não é uma qualidade ruim,
já que o jogador prestará mais atenção na jogabilidade em si.

Contras

 A animação 2D é antiga e tradicional, e pode parecer chata para alguns


usuários;
 Jogos 2D são menos procurados justamente pelo motivo anterior;

É uma animação baseada em sprites de cada objeto a ser animado, assim, não
é tão fácil “copiar e colar”.

8
SEQUÊNCIA DA PROGRAMAÇÃO EM 2D

Criando a Classe Principal

Primeiro será criada a classe principal do jogo, a qual se chamará de Game. Esta
classe irá conter a inicialização do jogo:

A Janela

Dentro da classe game também será feito o desenho da janela. A classe game
deve ser uma extensão de Canvas. Um componente Canvas possibilita criar uma
área na tela, na qual a aplicação poderá desenhar através da sobrescrição do
seu método paint ()

9
No construtor da classe, deve ser feito o desenho da janela e suas
configurações. Para definir a largura (WIDTH) e altura (HEIGHT) da janela, são
usadas constantes da classe Stage, que será criada em seguida, pois quando
for preciso mudar o tamanho da janela, basta mudar os valores destas
constantes no código-fonte:

Depois de criada, a janela deve se tornar visível e ser prioridade para os


comandos de entrada:

10
A Classe Stage

A classe Stage contém alguns dados sobre a fase.

As variáveis WIDTH e HEIGHT vão conter os valores de largura e altura da fase


e das janelas, a variável PLAY_HEIGHT terá o valor da área em que acontecerá
a ação do jogo e SPEED será usada para definir a velocidade do jogo.

11
GERENCIAMENTO DOS RECURSOS DOS JOGOS

Na tela serão desenhados todos os sprites (imagens que irão representar os


gráficos dos personagens, armas etc.) e serão exibidas as informações do jogo.
Para isso, será preciso criar classes para carregar e controlar esses sprites.

O mesmo método pode ser usado para carregar efeitos sonoros e músicas, que
também são muito importantes em um jogo, por isso pode ser criada uma classe
abstrata com os métodos comuns no carregamento de ambos os recursos.

O controle desses recursos é feito através das classes ResourceCache, será


usado um HashMap para armazenar o nome do sprite e a imagem carregada.

Para indicar o caminho dos recursos, será utilizado


getClass().getClassLoader().getResource(), pois desta forma poderá ser usada
uma URL indicando o caminho direto (diretórios onde estão os recursos) de onde
as classes estão sendo carregadas, o que facilita na hora de passar o jogo para
um applet, por exemplo, sem precisar fazer mudanças em relação ao
carregamento de imagens:

12
Todos os recursos estarão na mesma pasta das classes, em um diretório
chamado Resources, então, toda vez que uma imagem for carregada, o
aplicativo deve buscar nesta pasta. Depois disso, o recurso será armazenado no
HashMap criado anteriormente:

Imagens

A classe usada para carregar e gerenciar as imagens será a SpriteManager, que


será uma extensão de ResourceCache.

13
O método loadResource (URL) tenta ler as imagens, se não conseguir, cria um
JOptionPane com uma mensagem de erro e fecha o aplicativo:

Atores

Os atores são todos os objetos que criam a interação no jogo. Neste caso
existem o herói, os inimigos e o tiro. A classe Actor irá conter os métodos comuns
a estes atores:

14
Se um sprite for removido da tela durante a execução do loop principal do jogo,
falhas podem ser geradas na execução do aplicativo. O método setRemove
serve para contornar este problema, pois ele “marca” o sprite para ser removido
durante a próxima execução do loop, evitando problemas na leitura dos sprites:

O método getBounds () cria um retângulo em torno do sprite:

Estes retângulos são usados nos cálculos de detecção de colisão dos


personagens. A Figura 2 exemplifica como esses retângulos são visualizados
pelo aplicativo.

15
O Personagem

A classe Player irá representar o personagem que o jogador irá controlar que
nesse caso é uma nave. Esta classe possui diversas variáveis e métodos
exclusivos do jogador:

O método act() desta classe evita que a nave ultrapasse os limites da tela:

O método updateSpeed () faz com que a nave possa se mover para os lados, de
acordo com a tecla pressionada:

16
O método fire() faz com que a nave possa atirar. Primeiro é feito o
posicionamento do tiro e depois criado um objeto para representá-lo na tela:

TEMPO DE DESENVOLVIMENTO 2D

Esse é outro fator importante. Desenvolver jogos 2D leva menos tempo (pelo
menos, na teoria).

Na minha opinião isso se deve principalmente por conta da criação dos assets
que geralmente precisam ser muito mais elaborados em ambientes 3D, deixando
assim o jogo visualmente muito bonito tanto quanto a complexidade da
programação envolvida, ninguém quer ver um jogo 3D pobre visualmente
(apesar de existirem vários jogos 3D lindos visualmente, porém com um
gameplay horrendo) e fazer isso em 2D é muito mais fácil e rápido principalmente
quando se usa engines.

17
ENGINES

Há várias engines (motores gráficos) disponíveis para criar jogos 2D. Para quem
não sabe as engines são programas que facilitam a criação de jogos sejam eles
2D ou 3D pois possuem bibliotecas com funcionalidades diversas que ajudam
na hora de criar o jogo.

Algumas dessas funcionalidades vão desde a implementação de um sistema de


colisões, suporte a animações, sons, I.A. e suporte à linguagem de programação.

Vários são os motores gráficos existentes, entre eles estão: CryEngine, UDK,
UE4, Unity e Blender que são muito populares e possuem versões gratuitas,
alguns delas como no caso da Unity, UDK e UE4 podem ser usadas para criar
jogos 2D, porém, sua manipulação exige maior grau de conhecimento por parte
do desenvolvedor.

Contudo, existem outras engines como menor grau de complexidade na sua


manipulação. Atualmente são tantas opções que não terei como cobrir todas
elas, mas citaremos algumas:

18
CONSTRUCT 2

É uma das engines mais populares no momento e que tem inclusive um curso
aqui na Academia de Produção de Jogos que é ministrado de forma magistral
pelo Gustavo Larsen. Esta engine permite criar jogos sem que o desenvolvedor
conheça de programação, basta ter um conhecimento introdutório sobre lógica
de programação e muitos jogos podem ser criados.

Ela possui uma versão para estudo que é gratuita e a versão paga caso o
desenvolvedor deseje vender o seu jogo.

Os jogos criados no Construct 2 podem ser rodados na versão paga em várias


plataformas, WEB, Windows Desktop e Phone, IOS, Android, Wii U e Mac
Desktop são algumas delas, já a versão Free pode ser rodada e testada na WEB.

Acredito que a Construct 2 é um ótimo ponto de partida para quem desejar iniciar
sua jornada como desenvolvedor. É possível saber mais sobre ela e baixar a
versão para estudo no site da ferramenta. Lá também será possível encontrar
vários tutoriais para iniciar os estudos.

19
GAME MAKER STUDIO

O Game Maker é umas das engines mais antigas, ela foi criada em 1999 e possui
muito adeptos, é muito fácil encontrar fóruns e sites que ensinam como usar essa
ferramenta através de tutoriais e que servem também para reunir
desenvolvedores de todos os níveis. O GML ou Game Maker Language é a
linguagem de programação utilizada no GM, aprender como utilizá-la permite ao
desenvolvedor uma gama maior de possibilidades para inserir nos jogos, no
entanto, é possível criar bons jogos dominando os recursos básicos dessa
ferramenta. Assim como o Construct 2 o GM possui três versões:

(Fonte: https://producaodejogos.com/jogos-2d/)

20
STENCYL

A Stencyl é outra game engine que vem sendo muito usada principalmente nas
salas de aulas de escolas do ensino fundamental e médio dos EUA e da Europa
com o objetivo de despertar nos alunos o desejo de criar jogos. Possui três
versões, a versão Free permite publicar jogos apenas para WEB, a versão Indie
custa U$ 99 e permite publicar jogos para WEB e Windows, já a versão Studio
custa U$ 199 e permite a publicação de jogos para as plataformas IOS, Android,
WEB e Windows. A forma como essa engine trata a sua área de programação é
sensacional, através de blocos que representam eventos, métodos e ações
podemos criar através do recurso Drag and Drop (arrastar e soltar) tudo o que
acontecerá no jogo.

Mas se você é um usuário avançado e adora programar na “unha” não se


preocupe. A Stencyl permite que o programador crie mais blocos através da
criação de bibliotecas e classe que estendem a área de programação.

21
GAME BUILD STUDIO

Outra opção interessante é o GBS, ele é um aplicativo que roda nativamente no


Adobe Air. Sua instalação é rápida e fácil de fazer. Tem uma versão gratuita e
duas pagas. A área de programação é muito rica e possibilita o uso de funções
de expressões matemáticas e funções especiais. É possível utilizar vetores
importados do Flash (SWF) que podem ser escalonados sem que haja perda de
resolução. Tem como diferencial o desenvolvimento de jogos multiplayer através
de um plug-in que era chamado Player.IO (agora Yahoo Games Network). O
Player.IO oferece uma série de serviços baseados na nuvem.

22
CONSIDERAÇÕES FINAIS

Ao término desta apostila, no qual foram abordados métodos para a criação de


um jogo computacional 2D, espera-se que os estudantes da área de computação
possam ter uma idéia inicial de como esses jogos são feitos, servindo como base
para pesquisas ou estudos.

Através desta apostila foram explicados conceitos importantes no


desenvolvimento de um jogo, como por exemplo, o tratamento de imagens, a
detecção de colisão entre os personagens e a movimentação do jogador na tela.
Em uma próxima etapa será desenvolvido e pesquisa uma estratégia para o
enfoco educativo do sistema possivelmente com alteração para a temática na
área de matemática.

Em jogos 2D o processo é menos “traumático” e mais rápido, inclusive muitos


arts designers ganham dinheiro vendendo assets em vários sites e muitos são
os programas que agilizam essa tarefa assim como a sua animação, facilitando
assim todo o processo de criação de personagens 2D. Programas como Spriter
Pro, Anime Studio, Flash e Toon boom são alguns exemplos.

É claro que desenvolver jogos em 2D não depende apenas do que citei aqui,
mas também de uma boa história, personagem que marque a vida das pessoas,
de um gameplay que convença, de efeitos e uma trilha sonora de tirar o fôlego e
o mais importante, fazer com que as pessoas tenham a maior experiência
iterativa de suas vidas.

23
REFERÊNCIAS

https://producaodejogos.com/jogos-2d/

https://www.crieseusjogos.com.br/e-melhor-criar-um-jogo-2d-ou-3d/

https://canal.cecierj.edu.br/012016/f7b4fd3b1119b78cceb76b70383d82b9.pdf

https://www.researchgate.net/publication/266074389_Tutorial_para_o_Desenvo
lvimento_de_Jogos_2D_usando_a_Linguagem_Java

24

Você também pode gostar