TCC PDF - lotuzgames

Transcrição

TCC PDF - lotuzgames
GENIS: ASSISTENTE PARA O DESENVOLVIMENTO DE JOGOS DE
AÇÃO E RPG
ARTHUR FERREIRA DE SOUZA
PETRÓPOLIS
OUTUBRO DE 2012
GENIS: ASSISTENTE PARA O DESENVOLVIMENTO DE JOGOS DE
AÇÃO E RPG
ARTHUR FERREIRA DE SOUZA
Trabalho apresentado no curso de Formação em
Tecnologia da Informação e Comunicação do
IST – Petrópolis - FAETC como requisito parcial
para obtenção do grau de tecnólogo.
Orientador: M.Sc. Sicilia Ferreira Ponce Pasini Judice
PETRÓPOLIS
OUTUBRO DE 2012
2
ARTHUR FERREIRA DE SOUZA
GENIS: ASSISTENTE PARA O DESENVOLVIMENTO DE JOGOS DE
AÇÃO E RPG
Trabalho apresentado no curso de Formação em Tecnologia da Informação e
Comunicação do IST-Petrópolis- FAETEC como requisito parcial para obtenção
do grau de tecnólogo.
Aprovado em ___/___/___
Banca Examinadora
____________________________
M.Sc. Sicilia Ferreira Ponce Pasini Judice
____________________________
Mozar Baptista da Silva
____________________________
Bruno Clemente Guingo
3
“You are in a maze of twisty passages, all alike."
ZORK (1981)
4
5
Resumo
Este trabalho destina-se a descrever o desenvolvimento do Assistente de
desenvolvimento Genis, que tem como objetivo permitir o desenvolvimento e
modificação de jogos eletrônicos do gênero action RPG, apresentando-se como
uma alternativa de baixo custo às populares engines de desenvolvimento de
jogos. É descrito o desenvolvimento de End’Gar, um jogo que utiliza as
ferramentas desta engine, com o objetivo de demonstrar suas funcionalidades. Os
conceitos de game design necessários para o desenvolvimento de um projeto
também são explorados de forma a montar uma boa experiência para o jogador.
Palavras-Chave: Jogos, Game Engine, Xna Framework.
6
Abstract
The present work intends to describe the development of the Genis Wizard,
that has the objective of allowing the creating and modification of video games of
the action rpg genre, presenting itself as a low cost alternative to the mainstream
game engines. The development of the game End’Gar with this tool set is also
described, demonstrating the engine functionalities. The game design concepts
necessary to create a good player experience are also utilized and described.
7
Lista de Figuras
1. Ambiente de desenvolvimento das engines .................................................. 14
2: Interface do jogo Secret of Mana, representante do gênero Action RPG. ..... 16
3. Interface do jogo de ação DOOM, subgênero first person shooter ................ 17
4. Personalização de personagem no jogo Mount & Blade ................................ 18
5. Modo de batalha do jogo Final Fantasy IX ..................................................... 19
6. League of Legends, jogo que usa a habilidade do jogador em combinação com
características do personagem. ......................................................................... 20
7. Modelo de tileset ............................................................................................ 22
8. Spritesheet da animação de um morcego ...................................................... 23
9. A ferramenta de edição de mapas ................................................................. 26
10. Configuração de mapa e objetos do editor ................................................... 27
11. Edição de movimentação na ferramenta de criação de mapas .................... 28
12. Ferramenta de criação de objetos ................................................................ 29
13. Ferramenta de criação de PNJ..................................................................... 30
14. Ferramenta de criação de inimigos .............................................................. 31
15. Ferramenta de criação de itens .................................................................... 32
16. Modelo XML de um Item serializado ............................................................ 33
17. Ferramenta de criação de missões .............................................................. 34
18. Diagrama dos mapas do jogo....................................................................... 37
19. Pacote de animações utilizado no desenvolvimento do jogo ....................... 39
20. Código da função BasicDamage .................................................................. 40
21. Código da função DamageReduction ........................................................... 40
8
22. Indicadores de stamina na interface do jogo ................................................ 41
23. Indicadores de pontos de vida do personagem na interface do jogo ........... 42
24. Arquivo XML de configuração de input ......................................................... 43
25. Tela de ajuda do jogo ................................................................................... 44
26. Atalhos das habilidades do personagem exibidos na interface do jogo ....... 44
9
Sumário
Introdução ............................................................................................................ 11
1.1 Motivação .................................................................................................... 11
1.2 Objetivos ..................................................................................................... 11
1.3 Organização do texto .................................................................................. 12
Contextualização .................................................................................................. 13
2.1 Jogos de Ação e RPG ................................................................................. 15
2.1.1 Jogos de ação ...................................................................................... 16
2.2.2 Jogos de RPG ...................................................................................... 17
2.1.3 Conceitos do Subgênero Ação e RPG.................................................. 19
A Ferramenta Genis ............................................................................................ 21
3.1 Objetivos do Assistente ............................................................................... 21
3.2 Detalhes da Implementação ....................................................................... 22
3.2.2 Animação de Efeitos ............................................................................. 23
3.2.3 Inteligência Artificial .............................................................................. 24
3.2.4 Pathfinding – Astar................................................................................ 24
3.3 Ferramentas ................................................................................................ 25
3.3.1 Editor de Mapas e Eventos ................................................................... 27
3.3.2 Editor de Objetos do Mapa ................................................................... 28
3.3.3 Editor de Personagens-Não-Jogáveis (PNJ) ........................................ 29
3.3.4 Editor de Inimigos ................................................................................. 31
3.3.5 Editor de Itens ....................................................................................... 32
3.3.6 Editor de Missões ................................................................................. 33
Desenvolvendo um Jogo ...................................................................................... 35
4.1 Projeto do Jogo ........................................................................................... 35
4.2 Recursos Gráficos....................................................................................... 38
4.3 Mecânica do Jogo ....................................................................................... 39
4.4 Métodos de Entrada .................................................................................... 43
4.5 Testes do Jogo............................................................................................ 45
Conclusão e Trabalhos Futuros ........................................................................... 47
Referências Bibliográficas .................................................................................... 49
10
Capítulo 1
Introdução
Este trabalho tem como objetivo desenvolver uma ferramenta que permita
a personalização de um jogo eletrônico para computador, com elementos de
aventura e RPG, provendo as ferramentas necessárias para isso, assim como um
modelo básico de jogo a partir do qual o utilizador poderá trabalhar.
O desenvolvimento de todos os aspectos de um jogo é um processo
complexo, que consome uma grande quantidade de tempo e recursos, assim
como exige um conhecimento avançado dentro da área de desenvolvimento de
software. Para auxiliar nesse desenvolvimento existe uma categoria de software
conhecida como game engine, cujo principal objetivo é abstrair o processo de
desenvolvimento, reduzindo os custos associados ao processo. [1]
1.1 Motivação
1.2 Objetivos
A ferramenta desenvolvida neste trabalho deverá abstrair ao máximo este
processo, de forma que mesmo uma pessoa sem nenhum conhecimento de
linguagens programação possa fazer uso da ferramenta de maneira completa.
Será dado foco exclusivo a um gênero de jogo, o gênero Action RPG, de forma
que a engine será desenvolvida especificamente para atender às necessidades
deste tipo de jogo.
Será provido inicialmente um modelo básico de jogo, com condições de
início e fim, assim como recursos gráficos pré-definidos, que podem ser utilizados
livremente durante o desenvolvimento do jogo. Além disso, diversas ferramentas
11
responsáveis pela edição de cada aspecto do conteúdo deste jogo também serão
fornecidas.
1.3 Organização do texto
O
Capítulo
2
apresenta
uma
introdução
sobre
ferramentas
de
desenvolvimento de jogos eletrônicos existentes no mercado atualmente, bem
como argumenta as razões pelas quais as mesmas são utilizadas. Além disso, o
referido capítulo explica os conceitos de diferentes gêneros de jogos eletrônicos.
No Capítulo 3 é apresentada a game engine proposta por este trabalho.
São apresentados também
os recursos tecnológicos
utilizados para
o
desenvolvimento desta ferramenta. Também serão explicadas as funcionalidades
vistas em cada ferramenta da game engine, assim como detalhes da
implementação de aspectos fundamentais da estrutura e mecânica
do
jogo,
como a movimentação de agentes e a estrutura de animações e mapas
escolhida para o desenvolvimento do jogo.
O Capítulo 4 apresenta o processo de desenvolvimento de um jogo
utilizando as ferramentas criadas, descrevendo os pontos positivos e negativos
deste experimento. Este capítulo tem por objetivo ilustrar a aplicação de uma
game engine através de um real desenvolvimento de jogo eletrônico.
No Capítulo 5 apresenta-se a conclusão do trabalho após a utilização das
ferramentas criadas, assim como os planos de desenvolvimentos futuros para as
ferramentas criadas.
12
Capítulo 2
Contextualização
Todo jogo possui uma engine, ou seja, um “motor”, responsável por
gerenciar aspectos como a criação de cenários, personagens, tratamento de
dados, inteligência artificial, movimentação de personagens, video, áudio, etc. No
início da história dos jogos, antes do surgimento das engines como ferramentas à
parte, os jogos eram desenvolvidos a partir do zero [1].
O sistema precisava ser desenvolvido de forma a aproveitar o máximo do
potencial do hardware de acordo com as características de cada jogo em
particular. Com o desenvolvimento e evolução do hardware, o reaproveitamento
de certas funcionalidades se tornou possivel. Os jogos ainda seriam
cuidadosamente otimizados, porém a facilidade de reutilizar
funcionalidades
comuns tornaria o desenvolvimento mais rápido e eficiente, características
essenciais com o crescimento do mercado e necessidade cada vez maior de
desenvolver e publicar um jogo em pouco tempo.
Atualmente, ao se desenvolver um
jogo, há um
grande número de
ferramentas e tecnologias disponíveis para facilitar o desenvolvimento, citando
como exemplo as engines Unity [2] e Unreal [3], ambas já amplamente aceitas e
utilizadas profissionalmente. Apesar disso, a maioria das ferramentas tende a
ter como objetivo atender necessidades presentes em variados gêneros de
jogos eletrônicos, sendo necessário, em geral, que haja um esforço de
desenvolvimento de aspectos básicos de alguns gêneros, que, por não serem
necessidades gerais, não estão presentes. Assim, a opção que resta aos
desenvolvedores é buscar engines específicas para o gênero do jogo a ser
desenvolvido. A Figura 1 ilustra o ambiente de desenvolvimentos das engines
Torque2D [4], RPG Maker VX [5], Unity3D [2][29] e GameMaker [6].
13
Figura 1. Ambiente de desenvolvimento das engines: (a) Torque2D; (b) RPG
Maker VX; (c) Unity3D; (d) GameMaker.
Atualmente, cresce cada vez mais as participação no mercado de jogos
de
desenvolvedores
hobbistas, ou indies, como são conhecidos os
desenvolvedores que se comprometem a criar um jogo sem o investimento de
capital de uma empresa de publicação, de forma que o financiamento do
desenvolvimento é totalmente feito pelos próprios desenvolvedores. [23][24] No
desenvolvimento independente, sem financiamento, em geral, não há verba
para a utilização de engines profissionais, como a Unreal Engine, que custa
$2500 dólares por usuário, com custo adicional de acordo com o rendimento do
jogo desenvolvido, sendo necessária a utilização de engines gratuitas ou open
source [7].
A ferramenta deve atender às necessidades específicas dos projetos
que
serão desenvolvidos, reduzindo o trabalho dedicado a reconstrução de
14
aspectos básicos do jogo. Desta forma, ela permite que mais tempo seja dedicado
à criação de conteúdo e gameplay, o conjunto de regras que define o
funcionamento do jogo, reduzindo o tempo gasto no desenvolvimento e,
consequentemente, aumentando a qualidade do produto final [8].
Aspectos
internos de mecânicas de jogo, métodos de entrada,
armazenamento de informações, já devem ser cobertos pela engine. Se tratando
de uma engine específica para um
gênero de jogo,
a
variedade
de
funcionalidades disponíveis é reduzida. Entretanto, as mesmas podem ser
atender à necessidades mais específicas do gênero, reduzindo ainda mais
o tempo gasto com o desenvolvimento de funcionalidades básicas, já cobertas
pela engine [9].
2.1 Jogos de Ação e RPG
O gênero denominado “Ação e RPG” (do inglês Action RPG)
subgênero
que
contempla
uma
grande
gama
de títulos,
pois
é
um
inclui
elementos variados de ambos os gêneros de ação e de RPG. Estes títulos
podem ser representados em variadas combinações de gameplay, resultando em
uma grande variedade de experiências para o jogador, tudo dentro de um
mesmo
gênero [10].
Muitos
jogos atravessam continuamente a linha entre
ambos os gêneros, e nesta definição se encaixam alguns dos títulos mais
conhecidos de todos os tempos, como World of Warcraft [11] e Secret of Mana
[12]. A Figura 2 ilustra a interface do jogo Secret of Mana.
15
Figura 2: Interface do jogo Secret of Mana, representante do gênero Action
RPG.
2.1.1 Jogos de ação
Os jogos classificados com o gênero de ação têm como característica
principal incorporar um tipo de gameplay que enfatize desafios físicos, tais
como a coordenação motora do jogador e seu tempo de reação [8].
Dentro do gênero de ação, geralmente o jogador tem controle do
avatar, representação do usuário no universo virtual, utilizando este personagem
para explorar diferentes cenários, enfrentar inimigos e obter itens [8]. A Figura 3
ilustra a interface do jogo de ação DOOM [13].
É frequente a existência de confrontos com inimigos mais poderosos ao fim
de cada sessão do jogo, em situações que apresentam mais desafios ao jogador.
Eventualmente são apresentados quebra cabeças a serem resolvidos, mas estes
são raros neste gênero, e tendem a ser simplificados, pois o tempo é um
elemento crucial dos jogos de ação.
16
O avatar do jogador deve possuir uma representação de sua capacidade,
através de um número que represente a quantidade de vidas ou uma medida que
represente o nível de sua saúde atual. Inimigos encontrados e obstáculos tendem
a causar dano ao jogador ou a custar vidas. O objetivo final do jogador, nestes
gêneros de jogos, é alcançar o final dos cenários disponíveis. Existem também os
jogos no qual não existe um objetivo final determinado, com cenários gerados
aleatoriamente, cujo único objetivo do jogador é continuar sua progressão.
Figura 3. Interface do jogo de ação DOOM, subgênero first person shooter.
2.2.2 Jogos de RPG
Os jogos classificados com o gênero de RPG (do inglês Roleplaying
Games), são derivados dos jogos clássicos de RPGs, conhecidos como RPG de
Mesa (denominação usada por se utilizar apenas de papel e lápis, e todos os
jogadores estarem sentados à mesa). Um exemplo do RPG de Mesa é o jogo
Dungeons & Dragons [14].
17
Este gênero é caracterizado pela imersão profunda do usuário em um
universo ficcional, no qual o jogador controla um único personagem ou um grupo,
que deve cumprir variadas missões. A evolução do personagem com o
tempo de jogo, profunda imersão do jogador na história e elementos de
narrativa são elementos fundamentais deste gênero [15]. A figura 4 ilustra a
personalização do personagem no jogo Mount & Blade, na qual o jogador pode
determinar quais serão as habilidades que irá desenvolver com a evolução do
personagem.
Figura 4. Personalização de personagem no jogo Mount & Blade.
O combate também tem suas bases nos RPGs de mesa, sendo mais tático
do que nos jogos de ação. Muitos tem seus combates baseados em turnos,
um personagem tomando ação por vez, a partir de uma lista de comandos
possiveis apresentados ao jogador, como ilustrado na figura 5.
Em geral o objetivo é construir um combate no qual o jogador precisa
planejar uma estratégia para enfrentar o adversário, ao invéz de utilizar
atributos físicos como tempo de reação. A evolução do personagem se dá
18
através da conclusão de variadas missões e do progresso na história do
jogo, sendo a narrativa um aspecto
marcante deste gênero. Os jogos se
encerram geralmente de acordo com a conclusão de uma linha de histórias, ou o
encerramento de uma série de missões.
Figura 5. Modo de batalha do jogo Final Fantasy IX.
2.1.3 Conceitos do Subgênero Ação e RPG
O subgênero de Ação e RPG une alguns elementos de ambos os gêneros.
Uma de suas características principais é deixar de lado o modelo de combate
tático ou em turnos, em favor do modelo utilizado nos jogos de ação,
fazendo
mais
uso
das
habilidades
do jogador durante o combate, em
combinação com as habilidades do personagem.
Um exemplo desta mecânica é o uso de ataques baseados em movimentos
do mouse, ao mesmo tempo, considerando a capacidade de mira do personagem
para calcular a probabilidade de sucesso do golpe. Desta forma, o gênero
une as características de evolução do personagem, populares nos RPGs,
com a utilização das habilidades do jogador, que tornam os jogos de ação
19
populares como visto na Figura 6, que ilustra o uso de uma habilidade do
personagem, no local determinado pelo jogador, no jogo League of Legends [16].
Figura 6. League of Legends, jogo que usa a habilidade do jogador em
combinação com características do personagem.
A imersão nas histórias geralmente não é tão ampla quanto nos RPGs, e
em geral, o foco passa a ser o gameplay mais rápido e exigente do
jogador, com uma quantidade menor de elementos táticos. Este gênero será o
foco da ferramenta Genis proposta no presente trabalho.
20
Capítulo 3
A Ferramenta Genis
A ferramenta Genis foi desenvolvida como um conjunto de ferramentas e
bibliotecas na Linguagem C# [17] com intuito de auxiliar no desenvolvimento
de jogos eletrônicos com elementos de ação e aventura. Também foi escolhido
o uso do framework Microsoft XNA [18][26][30], que possibilita a abstração de
alguns conceitos fundamentais presentes em todos os jogos. Desta forma, o
processo de desenvolvimento se torna mais fácil por não ter a necessidade de
acesso a funções de mais baixo nível, permitindo assim manter o foco em
questões mais específicas do desenvolvimento do assistente.
Neste capítulo falaremos sobre escolhas tecnológicas relacionadas à
implementação de aspectos do assistente. Além disso, será descrito o conjunto
de ferramentas que compõe o assistente.
3.1 Objetivos do Assistente
O assistente de desenvolvimento Genis foi desenvolvido com intuito de
atender a determinados requisitos, dentre eles se destacam:
● Ser uma ferramenta de desenvolvimento de jogos focada em jogos de
ação e RPG, provendo o suporte necessário para este gênero de jogo,
não tendo a ambição de servir a uma grande variedade de gêneros;
● Fornecer uma estrutura básica de jogo, tendo o usuário o papel
de construir cenários, inimigos e eventos que interajam com o jogador e
determinem o fluxo do mesmo;
● Ser responsável pelo armazenamento de todos os dados referentes ao
jogo sendo desenvolvido, assim como dados de partidas salvos pelo
jogador, tendo sido o jogo já desenvolvido;
21
● Apresentar uma interface de uso simples e intuitiva, que ofereça
acesso fácil às funcionalidades, sendo essas auto-explicativas, e
provendo as informações necessárias para que o usuário faça seu uso
corretamente.
3.2 Detalhes da Implementação
A biblioteca base da engine possui módulos próprios, responsáveis pela
animação de efeitos visuais, inteligência artificial, movimentação, e wrappers, ou
seja, classes responsáveis por abstrair algumas funcionalidades já existentes,
permitindo uma utilização simplificada de funcionalidades do framework XNA,
como interação com usuário através do mouse, teclado e joystick.
3.2.1 Mapas
A engine utiliza de uma implementação de mapas 2D chamada tile
engine. [28]
Este modelo consiste, basicamente, de um array (vetor)
bidimensional que tem como função armazenar valores correspondentes a um
objeto tile. Este objeto tile consiste de informações relacionadas a um tipo de
terreno como a textura ou a possibilidade do personagem do jogo caminhar ou
não sobre este terreno. A Figura 7 ilustra um modelo de tileset.
Figura 7. Modelo de tileset.
22
Neste caso, cada mapa possui um número de camadas, cada
camada sendo representada por um array bidimensional, cujos valores
fazem referência ao índice das texturas utilizadas na renderização do
cenário, de acordo com uma tabela de texturas conhecida como tile set. No
momento da renderização do cenário, os arrays de dados de cada mapa são
interpretados de acordo com o tileset.
Em uma técnica de modelagem similar, cada mapa possui um mapa de
colisão. Este mapa consiste em um array bidimensional responsável por
armazenar valores iniciais sobre a movimentação do personagem. Ele define as
regiões do mapa que não podem ser atravessadas pelo personagem do jogo,
assim como regiões que possuem alguma característica especial que afete a
movimentação do personagem.
3.2.2 Animação de Efeitos
A animação de jogos 2D muitas vezes é baseada no uso de um conceito
conhecido como Spritesheet [28][31], que consiste no uso de uma única
imagem na qual estão localizados todos os frames da animação (Figura 8).
Figura 8. Spritesheet da animação de um morcego.
23
O algoritmo de animação varre esta imagem, selecionando uma fração da
mesma por vez, que é exibida como um quadro de animação. A qualidade
e
suavidade
da animação será de acordo com a quantidade de frames e
velocidade da animação.
Utilizamos esta técnica, sendo cada animação composta de um grupo de
imagens, cada imagem sendo uma direção da animação. Desta forma, ao mudar
de direção, apenas alteramos a textura que é desenhada, e o processo de
seleção do quadro prossegue normalmente.
3.2.3 Inteligência Artificial
A aplicação de inteligência artificial em jogos eletrônicos foge do
campo tradicional, pois tem como principal objetivo criar uma imersão do jogador
no ambiente, através da ilusão de comportamento inteligente dos agentes do
jogo. Desta forma, geralmente são utilizadas técnicas deterministicas, ou
seja técnicas cujo resultado é previsivel, determinado a partir de um
conjunto de entrada. Como exemplo temos o comportamento de perseguição.
É sabido que este comportamento tem como objetivo alcançar o alvo,
independente da distância ou local. Logo o comportamento é previsível. [25][27]
Neste caso, foi definido que os agentes teriam comportamentos definidos,
de forma a tornar a jogabilidade mais simples e previsível, dependente
unicamente do poder atribuído a cada personagem criado.
3.2.4 Pathfinding – Astar
Para
a
locomoção
dos
agentes
não
controláveis
nos
jogos,
é
necessário um mecanismo que os permita se deslocar no mapa de forma
independente. Para isso foi utilizado um algoritmo de pathfinding combinado a
uma escolha aleatória de movimento. [25]
Pathfinding é o processo computacional de buscar o caminho mais curto
entre dois pontos em um mapa. Com este fim foi utilizado o algoritmo A* (Astar)
[19]. Este algoritmo trabalha em cima de um mapa dividido em nós. Cada nó é
uma sessão definida do mapa, alguns são livres, outros são obstáculos, e entre
24
dois nós há um custo de deslocamento, que iremos considerar um valor fixo de 1.
Todos os nós livres são adicionados a uma lista de nós, a lista aberta. Os nós
indisponíveis, que não serão considerados válidos durante o deslocamento, são
adicionados à lista fechada e não serão considerados.
O primeiro passo do algoritmo é adicionar o nó inicial (A) à lista fechada.
Os nós adjacentes ao nó inicial são adicionados à lista aberta. Para cada
nó é atribuída uma pontuação G + H sendo G o custo total de movimentação do
nó A até o mesmo. Para um nó adjacente a A, este valor é 1. Conforme o
algoritmo avançar em direção ao destino, o cálculo de G deve considerar o valor
de G do nó que precede o anterior.
O segundo componente do valor é H, o custo estimado do movimento
deste nó até o destino. Esta aproximação pode ser feita através de uma heurística
simples, como apenas o cálculo da distância ignorando obstáculos. Este processo
é mais acurado de acordo com o quão avançada é a heurística que determina o
valor de H.
O nó com menor valor de G + H é selecionado da lista aberta, adicionado à
lista fechada,
passa a ser o nó atual e o processo é repetido até que o
nó de destino seja encontrado. A partir daí, sendo traçado o caminho inverso, a
partir do nó pai de cada nó, está localizado o caminho. [20]
3.3 Ferramentas
O assistente é composto de um conjunto de ferramentas que fazem uso
das bibliotecas criadas assim como das bibliotecas do framework XNA. Cada
ferramenta é responsável por um aspecto específico do desenvolvimento. A
ferramenta central é o editor de mapas e eventos, a partir do qual se pode
acessar as outras ferramentas (Figura 9).
○ Editor de Mapas e Eventos
■ Editor de Objetos do Mapa
25
■ Editor de Personagens-Não-Jogáveis (PNJ)
■ Editor de Inimigos
■ Editor de Itens
■ Editor de Missões
Figura 9. A ferramenta de edição de mapas.
Os dados gerados pela ferramenta são armazenados em um banco
de dados SQLite3, que consiste de um único arquivo no sistema de arquivos. A
biblioteca do jogo se responsabiliza pela conexão com o banco de dados e
manutenção da camada responsável pelo gerenciamento dos dados. Ao se
realizar uma edição na ferramenta, as alterações são feitas simultaneamente no
banco de dados.
Os
recursos
gráficos
utilizados
pela
ferramenta,
como
tilesets,
spritesets, ícones, efeitos gráficos, dentre outros, estão disponíveis fixamente,
pois
são
recursos
compilados
pelo framework XNA. Recursos adicionais
26
poderiam ser adicionados ao compila-los utilizando o processador de conteúdo do
framework.
3.3.1 Editor de Mapas e Eventos
Permite a criação de cenários, os quais são construídos a partir de tiles,
assim como a criação de eventos que definem as interações do jogador
com os mapas e objetos presentes nos mesmos.
Cada mapa está associado a um tileset específico, armazenando
para cada tile o índice da textura que o compõe, de acordo com o tileset. O
tileset pode ser alterado na aba de Tiles da ferramenta de edição de mapas.
Os tilesets possuem um tamanho padrão, tendo cada tile 32x32
pixels. O tileset possui 8 colunas de tiles, e uma largura fixa de 256 px. A altura
do tileset deverá ser um múltiplo de 32, de acordo com o número de linhas do
tileset.
A figura 10 mostra as diferentes abas que compõe a ferramenta, sendo
cada uma relacionada a um conjunto de objetos ou configurações.
Figura 10. Configuração de mapa e objetos do editor.
27
Para preencher um mapa com uma textura é necessário adicionar
camadas ao mapa. As camadas são exibidas de acordo com a ordem na qual são
adicionadas. Desta forma, as texturas que irão compor o chão do cenário
devem ser adicionadas à primeira camada.
Posteriormente devem ser adicionadas camadas para elementos que
ficarão acima do chão, como pedras ou plantas. O número de camadas de um
mapa é ilimitado, mas é necessário haver ao menos uma camada.
Além de preencher o mapa com as texturas, é necessário definir as regiões
do mapa atravessáveis ou não pelo jogador, como se pode ver na figura 11. As
ferramentas de definição de movimentação estão disponíveis no menu de
ferramentas. Esta definição ficará associada ao tile, indepentende do número de
camadas existentes no mapa, e poderá ser visualizada no editor.
Figura 11. Edição de movimentação na ferramenta de criação de mapas.
3.3.2 Editor de Objetos do Mapa
Esta ferramenta permite que sejam criados objetos mais complexos
para composição do cenário, como árvores ou estátuas, grandes objetos estáticos
que ocupam mais do que apenas um tile no mapa. Estes objetos são tratados
28
pelo motor de colisão da mesma forma que outros personagens, e ao serem
inseridos no mapa no editor de cenários, automaticamente definem os tiles nos
quais se localizam como ocupados.
Figura 12. Ferramenta de criação de objetos.
Ao criar um novo objeto, o gráfico do mesmo pode ser escolhido a partir da
lista de recursos disponíveis, e então o usuário pode definir o ponto de origem do
objeto, ou seja, o ponto que será a base do objeto, assim como definir o raio de
colisão do objeto, seu limite físico.
3.3.3 Editor de Personagens-Não-Jogáveis (PNJ)
O
editor
de
PNJ
é
a
ferramenta
responsável
por
criar
os
personagens que irão interagir com o jogador. Personagens que definem o
tom do jogo, que podem possuir diálogos simples, apresentar um mercado de
itens, atribuir ao jogador uma missão ou dar algum tipo de dica ou direção. Esses
comportamentos são definidos para cada PNJ criado.
29
Figura 13. Ferramenta de criação de PNJ.
A ferramenta permite criar uma lista de diálogos apresentados por
este PNJ, cada diálogo possuindo uma lista de possiveis respostas. Para cada
resposta, pode haver uma ação atribuída.
● Atribuir missão: atribui ao jogador uma missão, escolhida a partir da
lista de missões, no momento de criação do diálogo;
● Entregar missão: verifica o estado atual de uma missão que o jogador
possua e executa a ação correspondente ao cumprimento da mesma;
● Mostrar mercado: a partir da lista de itens existentes no jogo (criadas a
partir do Editor de Itens), pode-se criar um “mercado” de compra e venda
ou exclusivamente de compra ou de venda de itens, cujo acesso é feito
através da interação do jogador com o PNJ.
30
3.3.4 Editor de Inimigos
A
ferramenta
de
edição
de
inimigos
permite
a
definição
de
características como velocidade e poder de ataque dos inimigos encontrados
durante o jogo. Apresenta também uma
lista
de
sprites
de
personagens
existentes para que seja escolhida a imagem do inimigo.
Figura 14. Ferramenta de criação de inimigos.
A ferramenta possui um editor de loot (ou ‘saque’), os itens que podem ser
obtidos pelo jogador ao derrotar o inimigo no jogo. Neste editor é escolhido um
item a partir de uma lista de itens do jogo, e definida uma probabilidade de obter o
mesmo após derrotar o inimigo, assim como a quantidade máxima do mesmo que
se pode obter.
31
3.3.5 Editor de Itens
O editor de itens é a ferramenta responsável pela criação de todos os itens
que serão encontrados no jogo. Itens relacionados a missões, peças de
equipamento que podem ser usadas
características,
armas,
ou
temporário.
cada
item
A
itens
pelo
jogador
utilizados
também
é
para
para causar
atribuída
uma
melhorar
suas
algum
efeito
imagem,
sua
representação no inventário do jogador e na tela do mercado, assim como o valor
pelo qual o item ficará disponível caso seja inserido em uma loja para ser
comprado pelo jogador.
Figura 15. Ferramenta de criação de itens.
32
Ao criar um item, é criada uma referência no banco de dados,
porém as informações do item são armazenadas em arquivos xml. A escolha do
armazenamento em XML ao invés do banco de dados foi feito devido ao
fato dos itens conterem apenas informações pertinentes ao próprio item,
sem relacionamentos com outras entidades do jogo, o que possibilitaria
utilizar de métodos de serialização do framework .net, que realizam o
processo de serialização e o processo inverso automaticamente, que é um
processo muito mais ágil, em termos de tempo de desenvolvimento. A figura 16
representa um modelo de item após a serialização em XML.
Figura 16. Modelo XML de um Item serializado.
3.3.6 Editor de Missões
Esta ferramenta possibilita a criação de missões que podem ser
cumpridas
pelo jogador. As missões criadas são então disponibilizadas na
interface de criação de PNJ, de forma que seja possivel atribuir uma missão ao
jogador após um diálogo.
33
Figura 17. Ferramenta de criação de missões.
A atribuição de missões ao jogador define o fluxo da evolução da
dificuldade do jogo. Consistem basicamente de determinar que o jogador enfrente
determinados inimigos, obtendo experiência e itens adicionais, que auxiliem a
evolução do jogador. As condições de conclusão do jogo são determinadas
através de missões marcadas com a flag de conclusão de jogo. Ao concluir
uma missão marcada com esta propriedade o jogo se encerra, e a tela de fim
de jogo é apresentada ao jogador.
As missões criadas pela ferramenta se dividem em dois objetivos:
● Obtenção de Item: o jogador precisa estar em posse de determinado
item. O mesmo pode ser registrado como parte do loot de um
inimigo ou estar disponível em um evento localizado em um objeto do
mapa, como um baú.
● Matar Criaturas: é determinado um número de inimigos que o jogador
deverá enfrentar para cumprir a missão. Este tipo de missão tem
como principal objetivo incentivar o jogador a enfrentar inimigos e obter
experiência, obrigando-o a se desenvolver, além de posteriormente
oferecer como recompensa experiência que também colaborará com a
evolução do personagem.
34
Capítulo 4
Desenvolvendo um Jogo
Tendo finalizado o desenvolvimento do assistente , o próximo passo é
criar um jogo capaz de demonstrar cada aspecto da engine, ao mesmo
tempo mantendo uma simplicidade de conteúdo, de forma que pudesse ser
desenvolvido rapidamente por apenas uma pessoa. Para isso foi desenvolvido
End’Gar, um jogo de aventura e RPG, aos moldes dos clássicos jogos de
mesa.
Os elementos de gameplay seguem os padrões de dungeon crawl, tipo de
RPG de ação que consiste da exploração de cenários como masmorras e
cavernas, repletos de criaturas e tesouros. Este tipo de aventura, em geral, não
possui imersão do jogador em termos de história, e se dedica, basicamente, a
oferecer uma experiência diretamente focada no gameplay, tornando o gênero
ideal de jogo para ser desenvolvido rapidamente e demonstrar a utilidade da
ferramenta.
Neste capítulo abodaremos o processo de desenvolvimento de um
jogo, de seu conceito à implementação de acordo com as definições impostas
pela ferramenta.
4.1 Projeto do Jogo
O modelo de jogo sugerido tem a simplicidade como foco. O jogador irá
explorar um
conjunto
de
mapas,
com
objetivo
de
enfrentar
variadas
criaturas, adquirir itens e evoluir o personagem. Ao concluir o jogo, o jogador
será apresentado à tela de fim de jogo, e terá a oportunidade de salvar seu
personagem. Assim poderá iniciar uma nova sessão de jogo, tendo a opção de
35
criar um novo personagem ou de recomeçar o jogo com seu personagem
salvo, mantendo seu nível, experiência, itens e habilidades, porém reiniciando as
missões do jogo.
Para adicionar replay value, ou seja, fator que influencia o jogador a tornar
a jogar um jogo, os inimigos serão criados de forma a oferecerem um nível de
desafio acima do que é esperado que o jogador seja capaz de obter durante a
primeira partida, e variados itens estarão disponíveis para serem obtidos, de
forma que seja possível não obte-los durante a primeira sessão de jogo. Assim
o jogador ainda terá novas descobertas conforme inicia uma nova sessão de jogo.
Ao
enfrentar
experiência,
criaturas
e
concluir
missões,
o
jogador
irá
obter
que contribui para a evolução de níveis. A experiência (E)
necessária para o jogador avançar para o próximo nível é determinada pela
fórmula:
E = 50x² - 150x + 200,
onde x é o nível atual do jogador. Esta fórmula é uma adaptação da fórmula de
experiência utilizada no jogo Tibia [21].
De acordo com o avanço de níveis, o jogador passará a ter uma
quantidade maior de pontos de vida, e passará a ter a sua disposição habilidades
que o ajudarão no combate. Estas habilidades serão obtidas de acordo com o
nível do jogador. Conforme se dá a evolução dos 10 primeiros níveis do
jogador, cada avanço tornará disponível uma nova habilidade. A partir do nível 11
o jogador continuará evoluindo, porém não irá obter nenhuma nova habilidade.
O objetivo do jogo é que o jogador explore os mapas até concluir todas as
missões atribuidas
pelo
PNJ.
Caso
o
personagem
morra,
o
jogador
precisará recomeçar o jogo, sendo possível salvar suas características apenas
ao encerrar o jogo. Desta forma, criamos um certo elemento tático, no qual o
jogador
deverá
planejar
que
caminhos
fará,
que inimigos
enfrentará,
acumulando itens e experiência, para poder eventualmente explorar todos os
mapas com facilidade. Ao encerrar o jogo, o jogador poderá recomeçar, mantendo
as características e itens que obteve ao concluir.
36
Foi criado um conjunto de mapas em uma progressão rápida de
dificuldade, com um pequeno número de missões. Neste gênero, as missões
atribuidas ao jogador têm como objetivo auxiliar o jogador a entender os caminhos
e ações que devem ser realizadas, recomepensando-o por cumprir o fluxo
planejado do jogo, e permitindo que a dificuldade do jogo escale de acordo com a
evolução consequente das missões do jogo.
Foi criado um diagrama com o esboço de como seria o fluxo do jogador, do
ponto inicial do jogo, do primeiro contato com o PNJ, até o último local do jogo, no
qual o jogo se encerra (Figura 18).
Figura 18. Diagrama dos mapas do jogo.
Para representar este modelo, foram criados 8 mapas baseados em
um único conjunto de texturas, de forma a estabelecer o conceito de uma
única
localidade
sendo apresentada, sem uma mudança no ambiente
apresentado ao jogador, havendo apenas uma progressão neste ambiente.
As missões serão atribuídas ao jogador pelo PNJ presente no primeiro
mapa. Estas missões o levarão, em ordem, aos mapas 2, 3 e 4. A última missão
atribuída ao jogador o levará ao último mapa do cenário, no qual enfrentará um
personagem mais poderoso. Esta missão será o requisito de conclusão do jogo.
37
4.2 Recursos Gráficos
Um dos principais obstáculos encontrados por desenvolvedores hobistas é
a criação de recursos gráficos. Os gráficos utilizados são um dos aspectos que
determina a impressão inicial e uma das memórias que se mantém em relação a
um jogo, sendo desta forma muito importantes para o sucesso do mesmo.
A qualidade dos gráficos não está necessariamente relacionada ao
número de polígonos utilizados em um modelo 3D, ou à resolução das
imagens utilizadas, mas ao contexto montado com cuidado, de forma que não
haja uma incoerência nos gráficos do jogo,
como
modelos
3D
de
alta
qualidade envolvidos por um cenário desenvolvido claramente com cuidado
inferior.
Este recurso importante possui um custo, que muitas vezes está
muito além do orçamento de um desenvolvedor independente. Para fins de
experimento, foi tomado o caminho utilizado pela maioria dos desenvolvedores
hobistas durante o desenvolvimento de um protótipo de jogo: o uso de texturas.
Para a criação dos mapas foram utilizados tilesets encontrados em
bancos
de recursos
disponíveis
gratuitamente
na
internet.
Texturas
desenvolvidas por artistas independentes que as tornam disponíveis com
condições limitadas de uso, como o uso apenas para fins de demonstração e
não para distribuição comercial.
Estes
recursos
podem
ser
encontrados
em
websites
como
OpenGameArt.org, no qual se pode encontrar arte sob diferentes licenças de
uso. Outra possibilidade de baixo custo é a compra de pacotes de recursos.
Os spritesets utilizados para a animação dos personagens do jogo foram
obtidas através do portal da empresa GarageGames, que oferece variados
pacotes
de
recursos
gráficos
a
custos
acessíveis
a
desenvolvedores
independentes [16]. Desta forma o desenvolvedor hobista ou em produção de um
protótipo de jogo não necessita arcar com os altos custos de um artista
profissional. (Figura 19)
38
Figura 19. Pacote de animações utilizado no desenvolvimento do jogo.
4.3 Mecânica do Jogo
A mecânica básica do jogo será baseada no uso de cliques do mouse e
hotkeys, ou teclas de atalho, para o uso de habilidades do personagem. Os
ataques do personagem são baseados em suas características de ataque e as
características de defesa do adversário.
As armas utilizadas pelo personagem possuem o atributo Poder de Ataque,
que combinado ao seu atributo Força e ao atributo Armadura do adversário,
compõe a fórmula através da qual o dano causado pelos ataques do jogador é
determinado.
O dano básico dos ataques do jogador é calculado pelo poder de ataque da
arma, adicionado de 1% para cada ponto de força do personagem, como no jogo
Dofus, da Ankama Games [22]. A Figura 19 mostra o código do dano básico
calculado através da função BasicDamage.
39
Figura 20. Código da função BasicDamage.
A redução do dano recebido é um valor percentual baseado no valor do
atributo Armadura do personagem. De acordo com a fórmula:
R = 100 / (100 + A),
sendo A o atributo Armadura e R a redução percentual do dano recebido. A
Figura 20 mostra o código da redução do dano recebido, executada através da
função DamageReduction.
Figura 21. Código da função DamageReduction.
Desta fórmula, o dano recebido pelos personagens no jogo é calculado
pela fórmula:
D = DB – ( RED/100 * DB ),
onde DB é o dano básico calculado acima, RED é o valor de redução de
dano calculado acima, e D é o dano final recebido pelo personagem. Esta fórmula
é baseada na fórmula utilizada pelo jogo League of Legends, da empresa Riot
Games [16], e foi escolhida por
apresentar
uma
escala
simples
de
compreender pelo jogador, apresentando uma evolução rápida na proteção
inicial do personagem, porém com uma progressão mais lenta conforme
maiores são os valores.
40
Para evitar uma característica comum dos jogos de ação, conhecida
popularmente como button mashing na qual o jogador apenas pressiona
repetidamente o mesmo botão, para executar uma ação repetidamente, foi
adicionado
um
atributo
ao
jogador
chamado Stamina.
Este
atributo
é
responsável por representar a energia do personagem, e é consumido
durante ataques físicos, habilidades, ou quando o jogador utiliza o comando de
correr com o personagem.
Este valor está presente na interface do jogo, em formato de barra, com o
valor atual e valor máximo de stamina do personagem, assim como um
indicador que se torna verde ou vermelho, caso o personagem possua um valor
de stamina que permita executar um ataque. A Figura 21 ilustra a barra de
stamina e o indicador de ataque.
Figura 22. Indicadores de stamina na interface do jogo.
A stamina se recupera periodicamente, assim como os pontos de
vida do personagem, e a cada nível o seu valor máximo irá aumentar. O
jogador também pode acelerar a velocidade de recuperação utilizando itens que
possuam esta característica.
41
Desta forma criamos uma situação na qual o jogador precisa cuidar
de quantos ataques utiliza e do quanto utiliza a habilidade de correr, assim
como as habilidades de ataque e defesa de seu personagem, adicionando mais
um elemento tático à mecânica do jogo.
Os pontos de vida do personagem seguem o mesmo mecanismo da
stamina. O personagem possui inicialmente um valor fixo de 200 pontos de
vida, aos quais são acrescentados 20 pontos por nível do personagem.
Estes pontos são a representação da saúde do personagem. São recuperados
periodicamente, ou com o consumo de itens com este efeito. Em uma batalha,
quando este valor é reduzido a zero, o personagem morre e o jogo acaba. O
jogador perde seu progresso até aquele ponto e deve recomeçar o jogo. A Figura
22 ilustra os indicadores de pontos de vida do personagem.
Figura 23. Indicadores de pontos de vida do personagem na interface do jogo.
Os itens adquiridos pelo jogador ficam disponíveis na interface de
inventário, acessível pelo atalho CTRL + I. Há um número limite de itens exibidos
no inventário, de forma que para o jogador visualizar todos os itens que possui,
caso o número esteja além do limite, ele precisará se livrar de alguns itens. Isto é
42
possível através do botão “Jogar Fora”, localizado no canto inferior direito da
interface, e assim o item é removido do inventário do jogador.
4.4 Métodos de Entrada
O jogo é controlado pelo uso do teclado e mouse. Por padrão, a
movimentação do personagem é feita utilizando as teclas W (cima), A
(esquerda), S (baixo), D (direita), formato de movimento bem explorado por
jogos de tiro em primeira pessoa e alguns jogos de ação e aventura. O jogador
também pode se movimentar clicando com o botão esquerdo do mouse no
cenário. Esta movimentação utiliza pathfinding para determinar o caminho até o
destino, que a partir daí é traçado fazendo uso de técnicas de steering behavior
para realizar o desvio de outros personagens e obstáculos dinâmicos.
A interação com PNJ e inimigos se dá utilizando o botão direito do
mouse. Ao clicar em um inimigo ou PNJ, o personagem irá se deslocar até o
mesmo, e então iniciar a interação,
exibindo
diálogos
ou
realizando
um
ataque. As configurações de input são personalizáveis, e armazenadas em um
arquivo XML.
Figura 24. Arquivo XML de configuração de input
Os principais comandos utilizados são apresentados ao jogador ao
escolher a opção “Como Jogar” no Menu Inicial do jogo. A Figura 23 mostra a tela
inicial do jogo.
43
Figura 25. Tela de ajuda do jogo.
Para utilizar as habilidades do personagem, o jogador usará as teclas F1
até F10. De acordo com o nível do personagem, as habilidades disponíveis
ficarão visíveis em uma barra na região inferior da tela, apresentando a
tecla correspondente. Este modelo de interface é utilizado globalmente em
jogos do gênero, e permite a visualização rápida, evitado a necessidade do
jogador memorizar todos os comandos que pode utilizar, ao mesmo tempo
evitando aglomerar uma grande quantidade de informações na tela.
Figura 26. Atalhos das habilidades do personagem exibidos na interface do jogo.
44
4.5 Testes do Jogo
Tendo sido desenvolvido um protótipo de jogo utilizando a ferramenta,
passou-se à fase de testes, na qual a mecânica e fluidez do jogo são testados de
forma a buscar um nível equilibrado de dificuldade e diversão. Ao mesmo tempo
são feitas tentativas de levar o jogo a situação que não tenham sido testadas
no momento de desenvolvimento, com objetivo de encontrar falhas.
Inicialmente foi considerado o controle do personagem através de
ambos os métodos de movimento, teclado e mouse, assim como a possibilidade
de interação com a interface através de teclado e mouse. A interação do
personagem com PNJ e Inimigos também se dá através do teclado. Porém
após uma sequência de sessões de testes, o controle do personagem na
interação com PNJ e inimigos através do teclado se mostrou complexa e
ineficiente, pois fazia com que o jogador precisasse deixar o mouse de tempos
em tempos, se focando hora no teclado, hora no mouse.
Foi escolhido então o sistema utilizado com mais frequência em jogos do
gênero, o movimento através das teclas WASD, com a possibilidade de
configuração deste método de entrada, assim como a movimentação através
do mouse. Já as interações do jogador com os inimigos e PNJ é dada
totalmente através do mouse, assim como as interações com as interfaces,
diálogos e menus, exceto pelas teclas de atalho utilizadas para abrir ou fechar os
menus. O uso de teclas de atalho para as habilidades também é um
método amplamente adotado em jogos de RPG de ação, permitindo que o
jogador
mantenha-se utilizando
o
mouse
para
executar
as
interações
normais enquanto utiliza as habilidades através dos atalhos.
Algumas
alterações
no
nível
de
dificuldade
dos
inimigos
foram
necessárias após o desenvolvimento inicial. Após algumas sessões de testes é
possível determinar que nível de dificuldade parece mais adequado para o
jogador, assim como planejar quais equipamentos seria adequado que o jogador
possuísse em determinada fase do jogo, e a partir daí realizar ajustes
na
45
frequência de obtenção de determinados itens, assim como na quantidade
de experiência obtida em determinadas missões e inimigos.
Os ajustes de detalhes do gameplay são extremamente importantes nesta
fase. Após o protótipo inicial é necessário analisar ao máximo os aspectos que
tornam a experiência do jogador mais ou menos agradável, e realizar os ajustes
necessários para se obter um jogo equilibrado, que propicie uma experiência
prazeroza aos jogadores.
46
Capítulo 5
Conclusão e Trabalhos Futuros
O desenvolvimento de um jogo desde suas fundações é um trabalho
extremamente longo e complexo, que envolve um nível de conhecimento das
ferramentas utilizadas e de lógica de programação avançado, assim como o
conhecimento
desenvolvimento
de
de
problemas
jogos
que
se apresentam
eletrônicos,
e
em
geral
particularmente
no
não costumam
ser
encontrados quando se faz o desenvolvimento de sistemas que apenas
armazenam e consomem dados. O aumento na complexidade do trabalho
se dá de forma rápida de acordo com o número de funcionalidades adicionadas à
mecânica do jogo, o que pode se tornar uma experiência extremamente
complicada para um desenvolvedor menos experiente.
A utilização de ferramentas prontas para o desenvolvimento reduz de forma
drástica o esforço utilizado, permitindo que o foco seja dado totalmente a
questões relacionadas ao que o jogo em si deve tratar. Reduzindo a possibilidade
de problemas derivados da falta de experiência,
de
forma
que
é
mais
adequado para um especialida no projeto de jogos desenvolver um protótipo
utilizando uma ferramenta pronta.
Considerando
a
proposta
desta
ferramenta,
a
possibilidade
de
modificar a forma como o jogo flui e as interações do jogador são a base para
uma engine mais complexa, que possa abordar gêneros diferentes de jogos
eletrônicos.
As limitações apresentadas pela ferramenta, como a determinação de
objetivos finais fixos para o jogo, não se mostraram como empecilhos ao se
desenvolver um jogo que se encaixava no gênero para o qual a ferramenta foi
projetada, porém, seria impossível desenvolver
um
jogo
que
fugisse
ao
gênero determinado inicialmente, o que é uma limitação a ser considerada.
47
Trabalhos futuros incluem possibilitar a utilização da linguagem Lua
como linguagem de script, que seria utilizada na criação de PNJ com
comportamentos mais variados e na adição de eventos que interajam com o
jogador, escritos completamente em linguagem de script, acessando métodos
da biblioteca da engine, permitindo uma personalização maior da forma como
a ferramenta funciona, o que por si só já aumentaria a flexibilidade da ferramenta
em termos de gênero desenvolvido. Além disso, a inclusão de inteligência
artificial baseada em máquinas de estado finito, dando uma profundidade
maior às interações do jogador com os agentes do jogo, assim como o uso da
linguagem de script no controle da inteligência articial faz com que se possa
ter um controle fino do comportamento dos agentes, e ainda assim ter um
comportamento automatizado.
Também é visado possibilitar aos usuários a criação de novas
classes de personagens, novas habilidades para o personagem, assim como
possibilitar o uso de habilidades pelos inimigos, aumentando a complexidade e
o desafio dos jogos. A adição de recursos gráficos pelo jogador também é um dos
próximos objetivos da ferramenta.
48
Referências Bibliográficas
[1]
What is a Game Engine. Game Career Guide. Disponível em:
http://www.gamecareerguide.com/features/529/what_is_a_game_.php
Acesso: Maio 2012.
[2]
UNITY: Game Development Tool. Unity Technologies. Disponível em
http://unity3d.com/unity/. Acesso: Agosto 2012
[3]
Unreal Engine. UDK. Epic Games Inc. Disponível em:
http://www.unrealengine.com/udk/ Acesso: Outubro 2012.
[4]
TORQUE 2D. Garage Games. 2012. Disponível em
http://www.garagegames.com/products/torque-2d. Acesso: Agosto 2012
[5]
RPG
MAKER
VX.
Enterbrain
Inc.
Disponível
em
http://www.rpgmakerweb.com/ Acesso: Agosto 2012
[6]
GameMaker. YoYo Games. Disponível em:
http://www.yoyogames.com/gamemaker/studio Acesso: Outubro 2012
[7]
Licenciamento Unreal Engine Disponível em:
https://www.unrealengine.com/udk/licensing/purchase/#personal-form
Acesso: Novembro 2012.
[8]
ADAMS, Ernest. Fundamentals of Game Design. New Riders. 2009
[9]
The Engine Survey: Technology Results. Gamasutra. Disponível em:
http://www.gamasutra.com/blogs/MarkDeLoura/20090316/903/The_Engine_
Survey_Technology_Results.php Acesso: Outubro 2012.
49
[10] Hack And Slash: What Makes a Good Roleplaying Game?. 1Up. Disponível
em:
http://www.1up.com/do/blogEntry?bId=9030743.
Acesso:
Novembro
2012
[11] World of Warcraft. Blizzard Entertainment Inc. Disponível em:
http://us.battle.net/wow/pt/ Acesso Outubro 2012.
[12] Secret of Mana. Square Enix. Disponível em: http://dlgames.squareenix.com/som/en/ Acesso Novembro 2012.
[13] DOOM. Id Software. Disponível em:
http://www.idsoftware.com/games/doom/doom-ultimate/ Acesso: Novembro
2012
[14] Dungeons & Dragons. Wizards of the Coast LLC. Disponível em:
http://www.wizards.com/dnd/ Acesso Dezembro 2012.
[15] BARTON, Matt. The History of Computer Role-Playing Games. Gamasutra.
2007.
Disponível
em:
http://www.gamasutra.com/view/feature/3623/the_history_of_computer_.php
Acesso: Outubro 2012
[16] 2D
Fantasy
Character
Pack.
GarageGames.
Disponível
em:
http://garagegames.com/products/2dfantasycharpack Acesso: Junho 2012.
[17] Visual
C#.
Microsoft.
Disponível
em
:
http://msdn.microsoft.com/pt-
br/vstudio/hh388566.aspx.
[18] Microsoft XNA Framework. Disponível em: http://xbox.create.msdn.com/enus Acesso: Setembro 2012.
[19] Introduction to A*. From Amit’s Thoughts of Pathfinding. Disponível em:
http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html
Acesso: Novembro 2012.
50
[20] A*
Pathfinding
for
Beginners.
Patrick
Lester.
http://www.policyalmanac.org/games/aStarTutorial.htm
Disponível
Acesso:
em:
Outubro
2012.
[21] Tibia.
CipSoft
GmbH.
Disponível
em:
http://www.tibia.com/library/?subtopic=experiencetable Acesso: Julho 2011
[22] DOFUS. Ankama Games. Disponível em: http://www.dofus.com/en
[23] The
State
of
Indie
Gaming,
Gamasutra.
Disponível
em:
http://www.gamasutra.com/view/feature/132041/the_state_of_indie_gaming.p
hp Acesso:
[24] Indie Game Makers Dominate IOS and Android. Flurry. Disponível em:
http://blog.flurry.com/bid/82758/Indie-Game-Makers-Dominate-iOS-andAndroid Acesso:
[25] BUCKLAND, Mat. Programming Game AI by Example. Jones & Bartlett
Learning, 2005.
[26] CARTER, Chad. Microsoft XNA Unleashed. SAMS, 2008.
[27] MARK, Dave. Behavioral Mathematics for Game AI. Course Technology PTR,
2009.
[28] PERRY, Jim. RPG Programming with XNA Game Studio 3.0. Jones & Bartlett
Learning. 2009
[29] GOLDSTONE, Will. Unity 3.x Game Development Essentials. PACKT
Publishing. 2011.
[30] LOBÃO, Alexandre. EVANGELISTA, Bruno. DE FARIAS, José Antonio Leal.
Beginning XNA 2.0 Game Programming, From Novice to Professional. APRESS.
2008.
51
[31] LOQUIDICE, Bill; BARTON, Matt. Vintage Games: An Insider Look at the
History of Grand Theft Auto, Super Mario, and the Most Influential Games of All
Time. Focal Press. 2009
52

Documentos relacionados