Como falei no último post que fiz, estou fazendo um jogo e vou comentar um pouco sobre ele por aqui. Eu queria que o segundo post fosse sobre tirar as ideias da mente e do monte de papeis que elas estão e fazer alguns modelos funcionais, testes em papel, etc. Porém como é de se imaginar vindo de mim, enrolei pra terminar o texto enquanto o projeto foi andando. Dai que cheguei no ponto que vou abordar nesse post (e que até faz um pouco de sentido ser falado antes), é um momento que ninguém realmente gosta mas com certeza vai acontecer diversas vezes. A hora de jogar tudo que você fez, dias, semanas ou até mesmo meses de trabalho sem uso nenhum, o conceito não funcionou, a jogabilidade ficou esquisita, a arte está feliz demais, o código mal começou a ser escrito mas já é pura gambiarra e hacks para funcionar.
No meu caso eu acabei resolvendo jogar tudo fora por conta da programação. O maior motivo é que desde o começo eu não estava feliz com as implementações que estava fazendo. A performance estava péssima e por mais que tentasse otimizar o código ele continua lento e com bugs, muitos bugs. Além disso eu gastava cerca de 20 minutos para conseguir fazer simples reta para testes, o que já me mostrava o quão complicado ia ser fazer as fases de verdade para o jogo.
O problema nessa hora é que você já gastou muito tempo com aquilo, provavelmente chegou num ponto que não tem mais ideias de como mudar o que você fez, seja esse algo um código,uma mecânica ou até mesmo uma arte. Além disso você acaba se perguntando se realmente vale a pena recomeçar do zero ao invés de tentar mudar uma coisa ou outra no que você tem ali na sua frente pronto, se vale a pena gastar 1 semana refazendo tudo ao invés de algumas horas remendando o que existe.
As vezes remendar é uma boa opção, as vezes o seu problema pode ser resolvido com uma solução simples no lugar certo outras vezes remendar as coisas só vão piorar as coisas ou pior, esconder um problema muito maior em seu projeto.
No meu caso eu demorei mais do que devia para escolher a opção de jogar tudo fora, eu realmente tentei remendar o código e ver no que ia dar, se desse certo teria valido a pena, já que o código estaria pronto e eu poderia então ir atrás de fazer a arte, modelagem e sonoplastia para o jogo. Infelizmente não deu e eu acabai gastando tempo e esforço em algo que não dará resultados (ao menos não para esse projeto, mas acabei aprendendo bastante sobre catmull-ron splines e curvas de bezier). Como é um projeto sem datas de entrega ou gente cobrando resultados pude jogar tudo pro alto, gritar foda-se e recomeçar.
O resultado disso foi alguns dias parado, desanimado com o projeto e todo o resto e um código muito mais limpo, sem tantas gambiarras e que me permite fazer o level design muito mais rápido do que antes (ou até mesmo não fazer e deixar o sistema gerar as fases de forma aleatória, não que eu vá fazer isso, claro). No final acabei gastando um bom tempo para nada (novamente, para esse projeto, aprendi o suficiente para poupar muito tempo no futuro) mas acabou valendo a pena nesse caso.