Contents

Como adicionar iluminação e sombras dinâmicas no Godot

A iluminação e as sombras dinâmicas podem elevar a qualidade visual e a experiência de jogo dos seus jogos Godot. Acrescentam profundidade, atmosfera e realismo, tornando o mundo do jogo mais imersivo e envolvente.

Godot fornece uma variedade de ferramentas para facilitar a criação e personalização de efeitos de iluminação e sombras complexas através de seus recursos avançados, como CanvasModulate e PointLight2D.

Configurando o jogo Godot

Para começar a implementar a iluminação dinâmica no mecanismo de jogo Godot, estabeleça um jogo 2D fundamental criando uma nova cena e incorporando uma entidade CharacterBody2D para representar o personagem do jogador.

O código-fonte utilizado nesta publicação pode ser acedido através de um repositório GitHub dedicado, que funciona como uma plataforma de código aberto para os programadores lerem e implementarem à sua discrição. Além disso, é de acesso livre ao abrigo dos termos da licença MIT amplamente adoptada, concedendo aos utilizadores o direito de adaptar e distribuir o software sem incorrer em quaisquer taxas ou royalties.

Incorporar uma representação tridimensional do ambiente do jogo no âmbito da geração processual, utilizando técnicas de particionamento espacial como octrees ou árvores kd, permitindo uma gestão e otimização mais eficientes dos recursos. Além disso, incorporar um sistema de iluminação dinâmica que tenha em conta vários factores, incluindo a hora do dia, as condições meteorológicas e os elementos ambientais, para proporcionar uma experiência imersiva ao utilizador. Por fim, integre algoritmos avançados de simulação de física, como o Havok ou o PhysX, para modelar com precisão o comportamento dos objectos no mundo do jogo, criando uma experiência de jogo altamente interactiva e realista.

Incorporar o movimento e a interação do jogador com os limites do ecrã utilizando o GDScript da seguinte forma:

 extends CharacterBody2D

var speed = 200

func _physics_process(delta):
    var velocity = Vector2()

    if Input.is_action_pressed('ui_right'):
        velocity.x \\+= 1

    if Input.is_action_pressed('ui_left'):
        velocity.x -= 1

    if Input.is_action_pressed('ui_down'):
        velocity.y \\+= 1

    if Input.is_action_pressed('ui_up'):
        velocity.y -= 1

    velocity = velocity.normalized() * speed
    move_and_collide(velocity * delta)

Este programa permite ao utilizador navegar num ambiente virtual em várias direcções, limitado pelos limites da área apresentada no ecrã do seu dispositivo.

/pt/images/simple-movement-in-godot.jpg

Escurecer o resto da cena

Para criar um efeito de iluminação dinâmico no Godot, é necessário utilizar a funcionalidade CanvasModulate para escurecer a cena geral e realçar apenas as regiões que estão a ser iluminadas por fontes de luz.

 extends Node2D

const DARKNESS = 0.7

func _ready():
    var canvas_modulate = CanvasModulate.new()
    canvas_modulate.color = Color(0, 0, 0, DARKNESS)
    add_child(canvas_modulate) 

Anexe este script a um Node2D recém-criado que serve como raiz da cena. O nó CanvasModulate será então utilizado para impor um negrume subtilmente translúcido sobre a totalidade do campo visual, obscurecendo todos os elementos, exceto aqueles que são iluminados por fontes luminosas.

Para estabelecer um atributo dimensional para controlar o nível de escuridão num ambiente, introduzimos uma variável constante chamada “ESCURIDÃO”. Este parâmetro permite manipular a intensidade da obscuridade que é aplicada à representação visual durante os períodos de não iluminação. Através da alteração do valor atribuído à variável “ESCURIDÃO”, é possível regular o grau de opacidade da cena quando não estão presentes fontes de luz. Um valor aumentado de “ESCURIDÃO” conduzirá a um estado de escuridão mais profundo, enquanto um valor diminuído produzirá um nível de escuridão correspondentemente reduzido.

/pt/images/dark-scene-in-godot.jpg

Sombra de Luz

Para que as entidades criem efeitos de sombra, é necessário utilizar os componentes LightOccluder2D em quaisquer obstruções que se destinem a impedir a iluminação. Exemplos de tais estruturas incluem barreiras, superfícies elevadas e outros elementos arquitectónicos concebidos para projetar sombras. A instalação destes oclusores facilita a criação de efeitos de sombra realistas no ambiente do jogo.

Para simular eficazmente sombras realistas para um objeto no ambiente do seu jogo de vídeo, é necessário criar um componente LightOccluder2D personalizado que se adapte com precisão aos contornos do elemento obstrutivo em questão. Além disso, é possível calibrar vários atributos, como a contagem de polígonos e a segmentação, para obter um controlo ótimo sobre o fenómeno de projeção de sombras.

Adicionar luzes omnidireccionais

Considere adicionar um objeto PointLight2D à cena, atribuindo-lhe um material texturado. Isto simulará uma fonte de luz omnidirecional que contribui para um cenário de iluminação ambiente mais convincente.

 extends PointLight2D

var light_color = Color(1, 1, 0.8)

func _ready():
    energy = 2.5
    color = light_color 

Tem a possibilidade de personalizar os atributos para regular a extensão e a tonalidade da iluminação produzida pelo objeto PointLight2D.

