Realistični likovi međusobno komuniciraju, obično razgovarajući jedni s drugima. Pobrinite se da svoj dijalog predstavite na pristupačan i komplementaran način.

Ako vaša igra sadrži likove, vjerojatno ćete željeti da oni međusobno razgovaraju. Sustav dijaloga omogućuje interaktivne razgovore, napredovanje priče i razvoj likova. Knjižnica Python Arcade olakšava integraciju sustava dijaloga u vašu postojeću bazu kodova.

Sa sustavom dijaloga možete kreirati razgovore između igrača i likova koji nisu igrači (NPC). Igrač može birati odgovore ili donositi odluke koje utječu na priču ili ishod igre.

Ovaj vam sustav omogućuje stvaranje uvjerljivih priča i stvaranje dinamičnih interakcija, pružajući impresivnije iskustvo igranja.

Stvorite jednostavnu igru

Za početak izradite jednostavnu igru ​​koristeći Arcade knjižnicu. To će poslužiti kao temelj za provedbu sustava dijaloga.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Stvorite novu datoteku pod nazivom

instagram viewer
jednostavna igra.py i definirati a igra klasa koja nasljeđuje od arkada. Prozor. Postavite dimenzije zaslona, ​​inicijalizirajte položaje igrača i platforme i implementirajte osnovnu funkcionalnost crtanja. The igrač se može pomicati lijevo i desno pomoću tipki sa strelicama.

Evo rezultata:

Dodavanje okvira za dijalog

Sada kada imate osnovnu strukturu igre, dodajte dijaloški okvir koji se pojavljuje kada se igrač sudari s neprijateljem. Možete stvoriti dijaloški okvir pomoću jednostavnih oblika i prikazati ga na zaslonu.

Dodati dijalog_aktivan zastava na igra klasa, koja označava treba li se dijaloški okvir prikazati. u na_ažuriranju metoda, provjeri neprijateljski sudar, a ako se otkrije, postavite dijalog_aktivan do Pravi.

u izvlačenje metoda, nazovite nacrtaj_dijaloški_okvir metoda ako je dijalog aktivan. The nacrtaj_dijaloški_okvir metoda crta pravokutnik kao pozadinu dijaloškog okvira i prikazuje tekstualnu poruku.

Stvorite novu datoteku pod nazivom dialog-box.py i dodajte kod sa sljedećim ažuriranjima:

# Unutar klase igre

razredaigra(arkada. Prozor):
def__u tome__(sebe):
# ...

self.dialogue_active = lažno

defna_ažuriranju(sam, delta_vrijeme):
ako self.check_enemy_collision():
self.dialogue_active = Pravi

defizvlačenje(sebe):
# ...

ako self.dialogue_active:
self.draw_dialogue_box()

defprovjeri_neprijateljski_sudar(sebe):
radijus_igrača = 25
distance_x = abs (self.player_x - self.platform_x)
distance_y = abs (self.player_y - self.platform_y)
kombinirani_radijus = radijus_igrača + 25

ako udaljenost_x < kombinirani_radijus i udaljenost_y < kombinirani_radijus:
povratakPravi
drugo:
povrataklažno

defnacrtaj_dijaloški_okvir(sebe):
tekst = "Zdravo, igraču! Kako si?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
VISINA_EKRANA // 2, 500, 200, bijelo)

arcade.draw_text (tekst, SCREEN_WIDTH // 2,
VISINA_EKRANA // 2 + 20, crna, veličina_fonta=16,
sidro_x="centar", sidro_y="centar")

Ispod je izlaz:

Prikaz teksta dijaloga

Sada možete poboljšati svoj sustav dijaloga prikazivanjem dinamičkih tekstualnih poruka. Napravite popis nizova dijaloga i iterirajte kroz njih da biste simulirali razgovor. Svaki put kad se pojavi dijaloški okvir, prikazat će se nova poruka.

# Unutar klase igre

razredaigra(arkada. Prozor):
def__u tome__(sebe):
# ...

self.dialogue_active = lažno
self.dialogue_messages = [
"Zdravo, igraču! Kako si?",
"Lijepo vrijeme danas, zar ne?",
"Čuvajte se neprijatelja koji vas vrebaju!"
]
self.dialogue_index = 0

defnacrtaj_dijaloški_okvir(sebe):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
VISINA_EKRANA // 2, 500, 200, bijelo)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, crna, veličina_fonta=16,
sidro_x="centar", sidro_y="centar")

