O código fonte situa-se neste repositório público.
- Aplicação do Game Engine na criação no jogo.
- Geração procedimental da dungeon e colocação de respetivos componentes na mesma tal como a sua renderização.
- Criação de classes que compõem o jogo.
- Ficheiro README, UML e Fluxograma.
- XML das classes do jogo.
- Implementação, manutenção e alteração do funcionamento de classes do Game Engine.
- Comportamento dos inimigos.
- Controlador do jogador.
- XML do Game Engine. Doxyfile.
Os Design Patterns utilizados foram:
- GameLoop
- Update
- Component
- Composite
- Observer Pattern
As Scenes de jogo têm um método GameLoop()
, este gere o ciclo de jogo
chamando todos os GameObject
que se inserem nesta e ativando os seus
métodos Update()
, que dependendo da função do GameObject
em questão, vão
agir de acordo com isso (pois todos os métodos Update()
vão ser
específicos ao seu objeto), por consequência, os GameObject
ativam o
Update()
dos respetivos Compoment
(componentes).
O Composite Pattern está a ser aplicado na criação de Dungeon
, esta
contem as respetivas salas, que por sua vez contém as respetivas portas e
inimigos com as respetivas instanciações.
O Observer Pattern é utilizado pelas classes Quiter
e
PlayerController
, para ler e utilizar eficientemente o input.
As classes PlayerController
e EnemyController
são componentes que
complementam os GameObject
pai controlando o input (no caso do player)
e o comportamento artificial (no caso dos inimigos). Estas classes também
são exemplos de alguns dos componentes que compõem um GameObject
e gerem
o seu funcionamento.
- Implementação o GameLoop e o Update Method.
- Duas threads: a thread principal do jogo (que executa o GameLoop) e uma thread para ler input do utilizador.
- Mecânicas base do jogo original:
- Movimento ´WASD´;
- 1 Ataque skill;
- 1 Inimigo atacável que ataca;
- 1 dungeon explorável gerada procedimentalmente;
- XP que se ganha ao matar inimigo e sistema de níveis e stats que se incrementam;
- Ecrã inicial com opção no menu onde são explicadas as regras e indicados os controlos do jogo;
- Menu de escolha de classes com 2 classes, warrior e rogue;
- Escrever "credits" ou 'c' para os creditos;
- Escrever "exit" ou 'e' para sair;
- Pressionar qualquer tecla no menu inicial para começar:
- Escrever o nome da classe desejada;
- De seguida o nome do jogador;
- No jogo:
- Atacar inimigos para ganhar XP e subir de nível;
- Eliminar todos os inimigos causa vitória e morrer causa derrota;
- 'WASD' para mover o personagem;
- 'Space' para atacar;
- 'C' para mostrar detalhes do personagem;
- 'E' para abrir portas e entrar na respetiva sala;
- Escrever a opção pretendida para navegar dentro de menus;
- Sistema de inventário e Lojas/Transações de Gold
- De momento só existe 1 item possível e é a Short Sword usada para atacar;
- Classe Sorcerer;
- Restantes stats de classe;
- Interações e existência de NPC's;
- Controlo e ataque de jogador com rato (utilizar o teclado pareceu mais prático de implementar);
-
Conversas com os alunos André Vitorino, Rodrigo Pinheiro e Guilherme Saturno sobre problemas relacionados com colliders.
-
Game Engine baseado no que o professor Nuno Fachada disponibilizou.
- Nystrom, R. (2014). Game Programming Patterns. Genever Benning.