Realistlikud tegelased suhtlevad, tavaliselt üksteisega rääkides. Esitage oma dialoog kättesaadaval ja üksteist täiendaval viisil.

Kui teie mängus on tegelasi, soovite tõenäoliselt, et nad omavahel vestleksid. Dialoogisüsteem pakub interaktiivseid vestlusi, loo edenemist ja tegelaste arendamist. Python Arcade teek muudab dialoogisüsteemi integreerimise olemasolevasse koodibaasi lihtsaks.

Dialoogisüsteemi abil saate luua vestlusi mängija ja mittemängija tegelaste (NPC-de) vahel. Mängija saab valida vastuseid või teha otsuseid, mis mõjutavad mängu narratiivi või tulemust.

See süsteem võimaldab teil luua köitvaid lugusid ja luua dünaamilisi suhtlusi, pakkudes kaasahaaravamat mängukogemust.

Looge lihtne mäng

Alustuseks looge Arcade teegi abil lihtne mäng. See on dialoogisüsteemi rakendamise aluseks.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Looge uus fail nimega lihtne-mäng.py ja defineeri a Mäng klass, mis pärib arkaad. Aken

. Määrake ekraani mõõtmed, lähtestage mängija ja platvormi positsioonid ning rakendage joonistamise põhifunktsioone. The mängija saab liikuda vasakule ja paremale kasutades nooleklahve.

Siin on väljund:

Dialoogiboksi lisamine

Nüüd, kui teil on mängu põhistruktuur, lisage dialoogiboks, mis kuvatakse, kui mängija põrkub vaenlasega. Saate luua lihtsate kujundite abil dialoogiboksi ja kuvada selle ekraanil.

Lisa dialoog_aktiivne lipp Mäng klass, mis näitab, kas dialoogiaken peaks näitama. Aastal on_update meetod, kontrollige vaenlase kokkupõrget, ja kui see tuvastatakse, määrake dialoog_aktiivne juurde Tõsi.

Aastal on_draw meetodit, helistage joonistusdialoogi_kast meetod, kui dialoog on aktiivne. The joonistusdialoogi_kast meetod joonistab dialoogiboksi taustaks ristküliku ja kuvab tekstisõnumi.

Looge uus fail nimega dialog-box.py ja lisage kood koos allolevate värskendustega:

# Mänguklassi sees

klassMäng(arkaad. aken):
def__selles__(ise):
# ...

self.dialogue_active = Vale

defon_update(ise, delta_aeg):
kui self.check_enemy_collision():
self.dialogue_active = Tõsi

defon_draw(ise):
# ...

kui self.dialogue_active:
self.draw_dialogue_box()

defcheck_enmy_collision(ise):
mängija_raadius = 25
kaugus_x = abs (self.player_x – self.platform_x)
kaugus_y = abs (self.player_y – self.platform_y)
kombineeritud_raadius = mängija_raadius + 25

kui kaugus_x < kombineeritud_raadius ja kaugus_y < kombineeritud_raadius:
tagasiTõsi
muidu:
tagasiVale

defjoonistusdialoogi_kast(ise):
tekst = "Tere, mängija! Kuidas sul läheb?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, valge)

arcade.draw_text (tekst, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, must, font_size=16,
ankur_x="Keskus", ankur_y="Keskus")

Allpool on väljund:

Dialoogi teksti kuvamine

Nüüd saate oma dialoogisüsteemi täiustada, kuvades dünaamilisi tekstsõnumeid. Looge dialoogistringide loend ja korrake neid vestluse simuleerimiseks. Iga kord, kui dialoogiboks ilmub, kuvatakse uus teade.

# Mänguklassi sees

klassMäng(arkaad. aken):
def__selles__(ise):
# ...

self.dialogue_active = Vale
self.dialogue_messages = [
"Tere, mängija! Kuidas sul läheb?",
"Täna on ilus ilm, kas pole?",
"Hoiduge ees varitsevate vaenlaste eest!"
]
self.dialogue_index = 0

defjoonistusdialoogi_kast(ise):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, valge)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, must, font_size=16,
ankur_x="Keskus", ankur_y="Keskus")

Tutvustage kolm uut muutujat: dialoogi_sõnumid, dialoogi_indeksja dialoog_aktiivne. Dialoogiaknas kuvatavate tekstisõnumite loend sisaldab dialoogiboksis kuvatavaid tekstsõnumeid. Dialoogiindeks jälgib praegust kuvatavat sõnumit. Iga kord, kui dialoogiboks ilmub, saate järgmise sõnumi kuvamiseks dialoogiindeksit suurendada.

