Realistiški personažai bendrauja, paprastai kalbėdami vienas su kitu. Įsitikinkite, kad dialogą pateikiate prieinamu ir papildomu būdu.

Jei jūsų žaidime yra veikėjų, tikriausiai norėsite, kad jie bendrautų. Dialogo sistema užtikrina interaktyvius pokalbius, istorijos progresą ir charakterio vystymąsi. Python Arcade biblioteka leidžia lengvai integruoti dialogo sistemą į esamą kodų bazę.

Naudodami dialogo sistemą galite kurti pokalbius tarp žaidėjo ir nežaidžiančių veikėjų (NPC). Žaidėjas gali pasirinkti atsakymus arba priimti sprendimus, turinčius įtakos žaidimo pasakojimui ar rezultatui.

Ši sistema leidžia kurti patrauklias istorijas ir sukurti dinamišką sąveiką, suteikdama įtraukiančią žaidimo patirtį.

Sukurkite paprastą žaidimą

Norėdami pradėti, sukurkite paprastą žaidimą naudodami „Arcade“ biblioteką. Tai bus dialogo sistemos įgyvendinimo pagrindas.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Sukurkite naują failą pavadinimu

paprastas žaidimas.py ir apibrėžti a Žaidimas klasė, kuri paveldima iš arkada. Langas. Nustatykite ekrano matmenis, inicijuokite grotuvo ir platformos pozicijas ir įgyvendinkite pagrindines piešimo funkcijas. The žaidėjas gali judėti į kairę ir į dešinę naudodami rodyklių klavišus.

Štai išvestis:

Dialogo langelio pridėjimas

Dabar, kai turite pagrindinę žaidimo struktūrą, pridėkite dialogo langą, kuris pasirodys žaidėjui susidūrus su priešu. Galite sukurti dialogo langą naudodami paprastas formas ir parodyti jį ekrane.

Pridėti dialogas_aktyvus vėliava prie Žaidimas klasė, kuri nurodo, ar turi būti rodomas dialogo langas. Viduje on_update metodas, patikrinkite, ar nėra priešo susidūrimo, o jei aptikta, nustatykite dialogas_aktyvus į Tiesa.

Viduje on_draw metodą, skambinkite draw_dialogue_box metodas, jei dialogas aktyvus. The draw_dialogue_box metodas nubrėžia stačiakampį kaip dialogo lango foną ir parodo tekstinį pranešimą.

Sukurkite naują failą pavadinimu dialog-box.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Žaidimo klasėje

klasėŽaidimas(arkada. Langas):
def__init__(savarankiškai):
# ...

self.dialogue_active = Netiesa

defon_update(savaime, delta_laikas):
jeigu self.check_enemy_collision():
self.dialogue_active = Tiesa

defon_draw(savarankiškai):
# ...

jeigu self.dialogue_active:
self.draw_dialogue_box()

defpatikrinti_priešo_susidūrimą(savarankiškai):
žaidėjo_spindulys = 25
distance_x = abs (self.player_x – self.platform_x)
distance_y = abs (self.player_y – self.platform_y)
kombinuotas_spindulys = žaidėjo_spindulys + 25

jeigu atstumas_x < kombinuotas_spindulys ir atstumas_y < kombinuotas_spindulys:
grąžintiTiesa
Kitas:
grąžintiNetiesa

defdraw_dialogue_box(savarankiškai):
tekstas = „Sveikas, žaidėju! Kaip laikaisi?"

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

arcade.draw_text (tekstas, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, juoda, šrifto_dydis=16,
anchor_x="centras", anchor_y="centras")

Žemiau yra išvestis:

Rodomas dialogo tekstas

Dabar galite patobulinti savo dialogo sistemą rodydami dinaminius tekstinius pranešimus. Sukurkite dialogo eilučių sąrašą ir kartokite jas, kad imituotumėte pokalbį. Kiekvieną kartą, kai pasirodys dialogo langas, jame bus rodomas naujas pranešimas.

# Žaidimo klasėje

klasėŽaidimas(arkada. Langas):
def__init__(savarankiškai):
# ...

self.dialogue_active = Netiesa
self.dialogue_messages = [
„Sveikas, žaidėju! Kaip laikaisi?",
– Šiandien geras oras, ar ne?,
„Saugokitės priešų, tykančių priekyje!
]
self.dialogue_index = 0

defdraw_dialogue_box(savarankiškai):

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

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, juoda, šrifto_dydis=16,
anchor_x="centras", anchor_y="centras")

Pristatykite tris naujus kintamuosius: dialogo_pranešimai, dialogo_indeksas, ir dialogas_aktyvus. Dialogo_pranešimų sąraše yra tekstiniai pranešimai, kurie bus rodomi dialogo lange. Dialogo_indeksas seka dabartinį rodomą pranešimą. Kiekvieną kartą, kai pasirodo dialogo langas, galite padidinti dialogo_index, kad būtų rodomas kitas pranešimas.

