Personagens realistas interagem, normalmente falando uns com os outros. Certifique-se de apresentar seu diálogo de forma acessível e complementar.
Se o seu jogo apresentar personagens, você provavelmente desejará que eles conversem entre si. Um sistema de diálogo fornece conversas interativas, progressão da história e desenvolvimento do personagem. A biblioteca Python Arcade facilita a integração de um sistema de diálogo em sua base de código existente.
Com um sistema de diálogo, você pode criar conversas entre o jogador e os personagens não-jogadores (NPCs). O jogador pode escolher respostas ou tomar decisões que afetam a narrativa ou o resultado do jogo.
Este sistema permite criar histórias atraentes e criar interações dinâmicas, proporcionando uma experiência de jogo mais envolvente.
Crie um jogo simples
Para começar, crie um jogo simples usando a biblioteca Arcade. Isso servirá como base para a implementação do sistema de diálogo.
O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.
Crie um novo arquivo chamado simple-game.py e definir um Jogo classe que herda de videogames. Janela. Defina as dimensões da tela, inicialize as posições do jogador e da plataforma e implemente a funcionalidade básica de desenho. O jogador pode mover para a esquerda e direita usando as teclas de seta.
Aqui está a saída:
Adicionando uma caixa de diálogo
Agora que você tem uma estrutura básica de jogo, adicione uma caixa de diálogo que aparece quando o jogador colide com um inimigo. Você pode criar uma caixa de diálogo usando formas simples e exibi-la na tela.
Adicionar um dialog_active bandeira para o Jogo class, que indica se a caixa de diálogo deve ser exibida. No on_update método, verifique se há colisão inimiga, e se detectado, defina dialog_active para Verdadeiro.
No on_draw método, chame o draw_dialogue_box método se o diálogo estiver ativo. O draw_dialogue_box O método desenha um retângulo como plano de fundo da caixa de diálogo e exibe uma mensagem de texto.
Crie um novo arquivo chamado dialog-box.py e adicione o código com as atualizações abaixo:
# Dentro da classe Game
aulaJogo(videogames. Janela):
def__iniciar__(auto):
# ...self.dialogue_active = Falso
defon_update(auto, delta_time):
se self.check_enemy_collision():
self.dialogue_active = Verdadeirodefon_draw(auto):
# ...se self.dialogue_active:
self.draw_dialogue_box()defcheck_enemy_collision(auto):
player_radius = 25
distance_x = abs (self.player_x - self.platform_x)
distância_y = abs (self.player_y - self.platform_y)
Combined_radius = player_radius + 25se distância_x < raio_combinado e distância_y < raio_combinado:
retornarVerdadeiro
outro:
retornarFalso
defdraw_dialogue_box(auto):
texto = "Olá, jogador! Como vai você?"
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, branco)
arcade.draw_text (texto, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, preto, font_size=16,
âncora_x="Centro", âncora_y="Centro")
Abaixo está a saída:
Exibindo Texto de Diálogo
Agora, você pode aprimorar seu sistema de diálogo exibindo mensagens de texto dinâmicas. Crie uma lista de sequências de diálogo e itere por elas para simular uma conversa. Cada vez que a caixa de diálogo aparecer, ela mostrará uma nova mensagem.
# Dentro da classe Game
aulaJogo(videogames. Janela):
def__iniciar__(auto):
# ...self.dialogue_active = Falso
self.dialogue_messages = [
"Olá, jogador! Como vai você?",
"Clima bom hoje, não é?",
"Cuidado com os inimigos à espreita à frente!"
]
self.dialogue_index = 0
defdraw_dialogue_box(auto):
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, branco)
arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, preto, font_size=16,
âncora_x="Centro", âncora_y="Centro")
Introduza três novas variáveis: dialog_messages, dialog_index, e dialog_active. A lista de dialog_messages contém as mensagens de texto que a caixa de diálogo exibirá. O dialog_index acompanha a mensagem atual a ser exibida. Cada vez que a caixa de diálogo aparecer, você pode incrementar o dialog_index para mostrar a próxima mensagem.
Adicionando um botão
Para tornar o sistema de diálogo mais interativo, adicione um botão para alterar o texto do diálogo quando pressionado pelo jogador. Crie um novo arquivo chamado multi-text.py e adicione o código com as atualizações abaixo:
# Dentro da classe Game
aulaJogo(videogames. Janela):
def__iniciar__(auto):
# ...self.dialogue_active = Falso
self.dialogue_messages = [
"Olá, jogador! Como vai você?",
"Clima bom hoje, não é?",
"Cuidado com os inimigos à espreita à frente!"
]self.dialogue_index = 0
defon_mouse_press(auto, x, y, botão, modificadores):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)se self.dialogue_active:
se botão == fliperama. MOUSE_BUTTON_LEFT:
self.dialogue_index = índicedefdraw_dialogue_box(auto):
# ...
arcade.draw_text("Próximo", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
preto, font_size=16, âncora_x="Centro", âncora_y="Centro")
Adicione o on_mouse_press método para o Jogo aula. Quando o diálogo está ativo e você pressiona o botão esquerdo do mouse, este método incrementa o dialog_index para exibir a próxima mensagem no dialog_messages lista. O % len (self.dialogue_messages) garante que o índice volte ao início da lista ao chegar ao fim.
Incluindo Recursos Adicionais
Para aprimorar ainda mais o sistema de diálogo, considere adicionar os seguintes recursos adicionais:
Escolhas múltiplas
Em vez de uma única mensagem, você pode fornecer várias opções para o jogador selecionar. Isso permite que o jogador influencie o resultado da conversa ou tome decisões que afetem a progressão do jogo.
Para implementar isso, você pode modificar o draw_dialogue_box para exibir uma lista de opções e manipular a seleção do jogador de acordo.
Retratos de personagens
Para adicionar um toque visual ao seu sistema de diálogo, você pode incorporar retratos de personagens ao lado do texto. Cada personagem pode ter uma imagem ou sprite correspondente que os represente durante a conversa. A exibição de retratos de personagens pode ajudar os jogadores a identificar o orador e adicionar profundidade à experiência de contar histórias.
Animação de texto
Você pode animar o texto para torná-lo mais atraente visualmente. Por exemplo, você pode fazer o texto aparecer gradualmente, um caractere por vez, para simular a digitação. Isso cria uma sensação de antecipação e pode tornar o diálogo mais envolvente para o jogador.
Efeitos sonoros
Adicionando efeitos sonoros ao seu sistema de diálogo pode melhorar a atmosfera geral do jogo. Por exemplo, você pode reproduzir efeitos sonoros quando a caixa de diálogo aparecer ou quando o jogador selecionar uma opção de diálogo. Essas dicas de áudio podem tornar a conversa mais imersiva e impactante.
Melhores Práticas para o Sistema de Diálogo
Ao implementar um sistema de diálogo, tenha em mente as seguintes práticas recomendadas:
Limpar interface do usuário
Certifique-se de que a caixa de diálogo e o texto estejam legíveis e posicionados corretamente na tela. Use fontes, cores e tamanhos apropriados para facilitar a leitura do texto.
Voz de personagem consistente
Mantenha a consistência na maneira como os personagens falam e no tom que usam ao longo do diálogo. Isso ajuda a criar conversas críveis e envolventes.
Relevância para a jogabilidade
Certifique-se de que o diálogo contribua significativamente para a narrativa do jogo ou forneça informações relevantes ao jogador. Evite conversas excessivas ou irrelevantes que possam atrapalhar o fluxo do jogo.
Teste e iteração
Teste seu sistema de diálogo completamente para identificar quaisquer problemas ou inconsistências. Repita seu diálogo com base no feedback do jogador para melhorar a qualidade geral e o impacto das conversas.
Torne os jogos mais divertidos com o sistema de diálogo
Adicionar um sistema de diálogo aos seus jogos usando a biblioteca Arcade em Python pode melhorar muito a experiência do jogador. Ele permite conversas interativas, narrativas e desenvolvimento de personagens, tornando seus jogos mais envolventes, envolventes e divertidos de jogar.