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
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 = Pravidefizvlač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 + 25ako 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 = indeksdefnacrtaj_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.