Sunday, November 17, 2019

As mil formas de escrever um código

Hoje decidi escrever para o nosso blog.
Hoje decidi escrever um artigo sobre como acontece com a codificação do nosso jogo.
Não só a codificação do jogo, mas como acontece para muitos sistemas.

É comum para o desenvolvedor de software se encontrar na situação de que ele recebe um código inicial, ou faz um código de esboço destinado a executar 1 ou N tarefas, que depois ao implementar mais ou integrar o código já feito para um sistema com demais softwares, acaba quebrando referências, faltando variáveis, estando num estilo de escrita, ou até mesmo surgindo a necessidade de desestruturar um código à orientação a objetos.

A maioria dos códigos iniciais que usamos foram de maneira estruturada e fixa, para que se pudesse montar uma cena com o mínimo funcional, porém esse tipo de implementação não atende a um jogo que funciona de forma assíncrona, o que dificultou bastante a parte da integração. Algumas regras de orientação a objetos, a princípio, não foram aplicadas e tiveram que ser aplicadas depois, e algum tempo já se foi perdido pelo motivo de ter que parar e ficar pensando em como fazer o que já existe e funciona isolado, funcionar com o todo e as demais classes.

Passamos por um problema, este que era em uma cena as coisas funcionavam, integramos e refatoramos para funcionar com o todo. Porém na hora de repetir a mesma cena com diferentes estatísticas, a coisa não funcionava e não entendíamos o porquê. E no final, realmente depurar o problema não era uma coisa tão simples, porque não temos como fazer um live debugging e ver os valores indo e voltando em tempo real.
Passamos por um problema, este que foi refatorar novamente um código que já tinha sido refatorado.

Existem mil formas de escrever um código desde que ele chegue no resultado, mas teria uma que fosse perfeita? Acho que sempre depende de qual é o resultado. É inevitável, não acho que seja possível. Ter a visão de um sistema assíncrono e de primeira codificar de forma exata em que tudo vai funcionar em seu melhor potencial. Escrachar um código, destrinchar linhas em métodos, organizar classes e objetos... Mas estamos em busca da forma mais eficiente.



Sobre se fazer um jogo... Para quem está acostumado a lidar com integração de sistemas, está sendo bem difícil de lidar, mas acredito que isso venha mais da necessidade de estar codificando algo para uma plataforma sem usar a linguagem própria dela, e também de como a assincronia influencia em objetos que existem e não existem na cena. Mas não vejo como notícias desesperadoras o fato de que estamos em ponto reescrevendo coisas feitas para funcionarem melhor, estamos definindo um motor que tem que funcionar com todo tipo de entrada. Esta é a parte mais complexa de se fazer um jogo. Enquanto esse motor não está pronto, o jogo fica com uma sensação vazia, mas quando esse motor estiver pronto, criar conteúdo fica tão simples quanto escrever um arquivo de texto (e é exatamente a facilidade que almejamos).

No comments:

Post a Comment