universidade do vale do itajaÍ centro de ciÊncias ...siaibib01.univali.br/pdf/yuki eduardo milano...
TRANSCRIPT
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
APLICAÇÃO DE MÁQUINAS DE ESTADOS EM FERRAMENTA DE APOIO À DESENVOLVIMENTO DE JOGOS
Área de Jogos Digitais
por
Yuki Eduardo Milano Egawa
Rudimar Luís Scaranto Dazzi, Dr. Orientador
Itajaí (SC), dezembro de 2010
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
APLICAÇÃO DE MÁQUINAS DE ESTADOS EM FERRAMENTA DE APOIO À DESENVOLVIMENTO DE JOGOS
Área de Jogos Digitais
por
Yuki Eduardo Milano Egawa Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Rudimar Luís Scaranto Dazzi, Dr.
Itajaí (SC), dezembro de 2010
ii
SUMÁRIO
LISTA DE ABREVIATURAS.................................................................. iv�
LISTA DE FIGURAS ................................................................................. v�
RESUMO .................................................................................................... vi�ABSTRACT ............................................................................................... vii�1. INTRODUÇÃO ....................................................................................................... 1�1.1� PROBLEMATIZAÇÃO ..................................................................................... 2�1.1.1� Formulação do Problema ................................................................................. 2�1.1.2� Solução Proposta ............................................................................................... 2�1.2� OBJETIVOS ........................................................................................................ 3�1.2.1� Objetivo Geral ................................................................................................... 3�1.2.2� Objetivos Específicos ........................................................................................ 3�1.3� METODOLOGIA ................................................................................................ 3�1.4� ESTRUTURA DO TRABALHO ....................................................................... 4�2. FUNDAMENTAÇÃO TEÓRICA ......................................................................... 5�2.1 O QUE É UM JOGO ............................................................................................ 5�2.2 INTELIGÊNCIA ARTIFICIAL EM JOGOS ELETRÔNICOS ..................... 5�2.3 GAME DESIGN .................................................................................................... 6�2.3.1 Idéia ..................................................................................................................... 6�2.3.2 Rascunhos do jogo .............................................................................................. 7�2.3.3 Detalhamento do jogo ........................................................................................ 7�2.4 UMA VISÃO GERAL DA FERRAMENTA GAME MAKER ........................ 7�2.4.1 Interface do Game Maker ................................................................................. 8�2.4.2 O gerenciador de Recursos ................................................................................ 9�2.4.3 A linguagem GML ............................................................................................ 10�2.5 ANÁLISE DE SOLUÇÕES SIMILARES ........................................................ 11�2.5.1 Space invaders .................................................................................................. 11�2.5.2 Defender ............................................................................................................ 12�2.5.3 Gradius .............................................................................................................. 13�2.5.4 Radiant Silvergun ............................................................................................. 14�2.5.5 Ikaruga .............................................................................................................. 15�2.5.6 Conclusões sobre a análise ............................................................................... 16�3 DESENVOLVIMENTO ........................................................................................ 18�3.1 GAME DESIGN DOCUMENT ......................................................................... 18�3.2 PROGRAMAÇÃO E BUSCA/EDIÇÃO DE RECURSOS UTILIZADOS PELO JOGO .............................................................................................................. 40�3.3 PREPARO DO MATERIAL INSTRUCIONAL ............................................. 41�3.4 TESTES ................................................................................................................ 41�3.5 RESULTADOS .................................................................................................... 42�
iii
4 Conclusões .............................................................................................. 50�REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 52�
iv
LISTA DE ABREVIATURAS
2D Duas dimensões ECU East Carolina University EULA End user license agreement GDD Game Design Document GM Game Maker GML Game Maker Language IA Inteligência Artificial LIA laboratório de Inteligência Aplicada TCC Trabalho de Conclusão de Curso UNIVALI Universidade do Vale do Itajaí
v
LISTA DE FIGURAS
Figura 1. Interface do Game Maker. .................................................................................................... 8 Figura 2. Space Invaders .................................................................................................................... 12 Figura 3. Defender .............................................................................................................................. 13 Figura 4. Gradius................................................................................................................................14 Figura 5. Radiant S.ilvergun ..............................................................................................................15 Figura 6. Ikaruga................................................................................................................................16 Figura 7. Screen Flow.........................................................................................................................24 Figura 8. Máquina de estados do inimigo 1.......................................................................................27 Figura 9. Máquina de estados do inimigo 2.......................................................................................28 Figura 10. Máquina de estados do inimigo 3.....................................................................................29 Figura 11. Máquina de estados do inimigo 4.................................................................................... 30 Figura 12. Máquina de estados do inimigo 5.....................................................................................31 Figura 13. Máquina de estados do inimigo 6.................................................................................. ..32 Figura 14. Máquina de estados do inimigo 7.....................................................................................33 Figura 15. Máquina de estados do boss 1 .........................................................................................34 Figura 16. Máquina de estados do boss 2 .........................................................................................35 Figura 17. Máquina de estados do boss 3..........................................................................................36 Figura 18. Máquina de estados do boss 4..........................................................................................37 Figura 19. Sprite da nave ...................................................................................................................38 Figura 20. Sprite de Wardemon .........................................................................................................39 Figura 21. Sprite de Wardemon derrotado.........................................................................................40 Figura 22. Resultado do teste na categoria jogabilidade....................................................................42 Figura 23. Resultado do teste na categoria ambientação ..................................................................44 Figura 24. Resultado do teste na categoria enredo ...........................................................................44 Figura 25. Resultado do teste na categoria interação com o usuário .................................................45 Figura 26. Resultado do teste na categoria customização ................................................................. 45 Figura 27. Resultado do teste na categoria interação social...............................................................46 Figura 28. Resultado do teste na categoria variedade........................................................................46 Figura 29. Resultado do teste na categoria qualidade de implementação técnica .............................47 Figura 30. Resultado do teste na categoria coesão.............................................................................47 Figura 31. Perfil do usuário A............................................................................................................48 Figura 32. Perfil do usuário B...........................................................................................................49 Figura 33. Perfil do usuário C............................................................................................................49
vi
RESUMO
EGAWA, Yuki E. M. Jogo de nave em Game Maker. Itajaí, 2010. 66 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)–Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2010. O primeiro jogo do gênero shoot ‘em up foi lançado por volta de 1978 e desde então vários outros jogos deste gênero começaram a surgir. Este trabalho se propôs a identificar as principais características deste gênero de jogo e estudar a aplicação de Inteligência Artificial em ferramenta de apoio ao desenvolvimento dela. Para tanto, foi realizada uma pesquisa sobre design de jogos, análise de jogos similares e o processo de documentação de um jogo. Foi dada uma atenção especial aos aspectos relacionados à jogabildiade para que ela oferecesse combates dinâmicos tirando proveito da IA aplicada no jogo. Após a fase de desenvolvimento, foram realizados testes com o intuito de verificar os aspectos que poderiam ser melhorados nele. Além disso, foi preparado um tutorial documentado o processo de desenvolvimento de um jogo semelhante utilizando a ferramenta Game Maker para que outros programadores interessados possam utilizá-lo como referência. Os resultados alcançados mostram que os pontos positivos do jogo são a variedade de comportamentos dos inimigos e a jogabilidade diferenciada, focos deste trabalho. Palavras-chave: Game Maker. Jogo de nave. Design de vídeo games. Máquina de estados.
vii
ABSTRACT
The first shoot ‘em up video game was released on 1978 and several other games of the same genre were released since then. This study aimed to identify the main characteristics of this genre of game and study the application of Artificial Intelligence on a game development tool. To this end, a research about game design, analysis of similar solutions and documentation process was conducted. Special attention was paid to aspects related to its game play in order to offer dynamic battles to the player by taking advantage of the AI applied in the game. After the game was developed, tests were performed on it in order to determine which aspects could be improved. In addition, a tutorial documenting the process of developing a similar game using the Game Maker tool was prepared so other developers could use it as reference. The results show that the positive points of the game are the variety of behaviors of the enemies and the distinct game play, which were the focus of this work. Keywords: Game Maker. Shoot ‘em up. Vídeo Game Design. State machine
1. INTRODUÇÃO
Um vídeo game é um jogo eletrônico que envolve interação com uma interface de usuário
para gerar feedback visual em um dispositivo de vídeo. Além de servir como uma forma de lazer e
relaxamento, vídeo games de ação propiciam aos seus jogadores uma habilidade visual-motora
(atividades relacionando a visão com movimentos musculares) mais apurada, resultando em maior
resistência à distração, maior sensibilidade para com informações detectadas na visão periférica, e
maior facilidade para contagem de objetos apresentados brevemente ao indivíduo (GREEN, 2006).
O desenvolvimento de vídeo games mais elaborados envolve um campo de estudo
multidisciplinar compreendendo, por exemplo, programação, design gráfico, design de som e de
música. Por esta razão, programadores com interesse nesta área podem se beneficiar de uma
ferramenta que facilite o gerenciamento destes vários recursos envolvidos na concepção de um
vídeo game.
Um exemplo deste tipo de ferramenta é o Game Maker, também conhecido como GM.
Trata-se de um software proprietário desenvolvido em Delphi por Mark Overmars, do
Departamento de Ciência da Computação da Universidade Utrecht, situada na Holanda (YOYO
GAMES, 2009b). Originalmente, o Game Maker era chamado de Animo e consistia apenas em uma
ferramenta para criação de gráficos. Com o passar do tempo, ele foi se desenvolvendo e acabou se
tornando uma ferramenta mais completa, oferecendo recursos de programação e gerenciamento dos
vários elementos de um jogo, como imagens e sons. Hoje em dia, o Game Maker é usado para
ensinar estudantes desde o ensino básico até universitários, pois disponibiliza uma linguagem de
altíssimo nível (com nível de abstração relativamente elevado), o GML (Game Maker Language)
(LOBÃO, 2008).
Este projeto consistiu no estudo da aplicação de IA em uma ferramenta de apoio ao
desenvolvimento de jogos (Game Maker). A IA utilizada consiste em máquinas de estados. Uma
máquina de estados é uma modelagem de um comportamento através de um conjunto de estados e
um conjunto de transições possíveis de um estado para outro (GILL, 1962). Certamente não é uma
forma de IA muito complexa em relação à estudada no meio acadêmico, no entanto, o trabalho
mostra que esta aplicação acarretou em resultados positivos quanto à jogabilidade do jogo.
A execução deste projeto de pesquisa se justificou em nível de TCC (Trabalho de Conclusão
de Curso) para o Curso de Ciência da Computação uma vez que trata do desenvolvimento de uma
2
solução computacional que faz uso de muitas tecnologias, conceitos e teorias relevantes a essa área,
como as listadas a seguir:
• Modelagem do jogo.
• Programação para implementação do jogo.
• Pesquisas que servem como materiais de referência para interessados em desenvolver na
ferramenta Game Maker.
• A utilização de algumas formas de inteligência artificial aplicada às entidades inimigas
no jogo (mais especificamente máquinas de estado).
Além disso, foi preparado um documento instrucional que serve como material de referência
para programadores iniciantes interessados em desenvolver um jogo neste estilo usando o Game
Maker.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
Jogos de nave do gênero Shoot 'em up1 existem desde 1978 e apresentaram evoluções ao
decorrer do tempo. Embora certas características mantidas ao longo deste tempo sejam importantes
por definirem o gênero, outras características predominantes nestes jogos, principalmente no que
diz respeito ao comportamento dos inimigos, fazem com que eles se tornem repetitivos e pouco
desafiadores.
1.1.2 Solução Proposta
Para a solução do problema foi desenvolvido um jogo de nave com a aplicação de
Inteligência Artificial nas entidades inimigas do jogo. O intuito é tornar a reação inimiga mais
próxima à de um jogador humano e, com isso, tornar o jogo menos repetitivo e mais desafiador.
Para a produção do jogo foi utilizado o Game Maker, uma ferramenta de fácil utilização
para o desenvolvimento de jogos que permite o foco da programação na Inteligência Artificial pelo
1 Um jogo onde o protagonista combate um grande número de inimigos atirando neles enquanto desvia dos tiros (BIELBY, 1990).
3
fato de oferecer vários algoritmos prontos, como por exemplo, o de checagem de colisão entre
sprites, movimentação de sprites e vários outros algoritmos essenciais para este gênero de jogo.
Além do jogo, foi produzido um material de referência para outros programadores
interessados no desenvolvimento de jogos utilizando o Game Maker.
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral deste projeto foi o de desenvolver um jogo de nave estilo Shoot 'em up que
aplique conhecimentos na área de Inteligência Artificial nos inimigos.
1.2.2 Objetivos Específicos
Os objetivos específicos deste trabalho foram:
1. Analisar soluções similares para identificar características importantes para o jogo;
2. Criar um enredo para o jogo;
3. Modelar a inteligência (IA) das entidades inimigas;
4. Realizar a modelagem conceitual do jogo;
5. Implementar o jogo;
6. Escrever um documento instrucional que servirá como um tutorial para fazer um jogo Shoot 'em up usando o Game Maker; e
7. Testar o jogo para identificar se ele está correspondendo ao planejado na modelagem.
1.3 Metodologia
A metodologia para o desenvolvimento deste trabalho é composta por cinco etapas. Na
primeira etapa foi realizado um estudo sobre vídeo games, mais especificamente vídeo games do
gênero Shoot 'em up. Foi realizada uma pesquisa sobre design de jogos e sobre a ferramenta
utilizada para o processo de desenvolvimento de um jogo deste gênero que possibilite a aplicação
de conceitos de Inteligência Artificial. Na etapa dois, realizou-se um estudo sobre alguns jogos de
naves existentes com o intuito de identificar as principais características (positivas e negativas) dos
jogos deste gênero, bem como elementos que são comuns à todos os jogos deste gênero. Após obter
as informações relevantes, o próximo passo foi pesquisar com mais detalhes a ferramenta a ser
usada para o desenvolvimento do jogo e modelar o jogo através da definição de um GDD (Game
4
Design Document). Para a etapa quatro, desenvolvimento do jogo, foi utilizado o Game Maker.
Nesta etapa de desenvolvimento, ocorreu a programação do jogo em GML e o preparo dos recursos
a serem utilizados no jogo como sprites e sons, estes foram buscados na internet e editados no
próprio Game Maker ou em outros softwares para que se ajustem ao jogo. Enfim na etapa cinco,
foram realizados testes e ajustes finais em cima do jogo desenvolvido.
1.4 Estrutura do trabalho
Este trabalho está estruturado em 4 capítulos. O Capítulo 1 consiste na Introdução ao
trabalho. O Capítulo 2 contém toda a etapa de Fundamentação Teórica, apresentando todos os
conceitos necessários para o entendimento do trabalho. Tais como, conceitos sobre design de jogos
e a ferramenta a ser utilizada bem como a análise de trabalhos similares. O Capítulo 3 apresenta as
definições e a descrição sobre o jogo que este trabalho se propôs a desenvolver, incluindo a
documentação no formato GDD (Game Design Document). E, por fim, o Capítulo 4 apresenta as
Conclusões obtidas com este trabalho.
2. FUNDAMENTAÇÃO TEÓRICA
Este capítulo apresenta a Fundamentação Teórica do trabalho explicando o que é um jogo, o
que é Inteligência Artificial e como ela vem sendo utilizada em jogos eletrônicos, como é o game
design utilizado atualmente por desenvolvedores de jogos e a ferramenta a ser utilizada para o
desenvolvimento do jogo. Além disso, é realizada uma análise em cima de jogos similares ao
proposto pelo TCC com o intuito de extrair as características desejáveis em um jogo deste gênero e
as que deveriam ser eliminadas para se alcançar o resultado desejado.
2.1 O que é um jogo
Um jogo é um sistema formalmente fechado que representa de forma subjetiva um
subconjunto da realidade (BERTHÊM et al., 2007). Em outras palavras, um jogo é uma forma de
simular ações seguindo regras de um universo imaginário que pode ser, ou não, baseado na
realidade.
Assim, quando se fala em jogo, imagina-se inicialmente o cenário em que este ocorrerá, e o
ambiente deve ser autossuficiente, ou seja, todas as informações necessárias para que o jogador
sinta-se envolvido devem estar presentes (BRANCHER, 2009).
2.2 Inteligência artificial em jogos eletrônicos
Para os desenvolvedores de jogos eletrônicos, as aplicações computacionais de IA
(Inteligência Artificial) e o significado do termo IA são diferentes dos encontrados no meio
acadêmico (KISHIMOTO, 2009). A principal diferença está no enfoque dado em cada um dos
meios. No meio acadêmico, o objetivo da IA é resolver problemas complicados enquanto na grande
parte dos jogos eletrônicos o objetivo é o de proporcionar diversão.
Neste trabalho, a IA utilizada consiste em máquinas de estados. Uma máquina de estados é
uma modelagem de um comportamento através de um conjunto de estados e um conjunto de
transições possíveis de um estado para outro (GILL, 1962).
O funcionamento de uma Máquina de Estados compreende ainda a alimentação de alguns
dados de entrada à Máquina, que serão utilizados na Máquinas de Estados. Adicionalmente, a
execução da Máquina de Estados pode gerar dados de saída como resultado do andamento do
processo. Um dos estados da Máquina é marcado como estado inicial; a execução é iniciada com o
6
estado inicial como estado corrente. Além disso, um ou mais estados podem ser marcados como
estados finais (GILL, 1962).
Certamente não é uma forma de IA muito complexa em relação à estudada no meio
acadêmico, porém já é algo muito mais elaborado que uma simples repetição de padrões de
movimentos encontrados em jogos do gênero shoot ‘em up.
2.3 Game design
Existem várias definições para game design, mas em geral, é o que determina a jogabilidade,
as escolhas que o jogador terá dentro do mundo do jogo e as consequências que suas escolhas vão
ter no resto do jogo (BERTHÊM et al., 2007). A seguir será feita uma breve explanação dos
principais conceitos de game design.
2.3.1 Idéia
Para a formulação da idéia do jogo, é utilizada a técnica de brainstorm a partir de um
pequeno conceito. Questões como “Qual o objetivo do jogo?” e “O que tornará o jogo divertido?”
podem auxiliar o processo de desenvolvimento de idéias (BERTHÊM et al., 2007). No jogo
proposto pelo TCC, a idéia surgiu a partir de experiências do autor com vários jogos do mesmo
gênero e o que ele gostaria que fosse diferente em cada um para que fossem mais divertidos. Pode-
se citar como exemplo de detalhes identificados que poderiam proporcionar maior diversão em
jogos de nave:
• Localização inicial fixa dos inimigos: quando os inimigos possuem uma localização inicial
fixa, o jogador acaba decorando estas posições e o jogo acaba se tornando repetitivo e pouco
desafiador em alguns casos. Isto pode ser facilmente resolvido bastando acrescentar um
componente de aleatoriedade na posição inicial dos inimigos, tomando cuidado para não
desequilibrar o jogo (por exemplo, tomando cuidado para que o inimigo não apareça muito
perto do jogador repentinamente).
7
• Sistema de customização da nave: na maioria dos jogos de nave, as naves controladas pelo
jogador se modificam de certa forma através da aquisição de powerups2. Porém esta
modificação não é permanente. A introdução de um sistema de customização da nave do
jogador acrescenta uma nova modalidade ao jogo que é a de administração. Saber gastar os
recursos adequadamente para buscar maior eficiência nas próximas fases. Além disso, com
este sistema, o jogador pode ter uma experiência de jogo completamente diferente a cada
vez que joga, pois a nave se comportará de maneira completamente diferente.
2.3.2 Rascunhos do jogo
É uma fase de game design onde são feitos rascunhos de vários elementos do jogo como
personagens, itens, telas, entre outros (BERTHÊM et al., 2007). Estes rascunhos auxiliam bastante,
pois permitem que se tenha uma noção da jogabilidade e do equilíbrio do jogo.
Por exemplo, em um jogo de nave, rascunhos de inimigos e tipos de projéteis em uma
determinada fase permitem que se tenha uma idéia da dificuldade desta fase, levando-se em
consideração a quantidade de inimigos que irão aparecer simultaneamente e o espaço que jogador
terá para desviar deles.
2.3.3 Detalhamento do jogo
É o momento em que o jogo se torna mais complexo e detalhado. É necessário pensar em
cada detalhe importante e escrever algo a esse respeito, pois se um determinado detalhe não for
programado ele simplesmente não acontecerá (BERTHÊM et al., 2007).
Neste projeto de jogo, o detalhamento pode ser verificado na especificação do GDD (Game
Design Document – Documento de Design de Jogos).
2.4 Uma visão geral da ferramenta Game Maker
O Game Maker é um software proprietário desenvolvido em Delphi por Mark Overmars do
Departamento de Ciência da Computação da Universidade Utrecht situada na Holanda (YOYO
2 Itens que fortalecem a nave de certa forma quando são coletados (tiro mais forte por exemplo).
8
GAMES, 2009a). Apesar de se tratar de um software de fácil utilização por desenvolvedores
iniciantes permite a realização de tarefas mais complexas, pois oferece recursos opcionais voltados
para programadores mais experientes como o uso da linguagem de script GML (Game Maker
Language).
Pode-se destacar entre algumas das vantagens que ele oferece:
• Possui uma versão gratuita (porém com certas limitações);
• Executáveis criados a partir do Game Maker podem ser distribuídos sob qualquer licença
sujeita à EULA (End User License Agreement) do Game Maker;
• Scripts podem ser escritos usando a sua linguagem de alto nível GML;
• Permite a criação de vários tipos de jogos diferentes; e
• Possui gerenciador de recursos a serem utilizados pelo jogo.
2.4.1 Interface do Game Maker
O Game Maker oferece uma interface simples e intuitiva conforme pode ser observado na
Figura 1. Esta interface permite gerenciar os sprites, fundos de tela, objetos, sons, e todos os demais
elementos usados no ambiente do jogo.
Figura 1. Interface do Game Maker.
Fonte: Yoyo Games (2009a)
9
Existe uma barra de menus padrão, onde são encontradas funções para salvar ou abrir
projeto, importar ou criar recursos, opções de debug do projeto, visualização do help e materiais de
consultas. Abaixo da barra de menus encontra-se a barra de atalhos, que contém ícones que
disparam as ações mais úteis e usadas com mais freqüência. Após a barra de atalhos podem ser
encontrados dois frames: do lado esquerdo o gerenciador de recursos, e do lado direito o frame
principal onde é mostrado o recurso selecionado, bem como suas opções de edição.
2.4.2 O gerenciador de Recursos
O Game Maker possui gerenciadores dos diferentes recursos utilizados pelo jogo.
O gerenciador de sprites
Em computação gráfica um sprite é uma imagem ou animação que é integrada a uma cena
maior (WIKIPEDIA, 2009f). O gerenciador de sprites permite ao usuário criar novos sprites,
importar sprites de arquivos de imagem, editar os sprites e configurar as propriedades do sprite
(tamanho do sprite, número de imagens caso o sprite seja uma animação, bloco de colisão, etc)
(YOYO GAMES, 2009a).
O Gerenciador de Sons
Qualquer tipo de som a ser utilizado pelo jogo em desenvolvimento estará no gerenciador de
som, que além de organizar e disponibilizar os sons do jogo também permite ao usuário importar
arquivos de som de diferentes formatos, definir o tipo do som (se é um efeito sonoro, ou se é uma
música de fundo), adicionar alguns efeitos no som, etc (YOYO GAMES, 2009a).
O Gerenciador de Planos de Fundo
Os planos de fundo (ou backgrounds) a serem utilizados pelo jogo são controlados por este
gerenciador. É possível importar imagens a partir de diferentes formatos de arquivo bem como
definir algumas propriedades do plano de fundo como o tamanho e a transparência (YOYO
GAMES, 2009a).
O Gerenciador de Trajetórias
10
Permite a criação e edição de trajetórias. As trajetórias servem para serem associadas a
algum objeto do jogo. Por exemplo, pode-se criar uma trajetória em zigue-zague e fazer com que
diferentes inimigos se movimentem desta forma (YOYO GAMES, 2009a).
O Gerenciador de Scripts
Aqui são definidos os scripts utilizados pelo jogo escritos na linguagem GML (YOYO
GAMES, 2009a).
O Gerenciador de Fontes
Permite criação e edição de fontes personalizadas que podem ser usadas no jogo (YOYO
GAMES, 2009a).
O Gerenciador de Linhas de Tempo
Permite a criação e edição de linhas de tempo. Uma linha de tempo consiste numa série de
associações entre um frame e uma ação. Por exemplo, pode ser criada uma linha de tempo onde a
cada 150 frames o objeto associado dispara um tiro. Mais tarde, esta linha de tempo pode ser
associada à algumas classes de inimigos (YOYO GAMES, 2009a).
O Gerenciador de Objetos
Permite a definição de objetos que participarão do jogo. Um objeto é qualquer elemento do
jogo que irá popular uma sala e executará ações reagindo à eventos. Um objeto pode ou não ser
mostrado na tela através do sprite associado a ele (YOYO GAMES, 2009a).
O Gerenciador de Salas
Permite a criação e configuração de salas que farão parte do jogo, sendo que o andamento do
jogo sempre ocorre dentro de alguma sala. As salas possuem características como o tamanho, plano
de fundo, tipo de scrolling, disposição inicial dos objetos dentro da sala, entre outros. Além disso,
cada sala possui a sua definição de quantos frames por segundo ela renderiza (desenha na tela)
(YOYO GAMES, 2009a).
2.4.3 A linguagem GML
11
O Game Maker possui uma linguagem de script própria chamada GML (Game Maker
Language). Ela é utilizada para programar jogos mais complexos onde o uso exclusivo de drag-
and-drop (arrastar e largar) de ações não seriam suficientes (GAME MAKER WIKI, 2009). Outra
característica dela é que possui uma sintaxe variável, isto significa que pode ser escrita na sintaxe
de diferentes linguagens de programação embora a mais comumente usada é a do estilo C/C++
(GAME MAKER WIKI, 2009).
A GML pode ser usada na ação “Execute Code” ou pode ser escrita em scripts que podem
ser invocados a qualquer hora (GAME MAKER WIKI, 2009). Neste trabalho, toda a definição de
scripts será feita utilizando-se GML, pois além de facilitar a manutenção de código é menos
trabalhosa para quem sabe programar.
Não se conhece nenhum jogo do gênero shoot ‘em up feito em GameMaker com GML que
utilize alguma técnica de IA para controlar os inimigos. Neste projeto foram utilizadas máquinas de
estados programadas através do uso da GML.
2.5 Análise de soluções similares
2.5.1 Space invaders
O Space invaders foi lançado em 1978 e foi um dos primeiros jogos do gênero Shoot 'em up.
O jogo mostra a nave controlada pelo jogador e as naves inimigas através de gráficos em 2D. O
objetivo é destruir as naves inimigas com tiros de laser e somar a maior quantidade de pontos
possível. Apenas a movimentação horizontal é permitida. Quanto mais inimigos são destruídos,
mais inimigos surgem e mais rápidos eles se movem (WIKIPEDIA, 2009a).
Embora seja um jogo simples para os padrões atuais, introduziu vários conceitos importantes
que fazem parte dos Shoot 'em ups que surgiram posteriormente. Alguns conceitos introduzidos
pelo jogo:
• Acréscimo na pontuação ao destruir naves inimigas;
• Quantidade limitada de “vidas”. Quando as “vidas” do jogador acabam, a pontuação
é registrada e ele deve começar o jogo desde o início;
• Movimentação da nave (apenas horizontalmente) para desviar de naves e tiros
inimigos; e
12
• Aumento progressivo da dificuldade (surgem mais naves e elas ficam cada vez mais
rápidas).
A Figura 2 mostra uma screenshot do jogo.
Figura 2. Space Invaders
Fonte: Wikipedia (2009a).
2.5.2 Defender
O Defender também faz parte da geração inicial de jogos de nave. Lançado em 1980, não se
tornou tão popular quanto o Space Invaders pelo fato de oferecer uma configuração de controle
complicada, e por se tratar de um jogo bem difícil (WIKIPEDIA, 2009b).
Alguns diferenciais introduzidos pelo jogo:
• Nível de dificuldade muito alto;
• Permitia movimentação, tanto lateral quanto vertical;
• Botões com funções diferentes. Por exemplo: existe um botão que faz a nave disparar
um projétil, outro que faz nave soltar uma mina, outro botão que faz com que a nave mude o sentido
horizontal; e
13
• Inclusão de outros objetivos além de destruir os inimigos. Por exemplo: o jogador deve
impedir que alguns seres humanóides do jogo sejam capturados por inimigos.
A Figura 3 mostra uma screenshot do jogo.
Erro! Fonte de referência não encontrada.. Defender
Fonte: Wikipedia (2009b).
2.5.3 Gradius
Gradius é um jogo de nave lançado pela Konami em 1985 para o console Nintendo.
Introduziu um melhoramento em gráficos em relação a jogos de naves lançados anteriormente com
sprites coloridos e chefões grandes.
Algumas características interessantes do jogo:
• Divisão por fases: o objetivo é passar por todas as fases e não apenas conseguir uma
pontuação alta;
• Presença de “chefões”, que consistem em inimigos maiores, mais fortes, mais resistentes
e mais elaborados. Geralmente é necessária uma tática para derrotar esse tipo de inimigo;
• Os “chefões” possuem um ponto fraco que geralmente consiste em um núcleo onde o
jogador deve mirar os seus tiros; e
• O jogador escolhe quais aspectos mudar na nave através da ativação de powerups. Isto
dá espaço para certas estratégias em que deve-se levar em consideração a adaptação da nave à
diferentes situações (WIKIPEDIA, 2009c). A Figura 4 mostra uma screenshot do jogo.
14
Figura 4. Gradius
Fonte: Wikipedia (2009c).
2.5.4 Radiant Silvergun
Jogo desenvolvido pela Treasure, lançado em 1998 para o Arcade e para console Saturn com
grande enfoque na narrativa.
Alguns diferenciais introduzidos pelo jogo:
• A nave possui sete tipos de tiros. Todos os tipos estão sempre disponíveis para uso. O
tipo de tiro disparado depende do botão ou da combinação de botões pressionados;
• Ausência de powerup;
• As armas podem aumentar de nível (tornando-se mais fortes) através do uso da arma
para marcar pontos;
• Incentiva o jogador a pensar sobre a melhor arma a ser utilizada em cada situação; e
• Possui um enredo muito bem integrado ao design das fases (WIKIPEDIA, 2009d).
A Figura 5 mostra uma screenshot do jogo.
15
Figura 5. Radiant Silvergun
Fonte: Wikipedia (2009d).
2.5.5 Ikaruga
Jogo desenvolvido pela Treasure e “G.rev” lançado em 2001 para o Arcade.
Alguns diferenciais introduzidos pelo jogo:
• Sistema de polaridade: o jogador pode trocar a cor da nave a qualquer momento. Apenas
os projéteis da cor oposta atingem o jogador;
• Projéteis da mesma cor são absorvidos e convertidos em energia para uma arma da nave
controlada pelo jogador;
• A nave do jogador dispara projéteis da cor atual da nave. Projéteis da cor oposta ao
inimigo causam dano dobrado;
• Recompensa o jogador com pontos extras ao destruir uma seqüência de inimigos da
mesma polaridade; e
16
• Permite ao jogador a estratégia de não atirar em nenhum inimigo, apenas absorvendo
seus ataques e fazendo-os irem embora (WIKIPEDIA, 2009e).
A Figura 6 mostra uma screenshot do jogo.
Figura 6. Ikaruga
Fonte: Wikipedia (2009e).
2.5.6 Conclusões sobre a análise
A maioria dos jogos Shoot 'em up não dá ênfase à Inteligência Artificial dos inimigos. A
movimentação e as ações deles são orientadas por padrões simples e repetitivos que podem ser
memorizados pelo jogador e os combates acabam não oferecendo uma boa dinâmica.
Na Tabela 1 pode ser observada uma comparação das características dos jogos analisados e
do jogo proposto no TCC. Como o enfoque do trabalho é na programação e não na edição de
recursos, os gráficos utilizados não são muito detalhados. Foi buscado um nível mediano de
complexidade no controle da nave para que o jogo não ficasse muito simples a ponto de ser
monótono nem muito complexo a ponto de fazer com que o jogador desista de aprender o jogo.
Chefões foram utilizados, pois fazem parte de um elemento clássico em jogos de nave e
proporcionam um desafio extra. Além disso, foi implementado um sistema diferente dos demais
17
jogos no que diz respeito ao desenvolvimento da nave ao longo do jogo. Este desenvolvimento
ocorre através da customização da nave entre uma fase e outra gastando as energias coletadas pelo
jogador.
Tabela 1. Comparação dos jogos descritos com o jogo proposto no tcc.
Tabela comparativa
Space invaders
Defender Gradius Radiant Silvergun
Ikaruga Jogo proposto no tcc
Gráfico Simples Simples Simples Detalhado Super detalhado
Simples
Jogabilidade Simples Complexa Razoável Razoável Razoável Razoável Sistema de Powerups
Não possui Não possui Jogador escolhe powerup a ser ativado
Quanto mais utilizada uma determinada arma, mais forte ela fica
Não possui Jogador “compra” os powerups entre uma fase e outra
Chefões no final ou ao decorrer das fases
Não Não Sim Sim Sim Sim
Nível de dinamismo de combate decorrente da IA dos inimigos
Muito baixo
Muito baixo Muito baixo Baixo Baixo Médio
Ano
1978 1980 1985 1998 2001 2009
18
3 DESENVOLVIMENTO
Este capítulo apresenta as definições quanto ao jogo que este trabalho se propôs a
desenvolver. Na primeira seção é apresentada a documentação do jogo em GDD. O GDD contém os
detalhes da modelagem do jogo incluindo a descrição das máquinas de estados utilizadas nos
inimigos. Na seção seguinte são apresentados os aspectos relacionados ao processo de
desenvolvimento do jogo (programação e busca/edição de recursos utilizados pelo jogo). A terceira
etapa descrita é a do preparo do material instrucional. A quarta etapa consiste na descrição dos
testes realizados em cima do jogo. E por fim, são apresentados os resultados do teste aplicado.
3.1 Game Design Document
O jogo foi modelado seguindo o formato GDD. O GDD é um documento de referência para
que membros de uma equipe de desenvolvimento possam consultá-lo constantemente a fim de
procurar uma informação específica que eles estiverem precisando. O GDD consiste em um
documento passível de alterações ao decorrer do desenvolvimento de um jogo, pois é uma
ferramenta de comunicação entre os membros de uma equipe para que todos possam acompanhar a
evolução do jogo (BALDWIN, 2009).
O modelo GDD utilizado aqui é o proposto por Baldwin e está disponível em seu site
pessoal (BALDWIN, 2009). Para meios didáticos, o modelo utilizado neste trabalho contém
descrições do que deve estar presente em cada um dos itens.
1. Folha de rosto
1.1. Nome do jogo – Pode ser adicionado um subtítulo ou uma sentença que resuma o conceito
principal do jogo.
1.2. Neo Galaga.
1.3. Informações sobre direitos autorais (Copyright Information)
Não se aplica.
[EMM1]
1.4. Número da versão, Autor, Data
Versão 1.0.
Autor: Yuki Eduardo Milano Egawa
19
Data: 01/10/2010
2. Sumário – Este sumário deve incluir todas as subseções do documento. Se possível, fazer uso de
hyper links.
Não se aplica.
3. Histórico de Design (Design History) – Uma listagem de breves descrições sobre cada versão e
suas mudanças.
v0.1: Implementado o motor do jogo.
v0.5: Implementado 5 inimigos e uma fase do jogo.
v0.6: Implementado todas as fases, os chefes do jogo, powerup de tiro duplo, sistema de
upgrade da nave.
v0.7: Adicionado o último chefe do jogo.
v0.9: Refinamento e balanceamento do jogo.
v1.0: Alterações de balanceamento do jogo levando em consideração os resultado dos testes
e feedback dos testadores.
4. Seção 1 – Visão geral do jogo
4.1. Conceito do jogo (Game Concept)
O Neo Galaga é um jogo feito por apenas um desenvolvedor para o Trabalho de Conclusão
de Curso do curso de Ciência da Computação. O jogador controla uma nave “Anon-
explorer” e deve destruir os inimigos e coletar a maior quantidade possível de energia
liberada por eles para ficar mais forte.
O jogo dá ênfase ao uso do mouse para controlar a direção dos tiros disparados e na
utilização de máquina de estados para controlar as ações dos inimigos.
4.2. Características do jogo (Feature Set)
• Controle da direção dos tiros da nave através do mouse;
• Customização e upgrade da nave entre uma fase e outra. As características da nave
passíveis de modificações são: tipo de tiro primário, velocidade da nave, armadura da
nave, tamanho do ângulo disponível para disparar, tempo de espera necessário entre um
super tiro e outro;
20
• Ações dos inimigos controladas por máquina de estado;
• Nem todos os inimigos possuem uma posição inicial fixa ao decorrer das fases,
prevenindo a tática do jogador de decorar a posição de onde vêm os inimigos em um
determinado momento; e
• Jogabilidade baseada em combates dinâmicos com o intuito de fazer com que o jogador
tenha de analisar o comportamento dos inimigos e criar táticas de combate para
conseguir progredir.
4.3. Gênero (Genre)
Shoot 'em up vertical.
4.4. Público-alvo (Target Audience)
Fãs de jogos de nave em geral.
4.5. Resumo do fluxo do jogo (Game Flow Summary) – Como o jogador se move durante o
jogo. Tanto na interface quanto no jogo em si.
O jogo apresenta um menu inicial e o jogador seleciona as opções com as setas do teclado.
O controle da nave também é através das setas do teclado e o jogador tem a liberdade para
se mover horizontalmente e verticalmente. O mouse é usado para controlar a direção dos
tiros disparados. O jogador passa para outra fase ao derrotar o “chefão” de uma fase.
4.6. Visual e estilo do jogo (Look and Feel) – Qual o visual e a atmosfera empregada no jogo?
Qual o estilo?
O jogo acontece no espaço sideral. A maioria dos inimigos tem uma aparência engraçada
e/ou esquisita e o jogo em geral tem um estilo que faz lembrar os jogos shoot’em up mais
antigos.
4.7. Escopo do projeto (Project Scope) – Um sumário do escopo do jogo.
4.7.1. Número de locais (Number of locations)
Cinco regiões do espaço de um universo paralelo fictício.
4.7.2. Quantidade de fases (Number of levels)
21
A versão do jogo para o TCC contém 5 fases.
4.7.3. Quantidade de NPC’s (Number of NPC’s)
Existem doze tipos de inimigos, cada um com uma máquina de estados distinta, resultando
em uma combinação única de movimentação e modos de ataque.
4.7.4. Quantidade de armas (Number of weapons)
Existe uma arma principal que se modificará de acordo com os upgrades realizados na nave
e uma arma secundária especial de uso limitado. A direção dos tiros depende da posição do
cursor do mouse. Exemplo de comportamentos que a arma pode adquirir:
• Projétil maior: maior chance de acertar o inimigo.
• Projétil mais forte: causa mais dano ao acertar o inimigo.
• Projétil mais rápido: mais difícil para o inimigo esquivar do tiro.
• Aumento da taxa de disparos por segundo: mais projéteis lançados ajudam a aumentar o
dano e facilitam acertar o alvo.
5. Seção 2 – Jogabilidade e mecânicas
5.1. Jogabilidade (Gameplay)
5.1.1. Progressão do jogo (Game Progression)
5.1.2. Estrutura das missões/Fases (Mission/challenge Structure)
5.1.3. Como o jogo flui (Play Flow)
O jogo é dividido em 5 fases. Ao começo de cada fase, será criado um objeto responsável
pelo controle dela. Este controlador da fase será o responsável por inserir novos inimigos na
fase de acordo com uma linha de tempo. Além da linha de tempo, é utilizado um algoritmo
para detectar quantos inimigos ainda estão lutando contra o jogador para evitar a inserção de
muitos inimigos na fase ao mesmo tempo.
Ao final de cada fase há um chefão que deve ser derrotado para que o jogador prossiga para
a fase seguinte.
Ao término de uma fase, será apresentada uma interface para o jogador fazer upgrades na
sua nave de acordo com a quantidade de energias coletadas.
Caso o jogador perca todas as vidas, ele deve recomeçar o jogo do início.
22
5.1.4. Objetivos (Objectives) – Quais são os objetivos do jogo?
O objetivo do jogo é conduzir a nave “Anon-explorer” fazendo com que ela destrua os
inimigos apresentados e capture a energia liberada por eles a fim de ficar forte o suficiente
para capturar o chefão final e extrair a energia dele para salvar o planeta Nahc 4.
5.2. Mecânicas (Mechanics) – Quais são as regras do jogo, tanto implícitas quanto explícitas.
Este é o modelo do universo no qual o jogo funciona. Como todas as entidades deste mundo
interagem?
5.2.1. Física (Physics) – Como funciona o universo físico?
• O jogo é em duas dimensões.
• O jogo funciona em 60 quadros de animação por segundo.
• Todas as entidades destrutíveis possuem uma determinada quantidade de pontos de vida.
• A nave do jogador tem seus pontos de vida decrescidos quando um inimigo ou um
projétil entra em contato com ele.
• Os inimigos têm seus pontos de vida decrescidos quando projéteis disparados pelo
jogador entram em contato com eles.
• Uma entidade destrutível é destruída quando seus pontos de vida chegam a 0 (zero).
• Quando a nave do jogador é destruída, ele perde uma vida e deve começar a fase atual
desde o início.
• O jogador começa com 4 vidas.
• As energias liberadas quando um inimigo morre, podem ser coletadas tanto pelo jogador
quanto por determinados tipos de inimigos.
• Os powerups e as energias são coletados quando entram em contato com a nave do
jogador.
5.2.2. Movimentação (Movement)
5.2.2.1 Movimentação geral (General Movement)
23
O jogador pode mover a nave em 8 direções (cima, baixo, esquerda, direita e diagonais). A
velocidade de movimentação poderá sofrer variações de acordo com os upgrades da nave e
de outros fatores.
Para a movimentação da mira da nave, o mouse será utilizado.
5.2.2.1 Outras movimentações (Other Movement)
O usuário navegará nos menus do jogo através das setas do teclado e da tecla Enter.
5.2.3. Objetos (Objects)
5.2.3.1 Coletando objetos (Picking Up Objects)
A coleta de energias ou powerups se dá através do contato direto com eles.
Da mesma forma, quando a nave do jogador encosta algum obstáculo, nave inimiga ou
projétil inimigo, ele é penalizado e seus pontos de armadura são decrescidos, podendo levar
à destruição da nave e consequentemente a perda de uma vida.
Descrição dos powerups que podem ser coletados:
5.2.4. Ações (Actions)
5.2.4.1 Interruptores e botões - (Switches and Buttons)
Não se aplica ao jogo.
5.2.4.2 Coletando, carregando e deixando cair (Picking Up, Carrying and Dropping)
O jogador coletará powerups e energias ao entrar em contato direto com eles.
5.2.4.3 Falando (Talking)
Não se aplica ao jogo.
5.2.4.4 Lendo (Reading)
Não se aplica ao jogo.
5.2.5. Combate (Combat) – No caso de existir um combate ou conflito, como ele é
especificamente modelado?
O jogador deverá desviar dos tiros inimigos enquanto atira nos inimigos. Para isso, pode ser
necessário que o jogador analise certos padrões de comportamento dos inimigos. A direção
dos tiros disparados pelo jogador depende da posição do cursor do mouse. Isto faz com que
24
o jogador preste atenção tanto nos tiros que deve desviar quanto na direção onde está
atirando.
5.2.6. Economia (Economy) – Qual é a economia do jogo? Como ela funciona?
O jogador coletará energias liberadas pelos inimigos ao morrerem. Essa energia servirá para
o jogador fazer upgrades na nave entre uma fase e outra.
5.3. Fluxo de tela (Screen Flow)
5.3.1. Diagrama de fluxo de tela (Screen Flow Chart) – Uma descrição gráfica de como cada tela
se relaciona com as outras.
A relação entre uma tela e outra pode ser verificada na Figura 7.
Figura 7. Screen Flow
O jogo inicia na tela “Menu inicial”. Ao começa a jogar (“Tela de uma das fases”), ele vai
para a “Tela de upgrades” quando passa de fase ou para a “Tela de game over” quando
perde todas as vidas.
5.3.2. Descrições das telas (Screen Descriptions) – Qual o propósito de cada tela?
25
5.3.2.1. Tela de menu principal (Main Menu Screen)
Possibilita ao jogador iniciar o jogo, entrar na tela de opções ou visualizar o ranking das
maiores pontuações alcançadas.
5.3.2.2. Tela de opções (Options Screen)
Permite o ajuste do nível de dificuldade do jogo. Por se tratar de uma versão para o TCC,
apresenta também a opção de invencibilidade para realização de testes.
5.3.2.3. Tela de upgrades (Upgrade Screen)
Permite que o jogador gaste as energias acumuladas para fazer melhorias em sua nave.
5.3.2.4. Tela da fase (Mission Screen)
Tela onde ocorrerão as fases do jogo. Apresentará um HUD (heads Up Display) e a posição
de cada entidade do jogo (projéteis, inimigos, a nave controlada, etc).
5.4. Opções do jogo (Game Options) – Quais são as opções e de que maneira elas afetarão o
jogo?
O nível de dificuldade selecionado influenciará a agressividade dos inimigos, a capacidade
dos inimigos de esquivar dos tiros e a armadura do jogador. O jogador será invencível caso
esta opção esteja ativada.
5.5. Começando o jogo novamente, mecanismos para salvar o progresso (Replaying and
Saving)
Ao perder todas as vidas, o jogador deverá começar o jogo desde o início. Não haverá
mecanismo para salvar o progresso do jogador, apenas a pontuação alcançada será registrada
no ranking.
Após o jogador perder todas as vidas ou conseguir acabar o jogo, ele pode jogar novamente
sabendo que pode encontrar desafios diferentes (poderá jogar numa dificuldade mais difícil,
inimigos não reagirão da mesma forma e será possível construir a nave de uma forma que
mude a jogabilidade anterior).
5.6. Trapaças e segredos (Cheats and Easter Eggs)
A opção de invencibilidade estará disponível no menu de opções.
26
5.7. Máquinas de estado – Este item foi inserido para documentar as máquinas de estado
utilizadas no TCC.
5.7.1. Máquina de estados do inimigo 1 (Mutant X)
Este inimigo começa no estado “movimento aleatório cauteloso” que consiste em ficar a
uma certa distância do jogador movendo-se aleatoriamente de um lado para o outro. Quando
um projétil do jogador se aproxima dele, ele tem uma chance de entrar para o estado
“esquiva do tiro mais próximo” que consiste em mover-se rapidamente para o lado esquerdo
ou para o direito conforme a direção do tiro e a posição atual do inimigo. O inimigo fica
impossibilitado de atirar no jogador enquanto está neste estado.
No estado “movimento aleatório cauteloso” é possível que o inimigo decida entrar para o
estado “ataque kamikaze”, no qual ele se move em direção ao jogador tentando atingí-lo. O
estado “ataque kamikaze” é induzido sempre que o jogador entra em um determinado raio
de distância deste inimigo.
O estado final (“explode”) ocorre quando os pontos de vida do inimigo chegam a zero. No
estado “explode”, uma explosão é mostrada e a alma do inimigo é liberada. Este estado é
comum a todos os inimigos do jogo.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 8.
27
Figura 8. Máquina de estados do inimigo 1
5.7.2. Máquina de estados do inimigo 2 (Tentacle Alien)
Este inimigo começa no estado “movimento aleatório cauteloso” e entra para o estado
“ataque kamikaze” quando o jogador entra em um determinado raio de distância deste
inimigo.
Além disso, em intervalos aleatórios de frames, ele entra para o estado “ataque circular”
onde realiza um trajeto circular enquanto atira no jogador.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 9.
28
Figura 9. Máquina de estados do inimigo 2
5.7.3. Máquina de estados do inimigo 3 (Power Charger)
Este inimigo começa no estado “movimento aleatório cauteloso”. Quando um projétil do
jogador se aproxima dele, ele tem uma chance de entrar para o estado “esquiva do tiro mais
próximo”.
No estado “movimento aleatório cauteloso” é possível que o inimigo decida entrar para o
estado “carregar ataque”, no qual ele começa a piscar e fica quase imóvel enquanto se
prepara para disparar um tiro forte e rápido que exigirá uma atenção extra por parte do
jogador para desviar.
O estado “ataque kamikaze” é induzido quando o jogador entra em um determinado raio de
distância deste inimigo.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 10.
29
Figura 10. Máquina de estados do inimigo 3
5.7.4. Máquina de estados do inimigo 4 (Pinky)
Este inimigo começa no estado “movimento aleatório cauteloso” e logo depois assume um
padrão de movimentação repetitivo e fácil de ser previsto (geralmente realiza um trajeto em
zigue-zague e volta no sentido oposto). Sua principal utilidade é distrair o jogador para que
outros inimigos mais elaborados lutem contra o jogador.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 11.
30
Figura 11. Máquina de estados do inimigo 4
5.7.5. Máquina de estados do inimigo 5 (Greedy Star)
Logo após nascer, ele irá perseguir o jogador no estado “perseguir jogador”. Porém, caso
exista uma energia vital flutuando na tela, ele tentará “roubar” esta energia vital do jogador
no estado “perseguir energia vital mais próxima” até que não existam mais energias vitais
flutuando na tela.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 12.
31
Figura 12. Máquina de estados do inimigo 5
5.7.6. Máquina de estados do inimigo 6 (Shielder)
Este inimigo começa no estado “movimento aleatório cauteloso”. Assim que ele encontra
outro Galaxian pertencente à lista de protegidos, entrará para o estado “proteger aliado” e
tentará ficar na frente deste Galaxian a fim de protegê-lo com o seu escudo capaz de refletir
os tiros normais do jogador.
Quando o seu escudo é destruído (com um super tiro do jogador), ele entra para o estado
“movimento aleatório cauteloso” novamente, mas com a diferença de que se esquivará dos
tiros do jogador (estado “esquiva do tiro mais próximo”) até que o seu escudo seja ativado
novamente.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 13.
32
Figura 13. Máquina de estados do inimigo 6
5.7.7. Máquina de estados do inimigo 7 (Evil Shooting Star)
Este inimigo fica no estado “movimento aleatório cauteloso” atirando projéteis teleguiados
no jogador até ser destruído.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 14.
33
Figura 14. Máquina de estados do inimigo 7
5.7.8. Máquina de estados do inimigo 8 (Boss 1)
Este inimigo inicia no estado “movimento aleatório cauteloso”. Após algum tempo, entra
para o estado “ricocheteia nas bordas” onde ele assume uma velocidade ampliada e direção
fixa ricocheteando nas bordas da tela até que volta para o estado “movimento aleatório
cauteloso” novamente.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 15.
34
Figura 15. Máquina de estados do boss 1
5.7.9. Máquina de estados do inimigo 9 (Boss 2)
Este inimigo fica alternando entre os estados “movimento aleatório cauteloso” e “carregar
ataque”. Após carregar um ataque, lança uma espécie de buraco negro que suga o jogador
para dentro de si e muda a trajetória dos tiros disparados pelo jogador.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 16.
35
Figura 16. Máquina de estados do boss 2
5.7.10. Máquina de estados do inimigo 10 (Boss 3)
Este inimigo fica alternando entre os estados “movimento aleatório cauteloso” e “carregar
ataque”. Após carregar um ataque, lança projéteis perseguidores para atingir o jogador. O
estado “movimento aleatório cauteloso” pode ser interrompido quando um projétil do
jogador passa por perto dele, induzindo o estado “esquiva do tiro mais próximo”.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 17.
36
Figura 17. Máquina de estados do boss 3
5.7.11. Máquina de estados do inimigo 11 (Boss 4)
Este inimigo possui exatamente a mesma máquina de estados do inimigo anterior, com a
diferença de que funciona de forma mais agressiva, esquiva com mais freqüência e é mais
rápido.
5.7.12. Máquina de estados do inimigo 12 (Wardemon)
Este inimigo inicia no estado “boss 5 aproximar” onde ele se aproxima do jogador por trás.
Logo após, um dos seguintes estados é escolhido aleatoriamente: “boss 5 ataque 1”, “boss 5
ataque 2” e “boss 5 ataque 3”. Depois de executar um destes ataques, ele entra para o estado
“boss 5 recuar” onde invoca o inimigo “Shielder”. Após recuar, volta para o estado “boss 5
aproximar”.
O diagrama de máquina de estados desta entidade pode ser verificado na Figura 18.
37
Figura 18. Máquina de estados do boss 5
6. Seção 3 – Estória, ambiente e personagens
6.1. Estória e narrativa
6.1.1. Estória
Em um universo paralelo, existe um planeta chamado “Nahc 4”. Este planeta está passando
por uma crise pois suas reservas de energia estão acabando e a raça que habita este planeta
corre risco de extinção. A solução encontrada pelos habitantes deste planeta (conhecidos
como Anons) foi a de criar um dispositivo capaz de armazenar a energia vital de um ser vivo
e usá-la como se fosse uma forma de energia convencional. Este processo chama-se
conversão de ectoplasma e ocorre da seguinte forma: um ser vivo deve ser morto e logo em
seguida a sua energia deve ser sugada e armazenada pelo dispositivo. As pesquisas na área
38
de sucção de energia vital ainda não estão muito avançadas mas vários experimentos
mostram que os Galaxians (uma espécie de criaturas que podem ser encontrada nas
redondezas do planeta “Nahc 4”) liberam uma quantidade substancial de energia ao
morrerem.
Tendo em vista a sobrevivência de sua espécie, os Anons dedicaram as últimas décadas para
pesquisa e desenvolvimento de sua última esperança, o Anon-explorer.
O Anon-explorer é uma nave espacial capaz de explorar o espaço, possuindo mecanismos
para matar Galaxians e sugar a energia vital da criatura recém morta.
Estudos recentes indicam que existe um Galaxian com energia suficiente para abastecer o
planeta durante um período de aproximadamente 2 anos. Esta criatura foi apelidada de
Wardemon e faz juz ao apelido. Como ela é muito forte, será necessário coletar energia
matando Galaxians mais fracos a fim de fortalecer a nave Anon-explorer o suficiente para
derrotar Wardemon.
Você foi o escolhido para guiar esta nave nesta empreitada que decidirá o destino dos
Anons, pelos menos durante os próximos 2 anos...
6.1.2. Progressão do jogo (Game Progression)
A cada fase será explorada uma região do espaço onde exista uma quantidade significativa
de Galaxians. Ao final de cada fase, o jogador fará investimentos na nave até o confronto
final com Wardemon.
6.2. Personagens (Characters)
6.2.1. Anon
6.2.1.1 Estória
É o piloto anônimo da nave Anon-explorer.
6.2.1.2 Personalidade
Tímido e reservado. Pouco se sabe sobre a vida dele, prefere permanecer no anonimato.
6.2.1.3 Visual
6.2.1.3.1 Sprite da nave que ele controla
Figura 19. Sprite da nave
6.3.1.1.2 Animações
39
Não possui.
6.2.2. Wardemon
6.2.2.1 Estória
Uma criatura pacífica que tem como objetivo propor paz entre os Anons e as criaturas de sua
própria espécie que estão sendo caçadas pelos Anons. É extremamente poderoso, porém
prefere paz a conflitos. Seu apelido Wardemon foi designado por habitantes do planeta Nahc
4.
6.2.2.2 Personalidade
Pacífico e inteligente.
6.2.2.3 Visual
6.2.2.3.1 Sprites
Figura 20. Sprite de Wardemon
40
Figura 21. Sprite de Wardemon ao ser derrotado
6.2.2.3.1 Animações
Não possui.
3.2 Programação e busca/edição de recursos utilizados pelo jogo
Nesta etapa ocorreu o desenvolvimento do jogo. Conforme a necessidade, recursos como
sprites, sons, e planos de fundos foram sendo buscados na internet enquanto outros foram criados na
própria ferramenta ou editados.
Foram criados alguns trajetos pré-definidos para serem utilizados em alguns inimigos como,
por exemplo, movimentos circulares e em zigue-zague.
Vários scripts foram definidos para implementar as seguintes funcionalidades no jogo:
• comportamentos de determinados estados do inimigo.
• padrões de disparo de projéteis.
• algoritmos para os inimigos aproximarem da nave do jogador de forma não linear.
• forçar um objeto a não sair da tela do jogo.
• refletir tiros do jogador colidindo com o escudo de força inimigo (a função de colisão e
reflexão já pronta no Game Maker não funcionava de forma elegante com objetos
móveis).
41
• Comportamentos exclusivos de cada inimigo.
Foram criadas também linhas de tempo com ações programadas para serem atribuídas ao
controlador de cada fase do jogo. Estas linhas definem quando um inimigo aparece, em quais
lugares ele pode aparecer, qual a quantidade máxima de inimigos em um determinado momento e
quando deve aparecer o chefão da fase.
E finalmente, a etapa mais trabalhosa foi programar os comportamentos de cada inimigo
utilizando máquina de estados. Existem doze inimigos diferentes, cada um com características
distintas (sprite, máquina de estados, quantidade de pontos de vida, velocidade, entre outras).
3.3 Preparo do material instrucional
O material instrucional consiste em um vídeo-tutorial composto por uma série de vídeos
mostrando o uso da ferramenta Game Maker para desenvolver um motor semelhante ao do jogo
desenvolvido no TCC. São mostradas várias etapas de desenvolvimento desde à instalação da
ferramenta Game Maker, importação de recursos para o projeto do jogo até a criação de inimigos.
3.4 Testes
Para a realização dos testes, foi montado um questionário tendo como base a leitura do
artigo “What makes a good game? Using reviews to inform design” (BOND, 2009), o qual descreve
um estudo sobre o levantamento de características consideradas “boas” e características
consideradas “ruins” em um jogo.
Estas características são divididas em uma série de categorias. São elas: jogabilidade,
ambientação, enredo, interação com o usuário, customização, interação social, variedade, qualidade
de implementação técnica e coesão.
A amostra escolhida para testar o jogo e responder o questionário foi composta por nove
jogadores. Cinco integrantes do LIA (laboratório de inteligência aplicada) da UNIVALI e quatro
jogadores com uma boa experiência em jogos do gênero shoot ‘em up. Os jogadores receberam uma
breve descrição da história, objetivos e comandos do jogo. Após esta etapa foram instruídos a jogar
o jogo algumas vezes, normalmente para depois jogar uma última vez com a trapaça de
invencibilidade habilitada para que pudessem ver todo o conteúdo do jogo. Na etapa seguinte, os
testadores foram instruídos a preencher o questionário.
42
3.5 Resultados
Os resultados gerados foram dispostos separados pela categoria ao qual o critério pertence.
Na Figura 22 é possível observar os resultados da avaliação quanto aos critérios
relacionados à jogabilidade.
Figura 22. Resultado do teste na categoria jogabilidade
43
Verificou-se que é de grande importância que o jogo seja testado por um público variado
antes de estar em seu estágio final de desenvolvimento. No momento da aplicação do teste, vários
jogadores reclamaram da questão da dificuldade do jogo. Apesar de apenas metade dos testadores
discordarem no questionário de que o jogo é balanceado, na prática, observou-se que apenas um
jogador conseguiu passar da primeira fase sem usar trapaças. O restante dos jogadores só conseguiu
ver o conteúdo das fases seguintes quando ativaram a opção de invencibilidade. Este problema
poderia ser evitado se fossem realizados testes com versões anteriores do jogo.
Após os teste, foram feitas algumas alterações no que diz respeito ao balanceamento do jogo
tendo-se como base o feedback dos jogadores. A solução mais prática e coerente encontrada foi a
de aumentar a diferença de dificuldade entre as três dificuldades disponíveis no jogo. Para se
alcançar isso, em vez de alterar os inimigos para deixá-los mais “burros”, foi aumentada a
quantidade de pontos de vida do jogador nos níveis de dificuldades mais fáceis.
Quanto à análise da jogabildiade, pode-se concluir que apesar do jogo ter sido considerado
difícil, a maioria dos jogadores aprovaram a sua jogabilidade e concordaram que ela é divertida.
Acredita-se que a análise de soluções similares e a identificação de características desejáveis e não
desejáveis tenham contribuído com este resultado.
Quatro jogadores discordaram de que o jogo apresenta características inovadoras. Isto pode
ter acontecido por uma série de fatores, entre eles o fato de que o jogador se concentrou demais na
jogabilidade (desviar dos tiros, mirar e atirar com o mouse) e acabou não percebendo certos
detalhes relacionados à IA.
Na Figura 23 é possível observar os resultados da avaliação quanto aos critérios
relacionados à ambientação. Nota-se que a ambientação se adequou ao estilo proposto pelo jogo.
44
.
Figura 23. Resultado do teste na categoria ambientação
Na Figura 24 é possível observar os resultados da avaliação quanto aos critérios
relacionados ao enredo.
Figura 24. Resultado do teste na categoria enredo
45
Na Figura 25 é possível observar o resultado da avaliação quanto ao critério relacionado à
interação com o usuário. Este resultado positivo foi influenciado bastante pela ferramenta utilizada
que é otimizada para não consumir muitos recursos computacionais.
Figura 25. Resultado do teste na categoria interação com o usuário
Na Figura 26 é possível observar o resultado da avaliação quanto ao critério customização.
A maioria dos jogadores identificou a possibilidade de customizar a nave ao longo do jogo.
46
Figura 26. Resultado do teste na categoria customização
O maior ponto negativo do jogo foi a falta de interação social. A única forma de interação
social que o jogo oferece é a de entrar no ranking de maior pontuação e competir com outros que
venham a jogar o jogo. Na Figura 27 é possível observar o resultado da avaliação quanto ao critério
interação social.
Figura 27. Resultado do teste na categoria interação social
Na Figura 28 é possível observar o resultado da avaliação quanto ao critério variedade. A
variedade de comportamentos diferentes dos inimigos foi um dos critérios que mais chamou a
atenção dos jogadores no momento da realização dos testes.
47
Figura 28. Resultado do teste na categoria variedade
Na Figura 29 é possível observar o resultado da avaliação quanto ao critério qualidade de
implementação técnica. Cuidados básicos no momento da programação do jogo evitaram problemas
de baixa taxa de frames por segundo e de disposição de elementos informativos que atrapalhem a
jogabilidade.
Figura 29. Resultado do teste na categoria qualidade de implementação técnica
Na Figura 30 é possível observar o resultado da avaliação quanto ao critério coesão.
48
Figura 30. Resultado do teste na categoria coesão
Apesar de não ter sido dado muito enfoque no enredo do jogo, a maioria concordou que ele
possui um enredo coesivo e todos concordaram que o jogo apresentou um enredo ligado à
jogabilidade. Isto ocorreu pois o enredo do jogo gira em torno da energia vital que deve ser
capturada pelo jogador para que ele fique mais forte e isto é uma coisa que é observada do início ao
final do jogo. A ambientação, embora simples, foi coerente com o estilo do jogo.
Além do feedback dos jogadores quanto ao jogo, o perfil deles também foi avaliado. É
possível observar através das Figuras 31, 32 e 33 que a amostra escolhida consistia em jogadores
com uma certa experiência em jogos de nave e jogos de nave em geral e que possuíam preferências
variadas no que diz respeito aos tipo de jogos que gostam.
Figura 31. Perfil do usuário A
49
Figura 32. Perfil do usuário B
Figura 33. Perfil do usuário C
50
4 CONCLUSÕES
Neste trabalho foi apresentado o projeto de um jogo de nave desenvolvido na ferramenta
Game Maker que aplica técnicas de IA. O jogo incorpora elementos considerados distintos no
gênero, podendo-se destacar o enfoque nas máquinas de estado das entidades inimigas com o intuito
de evitar comportamentos previsíveis e oferecer um combate mais dinâmico ao jogador. Além do
desenvolvimento do jogo, foi criado também um material instrucional consistindo em vídeos e
instruções com a finalidade de guiar programadores iniciantes nesta ferramenta no desenvolvimento
de um motor semelhante ao do jogo desenvolvido no TCC.
Analisando os objetivos traçados no início deste projeto, conclui-se que todos eles foram
atingidos. Durante a realização da pesquisa foi possível analisar diversos jogos do gênero e verificar
características que deveriam ser incorporadas ao jogo desenvolvido e características que deveriam
ser evitadas para se alcançar a jogabilidade distinta de acordo como foi planejado. Através destes
trabalhos foram estudadas as aplicações de IA neste gênero de jogo, buscando-se sempre um
balanceamento para que o nível da IA aplicado no jogo não deixasse ele simples nem difícil (e
consequentemente frustrante) de mais.
Foi possível concluir que a ferramenta Game Maker permitiu o desenvolvimento do projeto
de forma satisfatória pois agrega várias funções que acabaram permitindo o enfoque da
programação em um nível mais alto, facilitando o processo de implementação das características
mais distintas. Além disso, durante o desenvolvimento do projeto, foi observado que o Game Maker
apresenta algumas extensões interessantes como a possibilidade de rodar o jogo no navegador
Firefox através da instalação de um plugin (YOYO GAMES, 2009c).
Acredita-se que a forma de documentação deste projeto, o GDD, facilitou o processo de
documentação do jogo. Através do GDD, foi possível definir de forma prática e eficiente todas as
funcionalidades do jogo.
Através dos testes realizados com o jogo, foi possível realizar uma análise qualitativa e
verificar que independentemente do jogador ter achado o jogo divertido ou não, o aspecto da IA
nos inimigos chamou bastante a atenção do jogador e a variedade de padrões de comportamentos
presentes foi um ponto positivo no jogo. As principais características apontadas como pontos
51
negativos do jogo foram a de que os gráficos são muito simples e de que o jogo é muito difícil,
inclusive para jogadores que já possuem certa experiência com este tipo de jogo.
Algumas idéias de trabalhos futuros em cima deste TCC incluem a pesquisa de outras
formas de utilização da ferramenta Game Maker como, por exemplo, a conversão em XNA e a
possibilidade de rodar o jogo em algum navegador. Além disso, é possível refinar o jogo em vários
aspectos, aprimorar a IA dos inimigos, deixar o jogo menos linear e aumentar a interação social
oferecida pelo jogo implementando uma forma de jogar com outro jogador ou cooperando com ele.
REFERÊNCIAS BIBLIOGRÁFICAS
BRANCHER, Jaques. Introdução aos Conceitos de Jogos de Comutador. In: FERNANDES, A. M. R.; ALVES, L. CLUA, E. W. G; DAZZI, R. L. S (org.). Jogos Eletrônicos: mapeando novas perspectivas.Visual Books, Florianópolis, Brasil. 2009. p.1-36
BERTHÊM, A. C. et al. Desenvolvimento de jogos eletrônicos. 2. ed. São Paulo: Novatec, 2007.
BALDWIN, M. Game Design Document Outline. Disponível em: <http://www-personal.engin.umd.umich.edu/~bmaxim/cis488/BaldwinGameDesignDocumentTemplate.doc>. Acesso em: 01 nov. 2009.
BIELBY, M. The complete YS guide to shoot 'Em Ups’. Your sinclair, London, v. 1, n 55, p. 33, 4 jul. 1990.
BOND, M. What makes a good game? Using reviews to inform design. University of Birmingham, Edgbaston, 2009.
GAME MAKER WIKI. GML. Disponível em: <http://gamemaker.wikicomplete.info/gml>. Acesso em: 22 out. 2009.
GILL, A., Introduction to the Theory of Finite-state Machines. McGraw-Hill, 1962.
GREEN, C. S. Action video games modify visual attention. Journal of experimental psychology: human perception and performance, New York, p.1-2, 4 abr. 2006.
KISHIMOTO, A. Inteligência Artificial em Jogos Eletrônicos. Disponível em: <http://www.programadoresdejogos.com/trab_academicos/andre_kishimoto.pdf>. Acesso em: 22 nov. 2009.
LOBÃO, A. S. Addressing different learning styles with game maker and XNA. In: SIMPÓSIO BRASILIERO DE GAMES, 5., 2008, Belo Horizonte. Anais... Belo Horizonte, 2008.
WIKIPEDIA. Space Invaders. Disponível em: <http://en.wikipedia.org/wiki/Space_Invaders>. Acesso em: 01 out. 2009a.
WIKIPEDIA. Defender. Disponível em: <http://en.wikipedia.org/wiki/Defender_(game)>. Acesso em: 01 out. 2009b.
WIKIPEDIA. Gradius. Disponível em: <http://en.wikipedia.org/wiki/Gradius>. Acesso em: 01 out. 2009c.
WIKIPEDIA. Radiant Silvergun. Disponível em: < http://en.wikipedia.org/wiki/Radiant_Silvergun>. Acesso em: 01 out. 2009d.
WIKIPEDIA. Ikaruga. Disponível em: <http://en.wikipedia.org/wiki/Ikaruga>. Acesso em: 01 out. 2009e.
WIKIPEDIA. Sprite (computer graphics). Disponível em: <http://en.wikipedia.org/wiki/Sprite_(computer_graphics)>. Acesso em: 01 out. 2009f.
53
YOYO GAMES. Game Maker. Disponível em: <http://www.yoyogames.com/gamemaker>. Acesso em: 02 ago. 2009a.
YOYO GAMES. History of Game Maker. Disponível em: <http://www.yoyogames.com/index.php/History_of_Game_Maker>. Acesso em: 02 ago. 2009b.
54
APÊNDICES
A DOCUMENTO INSTRUCIONAL PARA A REALIZAÇÃO DO TESTE
�������������� ���������� ��� ���� ������������������ ������������ �������������������������� �������������� ������������������� �������������!��������������"��#����������������������������������"!��$����"!�����������������������������������%���������� �$���&�'�������������� ��������� �����(������ �(������������ ��������� ���� � ���� )����� ���'����� ��'�� ������������ ���������������������� �)���� ��!���������� �����������������'�� ����� ���� � �� ����� �������� ��������������������� ��������������� �(���������������� ��$����#��������� ��������"!��������� ������������!���!�� ����� ��"������ ��� ��������� ����� ����� �#����*���������%�� ����+���������������#����� ���������������������(��������������������&������� ��� ��#��������������������������������� ���� ��,���� � ���������� � -�������������+������$������������ ����.���� ����+�������������#��������� � �� ���������.���� �������"����$��)�������/ �$��)������+��� ���� �������������(��������������"��������� ������ �������� �����*������������������������ �������������������+� �� ������������������������� �#��������� �*���������� ���������'������������������������������������ ���0���������� ���� ���1��������������������'�������������2 ���� ���'�(���(����������3� ����+�� ����'������ ����� ���������������� ������*���������� ����'�������'�� ���'����������� �$��)���������'������������������2 ���� ���4�-�'��������������������������� ������� ��������#�������� �����������$���������� ������������������ ��1����������5�����"6�������������(�"!���������7������������ ���� ���������������� ��������������#����� �����(� ����������� �������8��������������� ������"6����������� ������9���'������������������"!�*�� �:�������;������������������������ �� ��������� ��;���� ��������� �� �������� ��������� ��;�����!��#������� ������������������������� ����<���� ���������������!��#������������������ ��������;�����!���������� ����������������������������= �������� ������� ��'��������������>���������� ������������ � �� �����= �������� ������� ������������������>���������� ������������ � ����� ������������ ���� ����'��������������>����������'�� ��� �#������������ ���������� ��� ������ ����������������3��������� �������������������� ����#���!�� �����$�'������������'��� �-���������(��������� ����������������� ������������������������� ���?����� �� (��� ����"!��� ����������@�������������#�� �-������ ���������.���������
56
7�������#����� ����������������� �������AA���������������� A �B '�� C'�� D@E��4 F� 85F,�@::G�81H= ��IJ�(��:4�KL = �
57
B CÓDIGO FONTE DO EVENTO “STEP” DO INIMIGO “POWER CHARGER”