Nupu lisamine

Dialoogisüsteemi interaktiivsemaks muutmiseks lisage nupp dialoogi teksti muutmiseks, kui mängija seda vajutab. Looge uus fail nimega multi-text.py ja lisage kood koos allolevate värskendustega:

# Mänguklassi sees

klassMäng(arkaad. aken):
def__selles__(ise):
# ...

self.dialogue_active = Vale

self.dialogue_messages = [
"Tere, mängija! Kuidas sul läheb?",
"Täna on ilus ilm, kas pole?",
"Hoiduge ees varitsevate vaenlaste eest!"
]

self.dialogue_index = 0

defon_mouse_press(ise, x, y, nupp, modifikaatorid):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)

kui self.dialogue_active:
kui nupp == arkaad. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeks

defjoonistusdialoogi_kast(ise):
# ...

arcade.draw_text("Järgmine", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
must, font_size=16, ankur_x="Keskus", ankur_y="Keskus")

Lisage on_mouse_press meetodit Mäng klass. Kui dialoog on aktiivne ja vajutate hiire vasakut nuppu, suurendab see meetod dialoogi_indeks järgmise sõnumi kuvamiseks dialoogi_sõnumid nimekirja. The % len (self.dialogue_messages) tagab, et indeks keerdub lõppu jõudes ümber loendi alguseni.

Kaasa arvatud lisafunktsioonid

Dialoogisüsteemi edasiseks täiustamiseks võite kaaluda järgmiste lisafunktsioonide lisamist.

Mitu valikut

Ühe sõnumi asemel saate mängijal valida mitme valiku vahel. See võimaldab mängijal mõjutada vestluse tulemust või teha otsuseid, mis mõjutavad mängu edenemist.

Selle rakendamiseks saate muuta joonistusdialoogi_kast meetod valikute loendi kuvamiseks ja mängija valiku vastavalt käsitlemiseks.

Tegelaste portreed

Dialoogisüsteemi visuaalse elegantsi lisamiseks võite teksti kõrvale lisada tegelase portreesid. Igal tegelasel võib olla vastav pilt või sprait, mis teda vestluse ajal esindab. Tegelaste portreede kuvamine võib aidata mängijatel kõnelejat tuvastada ja lisada jutustamiskogemusele sügavust.

Tekstianimatsioon

Saate teksti animeerida, et muuta see visuaalselt atraktiivsemaks. Näiteks saate teksti sisestamise simuleerimiseks kuvada järk-järgult, üks märk korraga. See loob ootusärevuse ja võib muuta dialoogi mängija jaoks köitvamaks.

Heliefektid

Heliefektide lisamine oma dialoogisüsteemiga võib mängu üldist atmosfääri parandada. Näiteks saate esitada heliefekte, kui ilmub dialoogiboks või kui mängija valib dialoogivaliku. Need helivihjed võivad muuta vestluse kaasahaaravamaks ja mõjuvamaks.

Dialoogisüsteemi parimad tavad

Dialoogisüsteemi rakendamisel pidage meeles järgmisi parimaid tavasid.

Selge kasutajaliides

Veenduge, et dialoogiboks ja tekst on loetavad ja ekraanil õigesti paigutatud. Kasutage sobivaid fonte, värve ja suurusi, et tekst oleks hõlpsasti loetav.

Järjepidev karakteri hääl

Säilitage järjekindlus tegelaste kõneviisis ja toonis, mida nad kogu dialoogi vältel kasutavad. See aitab luua usutavaid ja kaasahaaravaid vestlusi.

Mängu olulisus

Veenduge, et dialoog aitaks mängu narratiivi sisuliselt kaasa või annaks mängijale asjakohast teavet. Vältige liigseid või ebaolulisi vestlusi, mis võivad mängu kulgu häirida.

Testimine ja iteratsioon

Testige oma dialoogisüsteemi põhjalikult, et tuvastada kõik probleemid või ebakõlad. Korrake oma dialoogi mängijate tagasiside põhjal, et parandada vestluste üldist kvaliteeti ja mõju.

Muutke mängud dialoogisüsteemiga lõbusamaks

Dialoogisüsteemi lisamine mängudele Pythoni Arcade teegi abil võib mängija kogemust oluliselt parandada. See võimaldab interaktiivseid vestlusi, jutuvestmist ja tegelaste arendamist, muutes teie mängud kaasahaaravamaks, kaasahaaravamaks ja mängimise lõbusamaks.