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.
fonte
Sou principalmente um desenvolvedor de jogos e não um desenvolvedor de software tradicional, mas acho que existem várias diferenças importantes.
Essas são obviamente várias generalizações e não são abrangentes:
equipes maiores. Origens mais variadas (artistas, programadores, produtores, com cada uma delas há ainda mais variação). Ciclos de desenvolvimento mais longos. Padrões mais altos de desempenho. Maior escala de projetos. Risco maior e mais caro de falha. Ambiente mais estressante.
Quanto às interações com objetos e ao layout de sua arquitetura, você ainda pode desacoplar adequadamente os sistemas. Seus objetos e comportamento de jogo terão claramente dependências um do outro e desses sistemas. Essa é a natureza do jogo (trocadilhos), ele combina todos esses sistemas em uma única unidade coesa, e não há nada de errado nisso. Pode parecer assim, porque a escala de tudo isso é maior do que você está acostumado.
Alguns sistemas facilmente identificados e segregados?
fonte
Eu não acho que a programação de jogos seja diferente de outros domínios de aplicativos, do ponto de vista de ser mais difícil escolher a separação certa de preocupações. Sempre que você levar suas habilidades para um tipo diferente de domínio de aplicativo, descobrirá que a transição não é tão suave quanto você poderia esperar, porque sempre há diferenças. O que funcionou em seu aplicativo de banco de dados tem muitos padrões / expressões que não funcionam tão bem em seu aplicativo incorporado, que possui muitos padrões / expressões que não funcionam tão bem naquele sistema em tempo real que também possui muitos padrões / expressões que não funciona na programação de jogos. No entanto, os programadores de jogos têm os mesmos problemas quando deixam o domínio de programação de jogos. É tudo apenas uma questão do que você está acostumado.
Com isso dito, acho que a programação de jogos parece mais difícil para muitas pessoas, porque exige que você trabalhe com partes do computador com as quais a maioria dos programadores nunca precisa lidar no seu trabalho real (gráficos e sons de baixo nível) e mais matemática aplicada do que muitas as pessoas se sentem à vontade e não por causa da separação de preocupações. Embora sempre haja dificuldades para determinar a escolha certa para a separação de preocupações, acho que a dificuldade com a separação de preocupações que você está enfrentando é simplesmente mudar para um novo domínio do problema. Depois de criar alguns aplicativos, será como qualquer outra coisa, você aprenderá o que gosta e não usará o que não gosta.
fonte
Eu acho que você tem uma resposta lá, existem muitas interações. Eu fiz alguns jogos com XNA (C #), agora estou fazendo um jogo de tamanho médio, como você diz, um jogo de simulação de estratégia, trabalhando nele há quase 2 meses e faço sozinho sem ajuda, então eu deve manter meu código simples. Uma enorme diferença, eu acho, é entender e projetar algumas classes para funcionalidade e outras para desenho, isso ajuda e torna seu programa mais limpo. Obviamente, se você estiver fazendo um jogo, precisará ter mais recursos, como imagens (2d ou 3d) e música (ou sons). Então existem diferenças, acho mais difícil, mas muito engraçado.
fonte
Eu acho que a programação de jogos é mais divertida. Você pode testar constantemente seu jogo, implementar uma física diferente, o que resulta em comportamentos diferentes.
Pela minha experiência, a programação de jogos é realmente muito mais divertida em comparação com o desenvolvimento de software. No desenvolvimento de software, você tem certas regras de negócios a serem seguidas, fica um pouco chato. Você está criando um software, não é divertido. O uso de software é ótimo, útil, útil, mas não divertido.
Jogos são divertidos. Talvez seja apenas eu, mas acho o desenvolvimento de jogos muito mais intrigante e emocionante do que o desenvolvimento de software tradicional, independentemente do uso das ferramentas.
PS: Eu uso as ferramentas mais recentes para desenvolvimento de software, HTML5, Asp.Net, C #, etc. Ainda acho o DirectX, UDK, XNA, Unity mais divertido de codificar.
fonte