Introdução ao Blog e primeira dica de programação
Olá a todos, sejam bem vindos ao meu blog!! Meu nome é Gabriel e irei passar meus conhecimentos variados a partir da minha experiência de 1 ano e meio de programação na Game Engine Godot. Esse blog não tem o objetivo de ensinar programação no Godot, já que existe alguns canais no YouTube que abordam bastante da Engine, mas sim de poder expandir a comunidade de programadores dando algumas dicas de ouro para produção de seu jogo.
Agora, para começarmos com o pé direito, a primeira dica do blog é algo que observei bastante a comunidade gringa (a partir da aba issues do diretório Godot no github) e que é um problema bastante irritante quando vai mexer com PARTÍCULAS. No Godot, quando vai criar, por exemplo, uma arma que, ao disparar, emite partículas, irá reparar um "engasgo" na primeira vez que vai disparar. Esse problema é do compilador do shader do ParticlesMaterial, basicamente, quando cria um node Particles2D, você edita as propriedades como Gravidade, velocidade inicial, aceleração, etc. separadamente, mas essas propriedades precisam ser convertidas em ShaderMaterial, ou seja, é compilado um shader quando é carregado a partícula. O problema é que esse carregamento não acontece quando o jogo carrega, mas sim quando é emitido pela primeira vez a partícula, assim causa o "engasgo" quando a arma é disparada pela primeira vez.
E como evitamos isso? De forma resumida, apenas precisamos que todas as cenas que contenham algum node Particles2D, sejam carregadas e emitam todos os ParticlesMaterial usadas pela cena.
Para isso, usaremos Singletons, caso ainda tenha dúvidas, acesse: Singletons (AutoLoad). Primeiramente, caso seu jogo ainda não tenha um Singleton, faça o seguinte: Crie um novo Script e salve-o, em seguida, na parte superior vai em: Project > Project Settings > AutoLoad, nessa aba vai poder gerenciar os Singletons de seu projeto e para criar um, clique no ícone de pasta ao lado do Path e abre o Script criado anteriormente, dê um nome e Adicione. Pronto, agora seu projeto tem um Singleton. Uma propriedade interessante dos Singletons, é que são adicionados à cena automaticamente quando é carregado, podendo adicionar filhos à ele, usaremos isso ao nosso favor.
No Script, adicione as seguintes linhas:
Pronto, agora sempre que quiser carregar uma cena, adiciona o caminho para a variável PRELOAD_NODES e o "engasgo" só acontece quando o jogo é carregado. Esta solução provavelmente não será mais necessária no futuro, mas até o momento da publicação deste post, o Godot ainda tem esse problema.
Bom, é isso para o primeiro post do blog, espero que tenha ajudado muitos, caso tenha dúvidas, consulte a documentação oficial do Godot, deixar um comentário ou mandar um email para: ghsoares99795@gmail.com. Recomendo a vocês, dar uma olhada em alguns canais no youtube: KidsCanCode, Game Endeavor, GDquest, HeartBeast e Gamefromscratch, são ótimos canais e aprendi muito com eles, aposto que poderá aprender muito com eles também.
Adeus!!
Agora, para começarmos com o pé direito, a primeira dica do blog é algo que observei bastante a comunidade gringa (a partir da aba issues do diretório Godot no github) e que é um problema bastante irritante quando vai mexer com PARTÍCULAS. No Godot, quando vai criar, por exemplo, uma arma que, ao disparar, emite partículas, irá reparar um "engasgo" na primeira vez que vai disparar. Esse problema é do compilador do shader do ParticlesMaterial, basicamente, quando cria um node Particles2D, você edita as propriedades como Gravidade, velocidade inicial, aceleração, etc. separadamente, mas essas propriedades precisam ser convertidas em ShaderMaterial, ou seja, é compilado um shader quando é carregado a partícula. O problema é que esse carregamento não acontece quando o jogo carrega, mas sim quando é emitido pela primeira vez a partícula, assim causa o "engasgo" quando a arma é disparada pela primeira vez.
E como evitamos isso? De forma resumida, apenas precisamos que todas as cenas que contenham algum node Particles2D, sejam carregadas e emitam todos os ParticlesMaterial usadas pela cena.
Para isso, usaremos Singletons, caso ainda tenha dúvidas, acesse: Singletons (AutoLoad). Primeiramente, caso seu jogo ainda não tenha um Singleton, faça o seguinte: Crie um novo Script e salve-o, em seguida, na parte superior vai em: Project > Project Settings > AutoLoad, nessa aba vai poder gerenciar os Singletons de seu projeto e para criar um, clique no ícone de pasta ao lado do Path e abre o Script criado anteriormente, dê um nome e Adicione. Pronto, agora seu projeto tem um Singleton. Uma propriedade interessante dos Singletons, é que são adicionados à cena automaticamente quando é carregado, podendo adicionar filhos à ele, usaremos isso ao nosso favor.
No Script, adicione as seguintes linhas:
Pronto, agora sempre que quiser carregar uma cena, adiciona o caminho para a variável PRELOAD_NODES e o "engasgo" só acontece quando o jogo é carregado. Esta solução provavelmente não será mais necessária no futuro, mas até o momento da publicação deste post, o Godot ainda tem esse problema.
Bom, é isso para o primeiro post do blog, espero que tenha ajudado muitos, caso tenha dúvidas, consulte a documentação oficial do Godot, deixar um comentário ou mandar um email para: ghsoares99795@gmail.com. Recomendo a vocês, dar uma olhada em alguns canais no youtube: KidsCanCode, Game Endeavor, GDquest, HeartBeast e Gamefromscratch, são ótimos canais e aprendi muito com eles, aposto que poderá aprender muito com eles também.
Adeus!!
Comentários
Postar um comentário