Pesquisar
Close this search box.

Pathfinding no Godot 4: Entenda como os NPC Sempre Encontram seu Esconderijo

Aprenda a criar NPCs mais inteligentes e otimizar técnicas de pathfinding no Godot

Já encontrou um jogo onde os NPC são extremamente eficientes em seguir qualquer mínimo ruído feito pelo jogador?

Ou o caso oposto, em que os NPCs ficam parados andando contra a parede? Ou que ficam travados em uma pedrinha e você tem que empurrar ele pra continuar a missão?

Este comportamento, muitas vezes até injusto por parte dos inimigos, é determinado pelo Pathfinding no Godot Engine (site oficial) e em outras engines.

O pathfinding é um processo pelo qual um NPC encontra a rota mais eficiente para chegar a um destino. Em Godot 4, a técnica de pathfinding mais comumente usada é o algoritmo A*.

Este algoritmo calcula o caminho de menor custo entre dois pontos, levando em conta obstáculos e o terreno do ambiente de jogo.

E com um pouco de prática, você pode criar NPCs inteligentes e envolventes que podem mover-se de forma inteligente pelo ambiente do seu jogo.

Godot 4 oferece uma variedade de recursos para trabalhar com IA e pathfinding. Vamos falar sobre o Pathfinding no Godot e, se você ficar com dúvidas, é só deixar nos comentários.

Pathfinding no Godot 4

A gangue dos fantasmas
A gangue dos fantasmas

Um dos exemplos mais clássicos de Pathfinding vem dos primeiros jogos de Pac-Man, lançados no arcade em 1980, quando tínhamos os fantasmas perseguindo o Pac-Man pelo labirinto.

Entre eles, o fantasma vermelho, Blinky, é descrito como “o mais agressivo dos fantasmas enquanto persegue Pac-Man incansavelmente.

Em termos de jogabilidade, Blinky buscava sempre o caminho mais curto e rápido para chegar ao objetivo. Isso é Pathfining!

Os outros fantasmas também tinham seus próprios caminhos. Alguns usavam o caminho mais curto para emboscar Pac-Man e outros seguiam caminhos maiores e fugiam dele.

Este é só um dos casos de programação de caminhos, mas, com o Pathfinding no Godot 4, você pode criar NPCs que podem:

  • Seguir o jogador
  • Perseguir o jogador
  • Fugir do jogador
  • Explorar o ambiente
  • Resolver quebra-cabeças

No entanto, simplesmente encontrar o caminho mais curto nem sempre é suficiente. Às vezes, os NPCs precisam ser capazes de perseguir o jogador ou fugir dele, e outros fatores, como a velocidade do NPC e a presença de outros NPCs, podem influenciar a rota ótima.

Godot 4 também oferece algoritmos de pathfinding dinâmicos, que permitem aos NPCs adaptarem seu caminho em tempo real. Isso é especialmente útil para jogos de ação rápida, onde o ambiente pode mudar rapidamente e os NPCs precisam se adaptar às mudanças.

Otimizando as técnicas de Pathfinding

Otimizar o pathfinding é essencial para garantir que seu jogo seja suave e responsivo. Aqui estão algumas dicas para otimizar as técnicas de pathfinding em Godot 4:

  • Uso eficiente do A:* Embora o algoritmo A* seja eficiente, o uso exaustivo em um grande número de NPCs pode impactar o desempenho do seu jogo. É aconselhável usá-lo com moderação, especialmente em jogos com muitos NPCs.
  • Pathfinding Hierárquico: Este é um método avançado que envolve a divisão do ambiente de jogo em uma hierarquia de blocos, onde os NPCs só executam o A* dentro de um bloco específico, reduzindo significativamente a quantidade de cálculos necessários.
  • Otimização da malha de navegação: A malha de navegação representa o ambiente navegável do jogo. Otimizá-la pode melhorar o desempenho do pathfinding. Por exemplo, mantendo a malha de navegação simples e com menos polígonos, você pode reduzir o número de cálculos necessários para o pathfinding.

Exemplos práticos

A inteligência artificial (IA) é uma área da ciência da computação que se concentra na criação de sistemas que podem raciocinar e tomar decisões como seres humanos.

A IA está se tornando cada vez mais importante no desenvolvimento de jogos, pois permite criar personagens não jogáveis (NPCs) que podem tomar decisões complexas, responder a ações dos jogadores e mover-se de forma inteligente pelo ambiente do jogo. Aqui estão alguns exemplos práticos de como usar IA e pathfinding em Godot 4:

  • Um jogo de ação em primeira pessoa em que os inimigos perseguem o jogador: Neste jogo, você pode usar o algoritmo A* para fazer os inimigos seguir o jogador de forma inteligente. Você pode também usar o pathfinding hierárquico para melhorar o desempenho do jogo, dividindo o ambiente em blocos menores.
  • Um jogo de estratégia em tempo real em que as unidades exploram o ambiente: Neste jogo, você pode usar o pathfinding para fazer as unidades explorarem o ambiente de forma eficiente. Você pode também usar o pathfinding dinâmico para adaptar o caminho das unidades às mudanças no ambiente.
  • Um jogo de quebra-cabeças em que os jogadores precisam resolver quebra-cabeças para avançar: Neste jogo, você pode usar o pathfinding para fazer os jogadores encontrarem a solução para os quebra-cabeças. Você pode também usar o pathfinding dinâmico para adaptar o caminho dos jogadores às mudanças no ambiente.