Mygtuko pridėjimas

Kad dialogo sistema būtų interaktyvesnė, pridėkite mygtuką, kad pakeistumėte dialogo tekstą, kai jį paspaudžia grotuvas. Sukurkite naują failą pavadinimu kelių tekstų.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Žaidimo klasėje

klasėŽaidimas(arkada. Langas):
def__init__(savarankiškai):
# ...

self.dialogue_active = Netiesa

self.dialogue_messages = [
„Sveikas, žaidėju! Kaip laikaisi?",
– Šiandien geras oras, ar ne?,
„Saugokitės priešų, tykančių priekyje!
]

self.dialogue_index = 0

defon_mouse_press(savaime, x, y, mygtukas, modifikatoriai):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)

jeigu self.dialogue_active:
jeigu mygtukas == arkada. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeksas

defdraw_dialogue_box(savarankiškai):
# ...

arcade.draw_text("Kitas", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
juoda, font_size=16, anchor_x="centras", anchor_y="centras")

Pridėkite on_mouse_press metodas prie Žaidimas klasė. Kai dialogas aktyvus ir paspausite kairįjį pelės mygtuką, šis metodas padidina dialogo_indeksas kad būtų rodomas kitas pranešimas dialogo_pranešimai sąrašą. The % len (self.dialogue_messages) užtikrina, kad pasiekus pabaigą rodyklė apsisuktų iki sąrašo pradžios.

Įskaitant papildomas funkcijas

Norėdami dar labiau patobulinti dialogo sistemą, galite pridėti šias papildomas funkcijas:

Keli pasirinkimai

Vietoj vieno pranešimo galite pateikti keletą pasirinkimų, iš kurių žaidėjas galėtų pasirinkti. Tai leidžia žaidėjui daryti įtaką pokalbio rezultatams arba priimti sprendimus, turinčius įtakos žaidimo eigai.

Norėdami tai įgyvendinti, galite modifikuoti draw_dialogue_box būdas parodyti pasirinkimų sąrašą ir atitinkamai tvarkyti žaidėjo pasirinkimą.

Personažų portretai

Norėdami suteikti dialogo sistemai vaizdinės nuojautos, šalia teksto galite įtraukti veikėjų portretus. Kiekvienas veikėjas gali turėti atitinkamą atvaizdą arba sprite, kuris jį reprezentuoja pokalbio metu. Personažo portretų rodymas gali padėti žaidėjams atpažinti kalbėtoją ir suteikti pasakojimo patirties.

Teksto animacija

Galite animuoti tekstą, kad jis būtų vizualiai patrauklesnis. Pavyzdžiui, galite padaryti, kad tekstas būtų rodomas palaipsniui, po vieną simbolį, kad imituotumėte spausdinimą. Tai sukuria laukimo jausmą ir gali padaryti dialogą patrauklesnį žaidėjui.

Garso efektai

Garso efektų pridėjimas dialogo sistema gali pagerinti bendrą žaidimo atmosferą. Pavyzdžiui, galite leisti garso efektus, kai pasirodo dialogo langas arba kai grotuvas pasirenka dialogo parinktį. Šios garso užuominos gali padaryti pokalbį įtraukiantį ir paveikesnį.

Geriausia dialogo sistemos praktika

Diegdami dialogo sistemą, nepamirškite šios geriausios praktikos:

Išvalyti vartotojo sąsają

Įsitikinkite, kad dialogo langas ir tekstas yra įskaitomi ir tinkamai išdėstyti ekrane. Naudokite tinkamus šriftus, spalvas ir dydžius, kad tekstas būtų lengvai skaitomas.

Nuoseklus charakterio balsas

Viso dialogo metu išlaikykite veikėjų kalbėjimo ir tono nuoseklumą. Tai padeda sukurti patikimus ir patrauklius pokalbius.

Aktualumas žaidimo eigai

Įsitikinkite, kad dialogas prasmingai prisideda prie žaidimo pasakojimo arba žaidėjui suteikia svarbios informacijos. Venkite pernelyg didelių ar nereikšmingų pokalbių, kurie gali sutrikdyti žaidimo eigą.

Testavimas ir iteracija

Kruopščiai patikrinkite dialogo sistemą, kad nustatytumėte visas problemas ar neatitikimus. Pakartokite savo dialogą pagal žaidėjų atsiliepimus, kad pagerintumėte bendrą pokalbių kokybę ir poveikį.

Padarykite žaidimus linksmesnius naudodami dialogo sistemą

Dialogo sistemos įtraukimas į žaidimus naudojant Python Arcade biblioteką gali labai pagerinti žaidėjo patirtį. Tai leidžia interaktyviems pokalbiams, istorijų pasakojimui ir charakterio vystymuisi, todėl jūsų žaidimai tampa patrauklesni, patrauklesni ir smagiau žaisti.