Projeto de 2º Época de Linguagens de Programação II
- Rafael Castro e Silva - 21903059
- Desenvolveu o projeto.
- 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.
- 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 asBridgeClasses
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
eprivate
. - Como mencionado a cima, as
BridgeClasses
nomeadamenteRenderInfo
eInputReceiver
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 asBridgeClasses
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.
- 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.
- O código que alterna a vez dos jogadores no
GameController
, tal como a maioria do código emScreenRenderer
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.