Configuração uma cena 2D

Os seguintes passos mostram a configuração básica para uma navegação mínima viável em 2D. Utiliza o NavigationServer2D e um NavigationAgent2D para movimento de caminho. Se ficar com dúvidas, consulte a documentação oficial.

  • Adicione um Nó NavigationRegion2D à cena.
  • Clique no nó da região e adicione um novo Recurso NavigationPolygon ao nó da região.
Passo 1
Passo 1
  • Defina a área de navegação móvel com a ferramenta de desenho NavigationPolygon.
Passo 2
Passo 2
  • Adicione um nó CharacterBody2D na cena com uma forma básica de colisão e um sprite ou malha para visualização.
  • Adicione um nó NavigationAgent2D abaixo do nó do personagem.
Passo 3
Passo 3
  • Adicione o seguinte script ao nó CharacterBody2D. Certifique-se de definir um alvo de movimento após a cena ter sido carregada completamente e o NavigationServer ter tempo para sincronizar.
extends CharacterBody2D

var movement_speed: float = 200.0
var movement_target_position: Vector2 = Vector2(60.0,180.0)

@onready var navigation_agent: NavigationAgent2D = $NavigationAgent2D

func _ready():
	# These values need to be adjusted for the actor's speed
	# and the navigation layout.
	navigation_agent.path_desired_distance = 4.0
	navigation_agent.target_desired_distance = 4.0

	# Make sure to not await during _ready.
	call_deferred("actor_setup")

func actor_setup():
	# Wait for the first physics frame so the NavigationServer can sync.
	await get_tree().physics_frame

	# Now that the navigation map is no longer empty, set the movement target.
	set_movement_target(movement_target_position)

func set_movement_target(movement_target: Vector2):
	navigation_agent.target_position = movement_target

func _physics_process(delta):
	if navigation_agent.is_navigation_finished():
		return

	var current_agent_position: Vector2 = global_position
	var next_path_position: Vector2 = navigation_agent.get_next_path_position()

	velocity = current_agent_position.direction_to(next_path_position) * movement_speed
	move_and_slide()

Nota: A malha de navegação define a área onde um ator pode ficar e mover-se com seu centro. Deixe margem suficiente entre as bordas do polígono de navegação e objetos de colisão para não fazer com que atores que seguem o caminho fiquem repetidamente presos na colisão.

Quer saber mais sobre Pathfiding?

Implementar AI e pathfinding eficazmente pode ser bastante desafiador. É um campo profundo que requer um bom entendimento teórico, bem como habilidades técnicas. Se você quer aprofundar seu conhecimento nesta área e criar jogos mais complexos e envolventes, considere se inscrever em nosso curso de IA e Pathfinding em Godot 4.

Ele vai te ajudar a entender os conceitos de IA e pathfinding de forma aprofundada, através de exemplos de código e projetos práticos. Se interessou? Preencha este formulário aqui para receber mais informações sobre o curso. Não perca essa oportunidade de levar seus jogos a um novo nível!

FAQ Rápido

Qual é o principal algoritmo de pathfinding no Godot 4?

O principal algoritmo de pathfinding é o A*. Ele calcula o caminho de menor custo entre dois pontos, considerando obstáculos e o terreno do jogo.

Como os NPCs adaptam seus caminhos em tempo real em Godot 4?

Godot 4 oferece algoritmos de pathfinding dinâmicos, permitindo que os NPCs ajustem seus caminhos em tempo real para se adaptar a mudanças rápidas no ambiente do jogo.

O que é Pathfinding em jogos e por que é importante?

Pathfinding é o processo pelo qual personagens em um jogo encontram o caminho mais eficiente de um ponto a outro. É crucial para NPCs se movimentarem de forma inteligente pelo ambiente do jogo, evitando obstáculos e alcançando seus destinos.

Qual é a importância de adaptar o Pathfinding em tempo real?

Em jogos dinâmicos, onde o ambiente pode mudar rapidamente, ter pathfinding adaptável permite que os NPCs se ajustem às mudanças, garantindo movimento contínuo e interação inteligente com o ambiente.

Fale conosco nos comentários e diga oque achou dessa matéria e aproveite para ler mais notícias e matérias, como por exemplo, sobre motivos para usar o Godot, no nosso site.

Saiba como começar o seu trabalho Modelando um Personagem de Jogos para seu game 3D
Saiba mais sobre a identificação com personagens de videogame e como isso pode tornar seu jogo um sucesso
Entenda mais sobre a arte conceitual de personagens de videogame
Saiba mais sobre animação de personagens 3D
Veja algumas estratégias de Marketing Digital para Jogos
Aprenda como Criar seus Jogos e todas as etapas do desenvolvimento