A valósághű karakterek interakcióba lépnek, jellemzően úgy, hogy beszélnek egymással. Ügyeljen arra, hogy a párbeszédet hozzáférhető és kiegészítő módon mutassa be.
Ha a játékban karakterek szerepelnek, valószínűleg azt szeretné, ha beszélgetnének egymással. A párbeszédrendszer interaktív beszélgetéseket, a történet előrehaladását és a karakterfejlődést biztosítja. A Python Arcade könyvtár megkönnyíti a párbeszédrendszer integrálását a meglévő kódbázisba.
A párbeszédes rendszerrel beszélgetéseket hozhat létre a játékos és a nem játékos karakterek (NPC-k) között. A játékos választhat olyan válaszokat vagy döntéseket hozhat, amelyek befolyásolják a játék narratíváját vagy kimenetelét.
Ez a rendszer lehetővé teszi lenyűgöző történetek készítését és dinamikus interakciók létrehozását, így még magával ragadó játékélményt biztosít.
Hozzon létre egy egyszerű játékot
Kezdésként hozzon létre egy egyszerű játékot az Arcade könyvtár segítségével. Ez szolgál majd a párbeszédrendszer megvalósításának alapjául.
A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.
Hozzon létre egy új nevű fájlt simple-game.py és határozza meg a Játszma, meccs osztályból öröklődik árkád. Ablak. Állítsa be a képernyő méreteit, inicializálja a lejátszó és a platform pozícióit, és valósítsa meg az alapvető rajzolási funkciókat. A A játékos balra és jobbra mozoghat a nyílbillentyűk segítségével.
Íme a kimenet:
Párbeszédpanel hozzáadása
Most, hogy megvan a játék alapvető felépítése, adj hozzá egy párbeszédpanelt, amely akkor jelenik meg, amikor a játékos ütközik egy ellenséggel. Létrehozhat egy párbeszédpanelt egyszerű alakzatokkal, és megjelenítheti a képernyőn.
Add hozzá a párbeszéd_aktív zászlót a Játszma, meccs osztály, amely jelzi, hogy a párbeszédpanelnek meg kell-e jelennie. Ban,-ben on_update módszer, ellenőrizze az ellenséges ütközést, és ha észleli, állítsa be párbeszéd_aktív nak nek Igaz.
Ban,-ben on_draw módszert, hívja a draw_dialogue_box módszer, ha a párbeszéd aktív. A draw_dialogue_box metódus egy téglalapot rajzol a párbeszédpanel háttereként, és egy szöveges üzenetet jelenít meg.
Hozzon létre egy új nevű fájlt dialog-box.py és adja hozzá a kódot az alábbi frissítésekkel:
# A játék osztályon belül
osztályJátszma, meccs(árkád. Ablak):
def__benne__(maga):
# ...self.dialogue_active = Hamis
defon_update(self, delta_time):
ha self.check_enemy_collision():
self.dialogue_active = Igazdefon_draw(maga):
# ...ha self.dialogue_active:
self.draw_dialogue_box()defcheck_enemy_collision(maga):
játékos_sugár = 25
távolság_x = abs (self.player_x - self.platform_x)
távolság_y = abs (self.player_y - self.platform_y)
kombinált_sugár = játékos_sugár + 25ha távolság_x < kombinált_sugár és távolság_y < kombinált_sugár:
VisszatérésIgaz
más:
VisszatérésHamis
defdraw_dialogue_box(maga):
szöveg = "Szia játékos! Hogy vagy?"
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, fehér)
arcade.draw_text (szöveg, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, fekete, font_size=16,
horgony_x="központ", horgony_y="központ")
Alább látható a kimenet:
A párbeszéd szövegének megjelenítése
Mostantól dinamikus szöveges üzenetek megjelenítésével javíthatja párbeszédrendszerét. Hozzon létre egy listát a párbeszédablakokból, és ismételje meg őket a beszélgetés szimulálásához. Minden alkalommal, amikor a párbeszédablak megjelenik, új üzenet jelenik meg.
# A játék osztályon belül
osztályJátszma, meccs(árkád. Ablak):
def__benne__(maga):
# ...self.dialogue_active = Hamis
self.dialogue_messages = [
"Szia játékos! Hogy vagy?",
– Szép idő van ma, igaz?,
– Óvakodj az előttünk leselkedő ellenségtől!
]
self.dialogue_index = 0
defdraw_dialogue_box(maga):
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, fehér)
arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, fekete, font_size=16,
horgony_x="központ", horgony_y="központ")
Három új változó bevezetése: párbeszéd_üzenetek, párbeszéd_index, és párbeszéd_aktív. A dialog_messages lista tartalmazza a párbeszédpanelen megjelenő szöveges üzeneteket. A dialog_index nyomon követi a megjelenítendő aktuális üzenetet. A párbeszédablak minden megjelenésekor növelheti a dialog_index értéket a következő üzenet megjelenítéséhez.
Gomb hozzáadása
A párbeszédrendszer interaktívabbá tételéhez adjon hozzá egy gombot a párbeszéd szövegének megváltoztatásához, amikor a lejátszó megnyomja. Hozzon létre egy új nevű fájlt multi-text.py és adja hozzá a kódot az alábbi frissítésekkel:
# A játék osztályon belül
osztályJátszma, meccs(árkád. Ablak):
def__benne__(maga):
# ...self.dialogue_active = Hamis
self.dialogue_messages = [
"Szia játékos! Hogy vagy?",
– Szép idő van ma, igaz?,
– Óvakodj az előttünk leselkedő ellenségtől!
]self.dialogue_index = 0
defon_mouse_press(self, x, y, gomb, módosítók):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)ha self.dialogue_active:
ha gomb == arcade. MOUSE_BUTTON_LEFT:
self.dialogue_index = indexdefdraw_dialogue_box(maga):
# ...
arcade.draw_text("Következő", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
fekete, font_size=16, horgony_x="központ", horgony_y="központ")
Add hozzá a on_mouse_press módszer a Játszma, meccs osztály. Ha a párbeszéd aktív, és megnyomja a bal egérgombot, ez a módszer növeli a párbeszéd_index a következő üzenet megjelenítéséhez a párbeszéd_üzenetek lista. A % len (self.dialogue_messages) biztosítja, hogy az index a lista elejére kerüljön a végére érve.
Kiegészítő funkciókkal együtt
A párbeszédrendszer továbbfejlesztése érdekében fontolóra veheti a következő további funkciók hozzáadását:
Több választási lehetőség
Egyetlen üzenet helyett több választási lehetőséget is megadhat a játékos számára. Ez lehetővé teszi a játékos számára, hogy befolyásolja a beszélgetés kimenetelét, vagy olyan döntéseket hozzon, amelyek befolyásolják a játék előrehaladását.
Ennek megvalósításához módosíthatja a draw_dialogue_box módszert a választási lehetőségek listájának megjelenítéséhez és a játékos választásának megfelelő kezeléséhez.
Karakterportrék
A párbeszédrendszer vizuális megjelenése érdekében karakterportrékat is beilleszthet a szöveg mellé. Minden karakterhez tartozhat egy megfelelő kép vagy sprite, amely a beszélgetés során ábrázolja őket. A karakterportrék megjelenítése segíthet a játékosoknak azonosítani a beszélőt, és mélyebbé teheti a történetmesélés élményét.
Szöveges animáció
A szöveget animálhatja, hogy látványosabbá tegye. Például beállíthatja, hogy a szöveg fokozatosan, egy karakterenként jelenjen meg a gépelés szimulálásához. Ez a várakozás érzését kelti, és vonzóbbá teheti a párbeszédet a játékos számára.
Hang hatások
Hangeffektusok hozzáadása párbeszédrendszere javíthatja a játék általános légkörét. Például lejátszhat hangeffektusokat, amikor megjelenik a párbeszédpanel, vagy amikor a lejátszó kiválaszt egy párbeszédpanelt. Ezekkel a hangjelzésekkel a beszélgetés még magával ragadóbb és hatásosabb lesz.
A párbeszédrendszer legjobb gyakorlatai
A párbeszédrendszer megvalósítása során tartsa szem előtt a következő bevált gyakorlatokat:
Tiszta felhasználói felület
Győződjön meg arról, hogy a párbeszédpanel és a szöveg olvasható, és megfelelően helyezkedik el a képernyőn. Használjon megfelelő betűtípusokat, színeket és méreteket, hogy a szöveg könnyen olvasható legyen.
Következetes karakterhang
Tartsa fenn a következetességet a karakterek beszédmódjában és a párbeszéd során használt hangnemben. Ez segít hiteles és vonzó beszélgetések létrehozásában.
Relevancia a játékmenet szempontjából
Győződjön meg arról, hogy a párbeszéd értelmesen hozzájárul a játék narratívájához, vagy releváns információkkal szolgál a játékos számára. Kerülje a túlzott vagy irreleváns beszélgetéseket, amelyek megzavarhatják a játékmenetet.
Tesztelés és iteráció
Alaposan tesztelje a párbeszédrendszert, hogy azonosítsa a problémákat vagy következetlenségeket. Ismételje meg a párbeszédet a játékosok visszajelzései alapján, hogy javítsa a beszélgetések általános minőségét és hatását.
Tedd szórakoztatóbbá a játékokat a párbeszédrendszerrel
Ha a Python Arcade könyvtárával párbeszédrendszert ad hozzá a játékhoz, az nagyban javíthatja a játékos élményét. Lehetővé teszi az interaktív beszélgetéseket, a történetmesélést és a karakterfejlesztést, így a játékokat még magával ragadóvá, lebilincselőbbé és szórakoztatóbbá teszi.