Estou no meio do desenvolvimento de um jogo baseado em sprite 2D para o Windows 7 Phone, usando o XNA. O treinamento e os tutoriais disponíveis para ele são bastante úteis, mas o problema que enfrento é que cada um deles aborda seu design de classe de maneira diferente e o código não é particularmente bem-fatorado. Como resultado, tem sido difícil para mim entender bem quais responsabilidades devo dar a uma classe em particular.
Por exemplo, eu poderia ter uma classe de sprite de base BaseSprite
que sabe desenhar, verificar colisões, etc. Eu poderia ter uma AnimatedSprite
classe que saberia como navegar em sua planilha de sprite, uma ExplodingSprite
classe e assim por diante. Essa técnica é demonstrada no exemplo de Space Invaders nos materiais da sessão 2 do Windows 7 Phone Jumpstart .
Como alternativa, eu poderia colocar a maior parte da renderização e executar a responsabilidade do jogo em uma GameScreen
classe; essa classe e suas classes derivadas se comportam mais como formulários ou páginas da Web em termos de suas responsabilidades. As classes Sprite são contêineres mais simples e com muito menos lógica.
Essa é a técnica usada no jogo Alien Sprite do Windows 7 Phone Training Kit e em outros exemplos de gerenciadores de estado de jogos.
Qual é a abordagem correta orientada a objetos para o design de classe no desenvolvimento de jogos?