Adicione um pouco de personalidade e experiência aos seus personagens com um sistema de diálogo contundente.

No desenvolvimento de jogos, uma jogabilidade envolvente e uma narrativa cativante são fundamentais para criar experiências memoráveis. Uma ferramenta poderosa que pode ajudá-lo a conseguir isso é um sistema de diálogo.

Com um sistema de diálogo bem implementado, os personagens podem se comunicar, compartilhar informações e interagir com o jogador, adicionando profundidade e imersão ao jogo.

Configurando seu jogo Godot

Comece criando a base do seu jogo. Para este exemplo, configure um ambiente 2D simples com um personagem controlável que pode se mover usando as teclas de seta.

O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.

Comece criando uma nova cena para o seu personagem jogador. Dentro desta cena, adicione os componentes necessários. Criar uma PersonagemBody2D nó para representar o corpo do personagem do jogador. Anexe um ColisãoForma2D com formato retangular para definir a área de colisão do jogador.

Agora, adicionar movimento do personagem e interação com plataformas utilizando GDScript. Substitua o script padrão do nó CharacterBody2D pelo seguinte código:

extends CharacterBody2D

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO

if Input.is_action_pressed("ui_left"):
input_dir.x -= 1

if Input.is_action_pressed("ui_right"):
input_dir.x += 1

if Input.is_action_pressed("ui_up"):
input_dir.y -= 1

if Input.is_action_pressed("ui_down"):
input_dir.y += 1

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

Este script permite que seu personagem se mova para a esquerda, direita, para cima e para baixo com base nas entradas das teclas de seta. O mover_e_collide A função garante que o personagem interaja com as plataformas e responda às colisões.

Adicionando a caixa de diálogo

Agora você pode começar a criar o sistema de diálogo. O primeiro passo é adicionar uma caixa de diálogo que exibirá texto quando seu personagem interagir com objetos ou NPCs específicos.

Na tua PersonagemBody2D script, introduza mais algumas variáveis ​​para lidar com a caixa de diálogo e seu conteúdo:

var dialogue_box: Label
var close_button: Button
var dialogue_lines: Array = ["Hello, adventurer!", "Welcome to our village."]

var current_line: int = 0
var line_timer: float = 0

O dialog_box será responsável por exibir o texto do diálogo, enquanto o botão fechar permitirá que os jogadores fechem a caixa de diálogo quando necessário.

No _preparar função, crie e inicialize a caixa de diálogo:

func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)

Exibindo o Texto do Diálogo

Agora você pode se concentrar na exibição do texto na caixa de diálogo. Você pode fazer com que o texto ocupe mais de uma linha e role-o, revelando uma linha de texto por vez.

Modifique seu _processo_físico função para lidar com a exibição de linhas de diálogo:

if line_timer > 0:
line_timer -= delta
elif current_line < dialogue_lines.size():
show_next_dialogue_line()

Este segmento de código verifica se o temporizador_de_linha é maior que 0. Se for, diminui o temporizador pelo valor delta. Se o temporizador não estiver ativo e houver mais linhas de diálogo para exibir, ele chama o show_next_dialogue_line função.

Implementar o show_next_dialogue_line funcionar da seguinte forma:

func show_next_dialogue_line():
dialogue_box.text = dialogue_lines[current_line]
current_line += 1

# Display each line for 3 seconds
line_timer = 3.0

Esta função atualiza o texto dentro da caixa de diálogo com a linha de diálogo atual e incrementa o linha_atual índice. O temporizador_de_linha garante que cada linha seja exibida por um breve período antes de avançar para a próxima linha.

Adicionando um botão Fechar

Agora, você pode dar aos jogadores a capacidade de fechar a caixa de diálogo e continuar jogando. Faça isso com um botão fechar que, ao pressioná-lo, oculta a caixa de diálogo e permite ao jogador retomar sua jornada.

Primeiro, modifique o _preparar função para criar um botão fechar e anexar sua funcionalidade.

func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)

close_button = Button.new()
close_button.text = "Close"
close_button.position = Vector2(50, 30)
close_button.visible = false
close_button.pressed.connect(_on_close_button_pressed)
add_child(close_button)

Este código cria uma instância do Botão classe e personaliza sua aparência e posição. Ele também conecta o pressionado sinal para o _on_close_button_pressed função.

Agora implemente o _on_close_button_pressed função. Nesta função, defina a visibilidade da caixa de diálogo e do botão Fechar para falso. Isso oculta efetivamente a interface de diálogo do player.

Lembre-se de redefinir o linha_atual index como 0 para garantir que o diálogo comece do início na próxima vez que o jogador iniciar uma conversa:

func _on_close_button_pressed():
dialogue_box.visible = false
close_button.visible = false
current_line = 0

Com essas mudanças, os jogadores poderão dialogar e fechar a caixa de diálogo quando estiverem prontos para continuar explorando ou interagindo com o mundo do jogo.

Melhores práticas para seu sistema de diálogo

À medida que você continua a desenvolver e refinar seu sistema de diálogo, tenha em mente as seguintes práticas recomendadas ajudará a garantir que seu sistema aprimore ao máximo a narrativa do jogo e o envolvimento do jogador extensão.

Consistência é a chave

Mantenha um tom, estilo de escrita e vocabulário consistentes em todo o seu sistema de diálogo. A consistência ajuda os jogadores a se conectarem com os personagens e o mundo do jogo, criando uma experiência imersiva e integrada.

Crie vozes de personagens

Cada personagem deve ter voz e personalidade distintas refletidas em seus diálogos. Considere sua formação, motivações e emoções ao escrever suas falas.

Essa diferenciação adiciona profundidade aos seus personagens e torna as interações mais memoráveis. Você pode facilmente adicione sons diferentes para diferentes personagens de Godot.

Escolhas significativas

Projete opções de diálogo que tenham consequências significativas. Escolhas que impactam a narrativa, os relacionamentos ou mesmo a mecânica de jogo do jogo incentivam os jogadores a se envolverem com o sistema de diálogo e a investirem emocionalmente em suas decisões.

Teste e Iteração

Teste exaustivamente suas sequências de diálogo para detectar erros de digitação, erros gramaticais ou problemas de ritmo. Participe de testes de jogo para coletar feedback dos jogadores e fazer os ajustes necessários para garantir que o sistema de diálogo flua sem problemas e aprimore a experiência geral de jogo.

Consistência da IU

Garantir que o design e a apresentação do sistema de diálogo correspondam às necessidades gerais design da interface do usuário (UI) do seu jogo. Elementos de UI, fontes e cores consistentes criam uma experiência visual coesa que contribui para a imersão do jogo.

Seguindo essas práticas recomendadas, você pode criar um sistema de diálogo que não apenas aprimore a narrativa do jogo, mas também crie uma experiência memorável e envolvente para os jogadores.

Elevando seus jogos Godot com sistemas de diálogo

Incorporar um sistema de diálogo em seus jogos Godot pode melhorar o envolvimento do jogador e revolucionar sua narrativa. Ao permitir que os personagens se comuniquem, expressem emoções e reajam às decisões dos jogadores, você cria um mundo de jogo mais envolvente e interativo.

Com o ambiente amigável do Godot e o poder do GDScript, você tem as ferramentas para criar sistemas de diálogo atraentes que atraem os jogadores para sua narrativa e melhoram o jogo em geral experiência.