Uvedite tri nove varijable: dijalog_poruke, dialog_index, i dijalog_aktivan. Popis dialogue_messages sadrži tekstualne poruke koje će dijaloški okvir prikazati. Dialogue_index prati trenutnu poruku za prikaz. Svaki put kad se dijaloški okvir pojavi, možete povećati dialog_index za prikaz sljedeće poruke.

Dodavanje gumba

Kako biste sustav dijaloga učinili interaktivnijim, dodajte gumb za promjenu teksta dijaloga kada ga igrač pritisne. Stvorite novu datoteku pod nazivom multi-text.py i dodajte kod sa sljedećim ažuriranjima:

# Unutar klase igre

razredaigra(arkada. Prozor):
def__u tome__(sebe):
# ...

self.dialogue_active = lažno

self.dialogue_messages = [
"Zdravo, igraču! Kako si?",
"Lijepo vrijeme danas, zar ne?",
"Čuvajte se neprijatelja koji vas vrebaju!"
]

self.dialogue_index = 0

defna_pritisak_miša(ja, x, y, gumb, modifikatori):
indeks = (self.dialogue_index + 1) % len (self.dialogue_messages)

ako self.dialogue_active:
ako gumb == arkada. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeks

defnacrtaj_dijaloški_okvir(sebe):
# ...

arcade.draw_text("Sljedeći", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
crna, veličina_fonta=16, sidro_x="centar", sidro_y="centar")

Dodajte na_pritisak_miša metoda za igra razreda. Kada je dijalog aktivan i pritisnete lijevu tipku miša, ova metoda povećava dialog_index za prikaz sljedeće poruke u dijalog_poruke popis. The % len (self.dialogue_messages) osigurava da se indeks prelama na početak popisa kada dođe do kraja.

Uključujući dodatne značajke

Kako biste dodatno poboljšali sustav dijaloga, možete razmotriti dodavanje sljedećih dodatnih značajki:

Višestruki izbor

Umjesto jedne poruke, igraču možete dati više izbora. To omogućuje igraču da utječe na ishod razgovora ili donosi odluke koje utječu na napredak igre.

Da biste to implementirali, možete modificirati nacrtaj_dijaloški_okvir metoda za prikaz popisa izbora i rukovanje odabirom igrača u skladu s tim.

Portreti likova

Da biste svom sustavu dijaloga dodali vizualni štih, uz tekst možete uključiti portrete likova. Svaki lik može imati odgovarajuću sliku ili sprite koji ga predstavlja tijekom razgovora. Prikazivanje portreta likova može pomoći igračima da identificiraju govornika i dodaju dubinu iskustvu pripovijedanja.

Animacija teksta

Možete animirati tekst kako biste ga učinili vizualno privlačnijim. Na primjer, možete učiniti da se tekst pojavljuje postupno, jedan po jedan znak, kako biste simulirali tipkanje. To stvara osjećaj iščekivanja i može učiniti dijalog privlačnijim za igrača.

Zvučni efekti

Dodavanje zvučnih efekata vašem sustavu dijaloga može poboljšati ukupnu atmosferu igre. Na primjer, možete reproducirati zvučne efekte kada se pojavi dijaloški okvir ili kada igrač odabere opciju dijaloga. Ovi zvučni znakovi mogu učiniti razgovor impresivnijim i dojmljivijim.

Najbolji primjeri iz prakse za sustav dijaloga

Prilikom implementacije sustava dijaloga imajte na umu sljedeće najbolje prakse:

Jasno korisničko sučelje

Provjerite jesu li dijaloški okvir i tekst čitljivi i pravilno postavljeni na zaslonu. Koristite odgovarajuće fontove, boje i veličine kako bi tekst bio lak za čitanje.

Dosljedan glas lika

Održavajte dosljednost u načinu na koji likovi govore i tonu koji koriste tijekom dijaloga. To pomaže u stvaranju uvjerljivih i zanimljivih razgovora.

Relevantnost za igru

Pobrinite se da dijalog smisleno pridonosi narativu igre ili pruža relevantne informacije igraču. Izbjegavajte pretjerane ili nebitne razgovore koji mogu poremetiti tijek igranja.

Testiranje i ponavljanje

Temeljito testirajte svoj dijaloški sustav kako biste identificirali probleme ili nedosljednosti. Ponovite svoj dijalog na temelju povratnih informacija igrača kako biste poboljšali ukupnu kvalitetu i utjecaj razgovora.

Učinite igre zabavnijim uz sustav dijaloga

Dodavanje sustava dijaloga vašim igrama pomoću biblioteke Arcade u Pythonu može uvelike poboljšati iskustvo igrača. Omogućuje interaktivne razgovore, pripovijedanje i razvoj likova, čineći vaše igre impresivnijim, privlačnijim i zabavnijim za igranje.