RafaelCS-Aula / LP2_Rec_18Ghosts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Projeto 18 Ghosts com Implementação em Consola e Unity

Projeto de 2º Época de Linguagens de Programação II

Autoria

  • Rafael Castro e Silva - 21903059
    • Desenvolveu o projeto.

Repositório:

Link para repositório

  • O branch master contem o Modelo de jogo, como um projeto .NET básico sem qualquer implementação.
    • O unity implementation contem o Modelo do jogo implementado num projeto de Unity.
    • O console implementation contem o Modelo do jogo implementado num projeto .NET.

Detalhes Implementação de Modelo (WIP)

  • Existem 3 classes, no namespace BridgeClasses que são Facades entre o Modelo e a Implementação. As classes do Modelo nunca precisam de interagir com as classes especificas da Implementação, usando as BridgeClasses que por sua vez interagem com as classes do sistema que está a implementar o Modelo.
  • O Modelo usa bastantes namespaces para controlar a o que cada classe está exposta, houve o esforço de tentar com que classes não soubessem mais do que tinham de usar. Isto foi especialmente importante para controlar o que as classes da Implementação conseguiriam ver.
  • Além do Modelo, a Implementação tem de possuir pelo menos uma classe que trate de Input e uma que trate de Rendering, isto garantido pelas BridgeClasses que só aceitam classes exteriores que implementem certas interfaces. Cumprindo assim o Pattern MVC.
  • SOLID foi seguido, cada classe tem uma função própria (embora esta seja um pouco geral em alguns casos) (S). (O) também foi cumprido pelo uso de namespaces, propriedades readonly e private.
  • Como mencionado a cima, as BridgeClasses nomeadamente RenderInfo e InputReceiver guardam referências a classes fora do modelo que implementem certas interfaces. Uma implementação tem de simplesmente fornecer classes que implementem essas interfaces e comunique com as BridgeClasses e o Modelo pode comunicar de volta sem problemas.
  • Os Portais foram implementados como fantasmas "falsos" com a sua própria lógica de combate, isto permitiu que não tivesse de haver código extra só para os Portais e pode-se utilizar os sistemas que os fantasmas já usavam como a luta e o movimento.

Nota com a Implementação Unity

  • Pela altura de entrega deste documento, tentar correr o jogo no editor do Unity causa com que a janela congele e o seu consumo de memória suba constantemente.
  • O congelar da janela do editor verifica-se sempre, no entanto se a janela não estiver aberta o consumo de memória não é afetado.
  • Correndo o jogo através do debugger do Visual Studio o jogo corre normalmente até ao ponto em que é necessário input do jogador, o que é impossível de fornecer pois não há interface para tal.

UML

18GhostsUML.png

Referências

  • O código que alterna a vez dos jogadores no GameController, tal como a maioria do código em ScreenRenderer foi retirado do projeto de Linguagens de Programação I do ano anterior desenvolvido por mim, Inácio Amerio e Diogo Henriques.
  • Para consulta foram utilizados os sites DotNetPerls, StackOverFlow e a .NET API.

About


Languages

Language:C# 100.0%