Realistische karakters interageren, meestal door met elkaar te praten. Zorg ervoor dat je je dialoog op een toegankelijke en complementaire manier presenteert.
Als je game personages bevat, wil je waarschijnlijk dat ze met elkaar praten. Een dialoogsysteem biedt interactieve gesprekken, voortgang van het verhaal en karakterontwikkeling. De Python Arcade-bibliotheek maakt het eenvoudig om een dialoogsysteem te integreren in uw bestaande codebase.
Met een dialoogsysteem kun je gesprekken creëren tussen de speler en niet-spelerpersonages (NPC's). De speler kan reacties kiezen of beslissingen nemen die van invloed zijn op het verhaal of de uitkomst van het spel.
Met dit systeem kun je meeslepende verhalen bedenken en dynamische interacties creëren, wat een meer meeslepende gameplay-ervaring oplevert.
Maak een eenvoudig spel
Maak om te beginnen een eenvoudig spel met behulp van de Arcade-bibliotheek. Dit zal als basis dienen voor de implementatie van het dialoogsysteem.
De code die in dit artikel wordt gebruikt, is hierin beschikbaar
GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.Maak een nieuw bestand met de naam simpel-spel.py en definieer a Spel klasse die erft van arcade. Raam. Stel de schermafmetingen in, initialiseer de speler- en platformposities en implementeer de basistekenfunctionaliteit. De speler kan naar links en rechts bewegen met behulp van de pijltjestoetsen.
Dit is de uitvoer:
Een dialoogvenster toevoegen
Nu je een basisspelstructuur hebt, voeg je een dialoogvenster toe dat verschijnt wanneer de speler in botsing komt met een vijand. U kunt een dialoogvenster maken met behulp van eenvoudige vormen en deze op het scherm weergeven.
Voeg een... toe dialoog_actief vlag naar de Spel class, die aangeeft of het dialoogvenster moet worden weergegeven. In de op_update methode, controleer op vijandelijke botsingen indien gedetecteerd, instellen dialoog_actief naar WAAR.
In de on_draw methode, bel de teken_dialoog_box methode als de dialoog actief is. De teken_dialoog_box methode tekent een rechthoek als achtergrond van het dialoogvenster en geeft een tekstbericht weer.
Maak een nieuw bestand met de naam dialog-box.py en voeg de code toe met de onderstaande updates:
# Binnen de klasse Game
klasSpel(arcade. Raam):
def__in het__(zelf):
# ...self.dialogue_active = Vals
defop_update(zelf, delta_tijd):
als zelf.check_enemy_collision():
self.dialogue_active = WAARdefon_draw(zelf):
# ...als zelf.dialoog_actief:
zelf.draw_dialogue_box()defcheck_enemy_botsing(zelf):
player_radius = 25
afstand_x = buikspieren (self.player_x - self.platform_x)
afstand_y = buikspieren (zelf.speler_y - zelf.platform_y)
gecombineerde_radius = player_radius + 25als afstand_x < gecombineerde straal En afstand_y < gecombineerde straal:
opbrengstWAAR
anders:
opbrengstVals
defteken_dialoog_box(zelf):
tekst = "Hallo speler! Hoe is het met je?"
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCHERM_HOOGTE // 2, 500, 200, wit)
arcade.draw_text (tekst, SCREEN_WIDTH // 2,
SCHERM_HOOGTE // 2 + 20, zwart, font_size=16,
anker_x="centrum", anker_y="centrum")
Hieronder is de uitvoer:
Dialoogtekst weergeven
Nu kunt u uw dialoogsysteem verbeteren door dynamische tekstberichten weer te geven. Maak een lijst met dialoogreeksen en doorloop ze om een gesprek te simuleren. Elke keer dat het dialoogvenster verschijnt, wordt er een nieuw bericht weergegeven.
# Binnen de klasse Game
klasSpel(arcade. Raam):
def__in het__(zelf):
# ...self.dialogue_active = Vals
self.dialogue_messages = [
"Hallo speler! Hoe is het met je?",
"Mooi weer vandaag, nietwaar?",
"Pas op voor de vijanden die op de loer liggen!"
]
zelf.dialoog_index = 0
defteken_dialoog_box(zelf):
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCHERM_HOOGTE // 2, 500, 200, wit)
arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCHERM_HOOGTE // 2 + 20, zwart, font_size=16,
anker_x="centrum", anker_y="centrum")
Introduceer drie nieuwe variabelen: dialoog_berichten, dialoog_index, En dialoog_actief. De lijst dialog_messages bevat de tekstberichten die in het dialoogvenster worden weergegeven. De dialog_index houdt het huidige bericht bij om te laten zien. Elke keer dat het dialoogvenster verschijnt, kunt u de dialog_index verhogen om het volgende bericht weer te geven.
Een knop toevoegen
Om het dialoogsysteem interactiever te maken, voegt u een knop toe om de dialoogtekst te wijzigen wanneer deze door de speler wordt ingedrukt. Maak een nieuw bestand met de naam multi-tekst.py en voeg de code toe met de onderstaande updates:
# Binnen de klasse Game
klasSpel(arcade. Raam):
def__in het__(zelf):
# ...self.dialogue_active = Vals
self.dialogue_messages = [
"Hallo speler! Hoe is het met je?",
"Mooi weer vandaag, nietwaar?",
"Pas op voor de vijanden die op de loer liggen!"
]zelf.dialoog_index = 0
defon_mouse_press(zelf, x, y, knop, modifiers):
index = (zelf.dialoog_index + 1) % len (self.dialogue_messages)als zelf.dialoog_actief:
als knop == arcade. MUIS_BUTTON_LEFT:
self.dialogue_index = indexdefteken_dialoog_box(zelf):
# ...
speelhal.teken_tekst("Volgende", SCREEN_WIDTH // 2, SCHERM_HOOGTE // 2 - 50,
zwart, font_size=16, anker_x="centrum", anker_y="centrum")
Voeg de on_mouse_press methode naar de Spel klas. Wanneer de dialoog actief is en u drukt op de linkermuisknop, verhoogt deze methode de dialoog_index om het volgende bericht in de weer te geven dialoog_berichten lijst. De % len (self.dialogue_messages) zorgt ervoor dat de index naar het begin van de lijst gaat wanneer het einde wordt bereikt.
Inclusief extra functies
Om het dialoogsysteem verder te verbeteren, kunt u overwegen de volgende extra functies toe te voegen:
Meerdere keuzes
In plaats van een enkel bericht kun je de speler meerdere keuzes geven om uit te kiezen. Hierdoor kan de speler de uitkomst van het gesprek beïnvloeden of beslissingen nemen die van invloed zijn op de voortgang van het spel.
Om dit te implementeren, kunt u de teken_dialoog_box methode om een lijst met keuzes weer te geven en de selectie van de speler dienovereenkomstig af te handelen.
Karakter portretten
Om visuele flair aan uw dialoogsysteem toe te voegen, kunt u karakterportretten naast de tekst opnemen. Elk personage kan een overeenkomstige afbeelding of sprite hebben die hen vertegenwoordigt tijdens het gesprek. Door karakterportretten weer te geven, kunnen spelers de spreker identificeren en diepte toevoegen aan de vertelervaring.
Tekst Animatie
U kunt de tekst animeren om deze visueel aantrekkelijker te maken. U kunt de tekst bijvoorbeeld geleidelijk laten verschijnen, teken voor teken, om typen te simuleren. Dit creëert een gevoel van anticipatie en kan de dialoog boeiender maken voor de speler.
Geluidseffecten
Geluidseffecten toevoegen aan je dialoogsysteem kan de algehele sfeer van het spel verbeteren. U kunt bijvoorbeeld geluidseffecten afspelen wanneer het dialoogvenster verschijnt of wanneer de speler een dialoogoptie selecteert. Deze audiosignalen kunnen ervoor zorgen dat het gesprek meeslepender en indrukwekkender aanvoelt.
Best Practices voor het dialoogsysteem
Houd bij het implementeren van een dialoogsysteem rekening met de volgende best practices:
Duidelijke gebruikersinterface
Zorg ervoor dat het dialoogvenster en de tekst leesbaar zijn en goed op het scherm staan. Gebruik de juiste lettertypen, kleuren en formaten om de tekst gemakkelijk leesbaar te maken.
Consistente karakterstem
Zorg voor consistentie in de manier waarop personages spreken en de toon die ze tijdens de dialoog gebruiken. Dit helpt bij het creëren van geloofwaardige en boeiende gesprekken.
Relevantie voor gameplay
Zorg ervoor dat de dialoog een zinvolle bijdrage levert aan het verhaal van het spel of relevante informatie aan de speler verstrekt. Vermijd buitensporige of irrelevante gesprekken die de gameplay kunnen verstoren.
Testen en herhalen
Test uw dialoogsysteem grondig om eventuele problemen of inconsistenties te identificeren. Herhaal uw dialoog op basis van feedback van spelers om de algehele kwaliteit en impact van de gesprekken te verbeteren.
Maak games leuker met dialoogsysteem
Het toevoegen van een dialoogsysteem aan je games met behulp van de Arcade-bibliotheek in Python kan de ervaring van de speler aanzienlijk verbeteren. Het maakt interactieve gesprekken, verhalen vertellen en karakterontwikkeling mogelijk, waardoor je games meeslepender, boeiender en leuker worden om te spelen.