Programação Modular…você já ouviu esse termo antes?
Normalmente quando criamos nossos jogos, é normal codificarmos começando de um código núcleo.
E a partir dai, acrescentar features em cima dessa lógica base criada, porem isso pode nos trazer problemas futuramente.
E a criação de códigos independentes, também conhecida como Modularidade de código, surge para resolver esse problema.
Mas, calma lá…
Se você está começando com desenvolvimento de jogos, não se preocupe com isso por hora.
Pois, no início você precisa dar um passo de cada vez e assimilar o básico aos poucos.
E dessa forma é mais fácil você conseguir criar seus projetos sem se preocupar tanto se está certo ou não.
E lembre sempre que feito é melhor que perfeito!
Pois, assim você evoluirá gradativamente até chegar em conceitos avançados como Modularidade de código.
QUANDO DEVO ME PREOCUPAR?
Quando você tem alguns projetos e percebe que seus scripts começam a transbordar de funcionalidades.
E também quando você consegue implementar, mas “sente” que aquilo talvez não seja uma boa prática.
E quando você começa a criar scripts “repetidos”, ou se está com o objetivo de iniciar um projeto mais complexo.
Pois, qualquer uma dessas situações são fortes indicativos de que você precisa deixar seu código mais independente.
MODULARIDADE
É mais fácil do que você pensa, ideia principal da programação modular reside na separação de funcionalidades.
E na Unity, este conceito se aplicaria a scripts diferentes com funções diferentes.
E assim evitando um script só “pau pra toda obra”, que tenha 5 mil linhas e faça tudo em seu jogo.
Pois, a essência da programação modular é dividir comportamentos individuais específicos em uma variedade de scripts
Quais as vantagens?
Alguns motivos como: Organização, Reciclagem de código, Depuração, ganho de tempo, Redução de dependências e Trabalho em equipe.
E é muito mais fácil gerenciar qual script afeta o que, quando estão organizados e separados conforme suas responsabilidades.
E com a reciclagem de código um script que controle os movimentos de um inimigo poderá ser aproveitado em outros.
Porém, na hora de realizar a depuração, encontrar bugs se torna muito mais fácil.
E também a programação modular pode economizar tempo escrevendo um código limpo desde o início.
Um script “pau pra toda obra” pode levar a um código conflitante à medida que o projeto cresce.
Por isso, com a modularidade de código conseguimos fazer redução de dependências.
E facilitando o trabalho em equipe: um código modular é mais fácil de se ler e compreender.
E isso torna bem mais fácil para outros devs lidarem com a programação.
3 PILARES PRINCIPAIS DA MODULARIDADE
Um código independente necessita de 3 pilares para funcionar da forma mias eficiente possível.
E esses pilares são a HERANÇA, CLASSES INDEPENDENTES e SCRIPTABLE OBJECTS.
Pois, a combinação deles, trazem inúmeras vantagens para sua codificação.
E além de um contribuir diretamente para o bom funcionamento do outro conceito.
HERANÇA
Criar super classes que servem de herança para objetos com comportamentos semelhantes é a base.
Pois, isso em um projeto poderá economizar boas linhas de código.
E com uma super classe, você já define uma única vez toda uma base , que será usada por centenas de outras classes.
Se você precisar de objetos com comportamentos parecidos, considere criar uma super classe e utilizar do conceito de herança.
CLASSES INDEPENDENTES
Criar classes (scripts) independentes para diferentes mecânicas de um GameObject é o próximo passo.
E assim você evitará o famoso script “pau pra toda obra”.
Pois, imagine que você tenha criado um script “Player” que contenha todos os atributos e comportamentos do personagem principal.
Isso poderá acarretar em um código instável e de difícil manutenção.
Por isso, adicionar ou modificar uma mecânica será bem difícil.
Mas, ao invés de ter um só script, por que não dividir as funcionalidades?
E em diferentes scripts de acordo com a mecânica específica?
Porém, você não precisar criar dezenas de scripts só para por um método em cada.
Mas, faça uma análise daquilo que lhe convém de acordo com o seu escopo.
Geralmente a necessidade de criar uma nova classe vem de mecânicas que exigem vários atributos e métodos únicos.
Ou evitar a repetição de código.
USANDO SCRIPTABLE OBJECTS
Scriptable Objects podem ser excelentes aliados no processo de elaboração de uma estrutura modular.
Pois, ao invés de armazenar todos os atributos (variáveis) dentro do script “Player” opte por um ScriptableObject.
E assim, todas as mecânicas de dependam dos atributos do Player podem busca-los direto no ScriptableObject.
E evitando “puxar” do próprio Player, retirando essa dependência dele.
E é possível tornar o sistema ainda mais independente ao criar um SO para cada “categoria” de atributos.
CLASSES INDEPENDENTES + SCRIPTABLEOBJECTS
Você pode mesclar o uso de classes independentes + SO para gerar um sistema ainda mais modular.
Por exemplo, eu tenho vários objetos destruíveis que causam dano no Player.
E então, criei uma classe genérica para eles e um SO para servir de atributos da classe.
Pois, assim, todos os objetos podem herdar os mesmos atributos, facilitando na hora de balancear o game.
PRATIQUE ATÉ SE ACOSTUMAR
A criação de um sistema modular pode ser uma tarefa mais demorada do que sair codando de qualquer jeito.
Mas, é um trabalho que te poupará dores de cabeça no futuro.
E de início é difícil abstrair esses conceitos, mas a prática te deixará apto a melhorar cada vez mais seus códigos.
Lei da modularidade: não repetir código e torna-lo mais independente quanto for possível.
Uma dica muito bacana para você, que tem interesse em aprender mais sobre a Unity e a sua linguagem C#, essa é a sua chance.
Pois, temos um curso sensacional que te mostra a base da programação na Unity.
E de quebra você ainda vai desenvolver um jogo top down com sistema de diálogo, crafts, inimigo e muito mais.
Basta clicar na imagem ao lado para saber tudo sobre esse curso incrível!
Seja o primeiro a comentar.