Bem-vindo à indústria de jogos :)
Então você está fazendo uma refatoração massiva. Refatoração maciça é o mal, mas esse não é o assunto. Você provavelmente recebeu essa tarefa para testar seus nervos de qualquer maneira, então não desista.
Minha resposta é: você precisa dividi-lo em pequenos pedaços. Será sua rotina diária em alguns meses, então você precisa aprender a dividir e conquistar. É basicamente o seu trabalho. Algumas sugestões:
Certifique-se de entender o que esse componente deve fazer . Brinque com o que você precisa tirar e veja o que ele faz, pergunte aos seus colegas se suas suposições estão corretas.
Você está reescrevendo este módulo por um motivo. Pode não ser óbvio para você, mas se você recebeu essa tarefa, é mais provável porque algo era tão ruim que as pessoas acham melhor começar de novo. Pergunte: quais são esses defeitos ?
Tente encontrar o recurso principal do componente que você está reescrevendo, sua substância, o motivo pelo qual ele existe e comece a fazê-lo funcionar. Deve ser muito pequeno, tão pequeno quanto possível. Pergunte a seus colegas o que eles acham que esse recurso seria. Se for um sistema GFX, basta exibir um polígono. Se for um sistema de animação, basta colocar um osso corretamente. Se for um sistema de IA, basta fazer uma animação. Etc. etc. Apenas jogue fora tudo que atrapalhar e fornecerá todos esses erros assustadores. Não se preocupe com os detalhes, basta fazer com que esse recurso principal funcione o mais rápido possível. Sua implementação será feia, cheia de bugs, hacks e números mágicos e você não deixaria ninguém dar uma olhada no seu código, mas isso não é um problema.
Depois de obter esse recurso principal, você começará a se sentir melhor. É essencial ver o resultado do seu trabalho o mais cedo possível 1) para o seu moral 2) poder testá-lo. Então, teste, teste de estresse, torture . Se ele travar ou mostrar algum bug muito ruim, corrija isso. É o coração do seu módulo, então refaça um pouco e limpe até que você se sinta confortável.
Depois mostre aos seus colegas e pergunte se é disso que o jogo precisa. Peça uma revisão de código : provavelmente seus colegas lhe falarão sobre muitas coisas em que você não pensou. Você precisará refatorar novamente para garantir que sua implementação se encaixe com o que o restante da equipe deseja.
Depois, quando estiver pronto, escolha um dos outros recursos que você descartou anteriormente, enxágue e repita. Faça com que funcione o mais rápido possível, retrabalhe, peça uma revisão e retrabalhe.
Eu tenho que enfatizar uma última vez sobre isso: comunicar . Pergunte a seus colegas, não apenas a sua liderança, não apenas os programadores, todos que usarão, testarão ou avaliarão esse sistema. Não tenha medo de fazer perguntas estúpidas: em caso de dúvida, é sempre melhor obter as informações agora do que esperar semanas por uma reunião ou uma revisão.
A realidade da programação de jogos é que você não criará novos sistemas brilhantes todos os dias, é um trabalho de manter o foco e fazer as coisas com rapidez e eficiência. Junte-se, comece a trabalhar e boa sorte!
EDITAR
Há informações extras que considero úteis no comentário de Leo e na resposta de dhasenan. Estou envergonhando isso com eles para concluir esta resposta.
Não escrevi sobre como lidar com interdependências . O módulo que você está reescrevendo provavelmente está profundamente associado ao resto do jogo, é por isso que você recebe tantos erros ao mudar alguma coisa. Portanto, existem duas soluções:
Se houver apenas algumas dependências, você terá sorte. O módulo antigo e o novo podem ser mantidos em paralelo por um tempo; você pode até ter uma opção para seus usuários, para que eles decidam alternar entre o módulo antigo e o novo sempre que necessário. Basta colocar um switch em algum lugar, em um arquivo de configuração ou em um menu de depuração, e usá-lo onde quer que seu módulo esteja conectado ao resto do jogo. Quando o seu novo módulo estiver pronto para produção, ligue o interruptor por padrão. Posteriormente, quando o módulo antigo não for mais usado ou quando a produção precisar continuar, remova o módulo antigo e o comutador.
Se houver muitosdependências, você precisa desconectá-las e reconectá-las uma a uma. Tente manter os dois módulos em segundo plano e, sempre que um novo recurso funcionar, alterne para o novo módulo desse recurso. Ou seja, desconecte e reconecte o que está relacionado a esse recurso. Levará algum tempo, porque provavelmente é mais trabalhoso do que alterar apenas uma chamada de função: algumas estruturas de dados podem mudar, o fluxo do programa pode mudar etc. Mas ainda é melhor do que reescrever tudo uma vez e levar semanas para matar a besta de compilação. Se for realmente impossível manter os módulos antigo e o novo em paralelo, porque o módulo é tão vital para o jogo, você poderá reescrever. Mas lembre-se de que isso pode significar que, se os defeitos estiverem na interface do módulo antigo, você terá os mesmos defeitos. Enfim, se isso acontecer,
Se há algo específico no desenvolvimento de videogames, é o seguinte: não estamos fazendo ciência de foguetes ou um trabalho de pesquisa complicado, fazemos parte de um processo criativo. Ao fazer algo, você precisa criar uma primeira versão o mais rápido possível, para que possa ser testada, reproduzida, desaprovada e modificada. Você não pode passar semanas fazendo "um trabalho muito longo" sem entregar um pouco.