Tem a opção de gerar uma textura de luz personalizada para determinar a forma e as características visuais da sua fonte de iluminação. Isto pode variar de um padrão circular simples a uma configuração mais complexa, reflectindo o ambiente desejado que pretende criar.

Para conferir uma qualidade textural à entidade PointLight2D, siga os procedimentos subsequentes:

Seleccione o nó PointLight2D na hierarquia da cena.

Navegue até à propriedade Textura na secção Texturas do painel Inspetor no contexto do componente Texto.

Clique na área texturizada desocupada e, em seguida, navegue pelo explorador de arquivos para escolher uma textura de iluminação preferida entre as opções disponíveis.

A iluminação fornecida pela fonte de luz escolhida apresentará uma forma e uma tonalidade predeterminadas, conferindo um efeito esteticamente agradável à interação dinâmica de luz e sombra na cena.

Incluir funcionalidades adicionais

Para melhorar a qualidade estética e os aspectos interactivos do seu projeto, existem vários componentes opcionais que podem ser incorporados em conjunto com a configuração fundamental de iluminação e sombreamento dinâmicos. Algumas adições potenciais incluem:

Animações de luz

Melhore o ambiente e o realismo das suas fontes de luz com efeitos animados que lhes dão vida. Por exemplo, pode animar as chamas tremeluzentes de tochas ou velas, simular o movimento dançante de um fogo crepitante ou dar uma animação pulsante a esferas místicas que emitem um brilho de outro mundo.

Ciclo Dia-Noite

Incorporar um ciclo dinâmico dia-noite no jogo, que modifica a luminosidade e a tonalidade das fontes de iluminação em tempo real para refletir a progressão do tempo. Esta implementação pode aumentar a sensação de imersão do jogador ao criar condições atmosféricas variáveis com base na altura do dia, contribuindo assim para a experiência global.

Desvanecimento da luz

Para evitar uma interrupção da experiência de imersão, é aconselhável utilizar transições contínuas ao alterar os níveis de luminosidade. Este método permite escurecer ou iluminar gradualmente o ambiente, resultando num resultado mais autêntico e esteticamente apelativo.

Sombras dinâmicas

Uma abordagem alternativa à utilização de sombras estáticas é a incorporação de sombras dinâmicas para objectos em movimento. Isto pode ser conseguido através da utilização de fontes de luz suplementares que seguem os movimentos das personagens, resultando numa representação convincente das mudanças de sombra em tempo real.

Efeitos sonoros sem direitos de autor

A incorporação de efeitos sonoros apropriados pode melhorar significativamente a experiência de imersão de um jogo de vídeo, conferindo-lhe um ar de vitalidade e dinamismo. Para conseguir este efeito, considere a utilização de elementos de áudio sem direitos de autor que se integrem perfeitamente na dinâmica realista da iluminação e das sombras.

Melhores práticas para iluminação e sombras dinâmicas

Para utilizar eficazmente a iluminação e as sombras dinâmicas num jogo de vídeo, é importante garantir uma implementação adequada para evitar quaisquer consequências negativas no desempenho ou na qualidade visual. A adesão a determinadas práticas recomendadas ajudará a atingir este objetivo.

Otimizar fontes de luz

Otimizar a utilização de elementos de iluminação aderindo a uma abordagem conservadora que se alinhe com o resultado estético desejado. Uma superabundância de luminárias pode impor encargos substanciais às capacidades do sistema, particularmente em situações que envolvam hardware menos potente.

Use o Light Baking

Ao lidar com ambientes estacionários ou entidades inanimadas, é aconselhável empregar uma técnica conhecida como “light baking” para aumentar a eficiência. Este método envolve o cálculo e o armazenamento de informações de iluminação com antecedência, diminuindo assim a necessidade de cálculos em tempo real durante as sessões de jogo.

Optar por oclusores simples

Ao configurar os nós LightOccluder2D, é aconselhável empregar geometrias simples sempre que possível. A utilização de oclusores complexos que compreendem uma infinidade de vértices pode dar origem a desafios de eficiência. Nesses casos, considere a utilização de formas poligonais simples ou segmentos lineares como oclusores, quando considerado adequado.

Recolha e estratificação

O Godot fornece um sistema robusto de visibilidade e estratificação, que permite uma gestão eficiente dos cálculos de luz e sombra, restringindo-os a partes visíveis da cena. Ao selecionar elementos fora do ecrã, o desempenho pode ser substancialmente melhorado através da redução das exigências computacionais.

A implementação de técnicas avançadas para criar iluminação e sombras dinâmicas atraentes num jogo de plataformas pode melhorar significativamente o seu atrativo visual e qualidade geral.

Tornar os jogos Godot mais cativantes com iluminação e sombras dinâmicas

A iluminação e as sombras dinâmicas servem para imbuir a experiência de jogo de uma sensação adicional de vitalidade e realismo. Ao criar um ambiente cada vez mais envolvente e rico em atmosfera, estes elementos têm a capacidade de evocar uma série de reacções emocionais no jogador, ao mesmo tempo que estabelecem um ambiente distinto e melhoram a narrativa visual do jogo.

A iluminação dinâmica pode criar uma experiência de jogo imersiva, acrescentando profundidade a ambientes assustadores e tranquilos. A integração de vários tipos de fontes de luz, como tochas, lareiras e iluminação lunar, permite diversos efeitos visuais que aumentam o envolvimento do jogador e deixam um impacto memorável.