- Desenvolvimento de um game engine para jogos 2D utilizando Java e, como prova de conceito, de um jogo semelhante ao jogo do Dyno.
- Adquirir conhecimentos acerca das boas práticas da programação orientada a objetos.
- Aprender a desenvolver um jogo.
- Conhecer a importância do desenvolvimento de testes unitários e desenvolvê-los utilizando JUnit
- A Game Engine é constituído por dois pacotes:
- engine
- geometry
-
Este pacote divide-se em 3 pacotes:
- lines
- shapes
- utils
-
Este pacote é responsável por conter todas as figuras geométricas (Círculos e Poligonos) e classes auxiliárias para a definição destes poligonos que representam pontos, linhas e segmentos de reta.
- Este pacote divide-se em 2 pacotes:
- gameobjects
- ge
-
Este pacote é responsável por conter toda a funcionalidade relacionada com os GameObjects.
-
Todos os GameObjects têm uma:
- Transform que indica a posição, layer, escala e rotação do GameObject
- Behaviour que reflete o comportamento do GameObject
- Shape que corresponde à imagem do GameObject
- Collider para efetuar a deteção de colisões com outros GameObjects.
- Este pacote é responsável por conter toda a funcionalidade relaciona com o Game Engine.
- No Game Engine é possível adicionar e remover GameObjects, ativar e desativá-los, destruí-los, verificar colisões, dar update.
- Existe também um método responsável por correr o mainloop do Game Engine.
- A deteção de colisões é feita por layers, isto é, a verificação de colisões ocorre dentro da mesma layer para as diferentes layers existentes, ou seja objetos em layers diferentes nunca colidem. Isto é uma forma de otimização das colisões.
- Toda a especificação do jogo desenvolvido pode ser encontrada no entregável mais recente.
Pré-requisitos: Git, Java e Java Development Kit instalados.
- Clonar o repositório
git clone https://github.com/edagener0/GameEngine2D.git
cd GameEngine2D- Correr o programa (VSCode)
# abrir o visual studio code
code .
# Após abrir o visual studio, ou o seu editor de código de preferência, basta executar o ficheiro Main.java