Para um desenvolvedor de software de uso geral sólido, o que especificamente é diferente no desenvolvimento de jogos, fundamentalmente ou apenas diferenças de grau?
Eu fiz jogos de brinquedo como Tic-tac-toe, Tetris e um solucionador de sudoku de força bruta (com interface do usuário) e agora estou embarcando em um projeto de tamanho médio (tamanho médio por ser um desenvolvedor único e não ter fiz muitos jogos) e uma coisa que descobri nesse projeto em particular é que a separação de preocupações é muito mais difícil, pois tudo afeta o estado, e cada objeto pode interagir com todos os outros objetos de inúmeras maneiras.
Até agora, consegui manter o código razoavelmente limpo para minha satisfação, mas acho que manter o código limpo em jogos não triviais é muito mais difícil do que no meu trabalho diário.
O jogo no qual estou trabalhando é baseado em turnos e os gráficos serão bastante simples (baseados na Web, principalmente através da manipulação do DOM), de modo que o tempo 3D e o trabalho em 3D não sejam realmente aplicáveis a mim, mas eu ainda seria interessado em respostas relacionadas a essas, se forem interessantes. Principalmente interessado em lógica geral do jogo.
PS Sinta-se à vontade para refazer a marcação, não tenho certeza de quais tags são aplicáveis.