Eu estava contemplando o design de um jogo (traduzindo um jogo de tabuleiro para o computador, especificamente, o que suponho ser relevante neste caso) e me ocorreu que poderia fazer sentido criar o 'jogo' separado da 'exibição'.
Permitir-me-ia criar um protótipo de algo rapidamente com uma interface de texto simples, e depois abordar isso mais tarde. Isso também me permitia portar o jogo para outras mídias mais facilmente.
Esse tipo de compartimentação é comum nos jogos? Devo tentar quebrar as coisas ainda mais? Existem complicações que podem estar faltando?
fonte
Minha opinião:
Ele lê uma fila de eventos de entrada e modifica o estado do jogo de acordo.
Em seguida, processa coisas como física e outros componentes principais que também atualizam o estado do jogo.
Ciclo. Isso é tudo.
O objetivo é tornar o modelo independente: ele não depende da visão ou do controlador: você deve poder criar um programa que execute apenas um modelo.
Ele nunca grava nada no modelo, é um processo somente leitura, exceto talvez o registro de algum manipulador de eventos (como "Hey Mister Model, quando você detecta uma colisão entre esses dois objetos, chame meu manipulador de eventos que reproduz um som!" ").
Dessa forma, você pode conectar um controlador falso que lê um arquivo que contém eventos de entrada pré-gravados.
Faça também uma visão simples que apenas registra as coisas em um arquivo.
Muito útil para teste e depuração.
Lembre-se de fazer a atualização do modelo a uma taxa constante (etapa de tempo fixo) e a visualização e o controlador o mais rápido possível (mas não muito variável).
fonte
Esse tipo de compartimentação é a divisão entre um mecanismo e um código de jogo e é bastante comum. Há muito espaço para abstração ao longo do caminho.
Os dados gráficos específicos de seu mecanismo e de seus jogos podem ser considerados como o modo de exibição, o código de jogo, o modelo e o controlador seria a cola que você usar para informar ao mecanismo qual textura aplicar a qual entidade do código de jogo.
fonte