Įdiegę dialogo sistemą, padarykite savo žaidimo patirtį labiau įtraukiantį.

Dialogo sistemos įdiegimas Pygame gali labai pagerinti interaktyvią žaidimo patirtį. Dialogo sistema leidžia žaidimui pateikti žaidėjui pokalbius, pranešimus ir pasirinkimus, sukuriant labiau įtraukiantį ir įtraukiantį žaidimą.

Pygame biblioteka suteikia reikalingus įrankius grafinei vartotojo sąsajai (GUI) sukurti ir vartotojo įvestims tvarkyti, todėl tai idealus pasirinkimas diegiant dialogo sistemą.

Sukurkite paprastą žaidimą

Prieš pradėdami įsitikinkite, kad turite pip įdiegtas jūsų sistemoje. Naudokite šią komandą norėdami įdiegti pygame biblioteka:

pip įdiegti pygame

Po to pradėkite kurdami paprastą žaidimą, kuriame žaidėjas gali judėti į kairę ir į dešinę, vengdamas priešo.

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

Žemiau pateiktas kodo fragmentas nustato žaidimo langą, inicijuoja žaidėjo ir priešo savybes ir paleidžia žaidimo kilpą.

instagram viewer
# Importuokite reikalingas bibliotekas
importuoti pygame
pygame.locals importuoti *

pygame.init()

# Nustatykite žaidimo langą
screen_width, screen_height = 800, 600
ekranas = pygame.display.set_mode((ekrano_plotis, ekrano_aukštis))
pygame.display.set_caption("Mano žaidimas")

# Apibrėžkite spalvas
JUODA = (0, 0, 0)
BALTAS = (255, 255, 255)
PILKA = (128, 128, 128)

# Grotuvo savybės
žaidėjas_x = 400
žaidėjas_y = 500
žaidėjo_greitis = 5

# Priešo savybės
priešas_x = 400
priešas_y = 100
priešo_greitis = 3

bėgimas = Tiesa
laikrodis = pygame.time. Laikrodis()

kol veikia:
dėl įvykis in pygame.event.get():
jeigu event.type == UŽDARYTI:
bėgimas = Netiesa

klavišai = pygame.key.get_pressed()

# Žaidėjo judėjimas
jeigu klavišai[K_LEFT] ir žaidėjas_x > 0:
žaidėjas_x - = žaidėjo_greitis
jeigu klavišai[K_RIGHT] ir player_x < screen_width - player_speed:
žaidėjas_x += grotuvo_greitis

# Atnaujinkite priešo poziciją
priešas_y += priešo_greitis
jeigu enemy_y > screen_height:
priešas_y = -50

# Patikrinkite susidūrimą
jeigu pygame. Tiesiai (žaidėjas_x, žaidėjas_y, 50, 50).colliderect (pygame. Tiesiai (priešas_x, priešas_y, 50, 50)):
# Įdiekite dialogo langą čia
praeiti

screen.fill (JUODAS)
pygame.draw.rect (ekranas, BALTAS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekranas, BALTAS, (priešo_x, priešo_y, 50, 50))
pygame.display.flip()
laikrodis.tick(60)

pygame.quit()

Žemiau yra išvestis:

Sukurkite dialogo langelį

Norėdami įdiegti dialogo langą, turite jį rodyti kiekvieną kartą, kai žaidėjas paliečia priešą. Pridėkite dialogo_langas kintamasis, kuris valdo, ar dialogo langas turi būti rodomas, ar ne.

Žaidimo ciklo viduje, patikrinkite, ar žaidėjas ir priešas nesusidūrė, o jei įvyksta susidūrimas, nustatykite dialogo_langas į Tiesa. Esant sąlygoms, kur dialogo_langas yra Tiesa, nupieškite pilką stačiakampį ekrane naudodami pygame.draw.rect() kad pavaizduotų dialogo langą.

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

# Dialogo lango ypatybės
dialogo_lango_plotis = 400
dialog_box_height = 200
dialog_box_x = (screen_width - dialog_box_width) // 2
dialog_box_y = (ekrano_aukštis - dialogo_dėžutės_aukštis) // 2
dialogo laukelis = Netiesa
# ...
kol veikia:
dėl įvykis in pygame.event.get():
jeigu event.type == UŽDARYTI:
bėgimas = Netiesa
klavišai = pygame.key.get_pressed()
# Žaidėjo judėjimas
jeigu klavišai[K_LEFT] ir žaidėjas_x > 0:
žaidėjas_x - = žaidėjo_greitis
jeigu klavišai[K_RIGHT] ir player_x < screen_width - player_speed:
žaidėjas_x += grotuvo_greitis
# Atnaujinkite priešo poziciją
priešas_y += priešo_greitis
jeigu enemy_y > screen_height:
priešas_y = -50
# Patikrinkite susidūrimą
jeigu pygame. Tiesiai (žaidėjas_x, žaidėjas_y, 50, 50).colliderect (pygame. Tiesiai (priešas_x, priešas_y, 50, 50)):
dialogo laukelis = Tiesa
screen.fill (JUODAS)
jeigu dialog_box:
pygame.draw.rect (ekranas, PILKAS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Čia pridėkite dialogo tekstą ir mygtukus
Kitas:
pygame.draw.rect (ekranas, BALTAS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekranas, BALTAS, (priešo_x, priešo_y, 50, 50))
pygame.display.flip()
laikrodis.tick(60)
pygame.quit()

Žemiau yra išvestis:

Dabar, kad dialogo langas būtų funkcionalesnis ir interaktyvesnis, galite pridėti mygtukų ir teksto.

Pridėkite mygtukus naudodami Python GUI

Norėdami pridėti mygtukų prie dialogo lango, galite naudoti Python GUI biblioteką, pvz., Pygame GUI arba PySimpleGUI.

Įdiekite ir importuokite pygame_gui modulį, tada sukurkite Pygame GUI tvarkyklę naudodami pygame_gui. UIMager. Po to sukurkite mygtuką naudodami UIB mygtukas klasė, kurią teikia Python GUI biblioteka.

Žaidimo ciklo viduje pridėkite manager.update (pygame.time.get_ticks() / 1000.0) atnaujinti GUI tvarkyklę ir manager.draw_ui (ekranas) norėdami nupiešti GUI elementus ekrane.

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


importuoti pygame_gui

# Pygame GUI tvarkyklė
vadybininkas = pygame_gui. UIMager((ekrano_plotis, ekrano_aukštis))

# Sukurkite mygtuką
mygtuko_plotis = 100
mygtuko_aukštis = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
mygtukas_y = dialogo_dėžutė_y + (dialogo_box_height - mygtuko_aukštis) // 2
mygtukas = pygame_gui.elements. UIBbutton (relative_rect=pygame. Tiesiai (mygtukas_x, mygtukas_y, mygtuko plotis, mygtuko aukštis),
tekstas ='Paspausk mane',
vadybininkas = vadybininkas)

bėgimas = Tiesa
laikrodis = pygame.time. Laikrodis()

kol veikia:
dėl įvykis in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
bėgimas = Netiesa

manager.process_events (įvykis)

klavišai = pygame.key.get_pressed()

# Patikrinkite susidūrimą
jeigu pygame. Tiesiai (žaidėjas_x, žaidėjas_y, 50, 50).colliderect (pygame. Tiesiai (priešas_x, priešas_y, 50, 50)):
dialogo laukelis = Tiesa

screen.fill (JUODAS)

jeigu dialog_box:
pygame.draw.rect (ekranas, PILKAS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (ekranas)
Kitas:
pygame.draw.rect (ekranas, BALTAS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekranas, BALTAS, (priešo_x, priešo_y, 50, 50))

pygame.display.flip()
laikrodis.tick(60)

pygame.quit()

Žemiau yra išvestis:

Atlikus šiuos pakeitimus, mygtukas dabar turėtų būti matomas dialogo lange, kai jis pasirodys.

Pridėti tekstą naudodami Python GUI

Norėdami dialogo lange rodyti pasirinktinį tekstą, galite naudoti Python GUI bibliotekos teikiamas teksto funkcijas.

Apibrėžkite šrifto ypatybes naudodami pygame.font. Šriftas (). Sukurti tekstą kintamąjį su norimu turiniu, tada atvaizduokite jį naudodami nurodytą šriftą ir spalvą.

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


# Inicijuoti Pygame GUI tvarkyklę
vadybininkas = pygame_gui. UIMager((ekrano_plotis, ekrano_aukštis))

# Apibrėžkite šrifto ypatybes
šriftas = pygame.font. Šriftas (Nė vienas, 24)
text_color = JUODAS

# ...

kol veikia:
# ...

jeigu dialog_box:
pygame.draw.rect (ekranas, PILKAS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Įtraukite tekstą į dialogo langą
tekstas = "Sveiki, sveiki atvykę į žaidimą!"
rendered_text = font.render (tekstas, Tiesa, teksto_spalva)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))

screen.blit (pateiktas_tekstas, tekstas_tiesiogiai)

Žemiau yra išvestis:

Įskaitant papildomas funkcijas

Be mygtukų ir teksto, yra keletas kitų funkcijų, kurias galite įtraukti į dialogo sistemą Pygame. Štai dar keli pavyzdžiai:

Charakterio emocijos

Dialogo metu rodykite veikėjų emocijas ar veido išraiškas, kad perteiktumėte jų nuotaiką ar reakcijas. Tai galima pasiekti naudojant animuotus šlaitus arba vaizdo perdangas, kurios keičiasi atsižvelgiant į pokalbio kontekstą.

Sąlyginiai dialogai

Naudokite sąlyginius teiginius, kad suaktyvintumėte konkrečius dialogus pagal tam tikrus kriterijus, pvz., žaidėjo progresą, ankstesnius pasirinkimus ar žaidimo įvykius. Tai padidina gylį ir suasmenina sąveiką, pagrįstą žaidėjo veiksmais.

Balso perdavimas

Pagerinkite dialogo sistemos panardinimą įtraukdami balso vaidybą į personažų dialogus. Leiskite garso klipus Pygame kurie atitinka dialogo lange rodomą tekstą, kad simboliams būtų suteiktas aiškus balsas.

Naudodami šias papildomas funkcijas galite sukurti dinamiškesnę ir patrauklesnę dialogo sistemą, kuri sustiprina žaidėjo įsitraukimą ir suteikia unikalią žaidimo patirtį.

Geriausia Dialogo sistemos pridėjimo praktika

Diegiant dialogo sistemą Pygame, svarbu laikytis tam tikros geriausios praktikos, kad būtų užtikrintas efektyvumas, priežiūra ir sklandi žaidėjo patirtis. Štai keletas papildomų geriausios praktikos pavyzdžių, į kuriuos reikia atsižvelgti:

Naudokite duomenimis pagrįstą dizainą

Išsaugokite dialogo turinį, įskaitant tekstą, garsiakalbio informaciją ir dialogo parinktis, išoriniuose duomenų failuose (pvz., JSON, XML). Tai leidžia lengvai modifikuoti, lokalizuoti ir valdyti dialogo turinį, nereikalaujant keisti kodo.

Įdiekite dialogo vadybininką

Sukurkite specialią dialogo tvarkyklės klasę arba modulį, kuris tvarko dialogo sąveikos valdymo logiką. Tai padeda sutvarkyti kodą ir palengvinti priežiūrą bei išplėsti.

Žaidimų testavimas ir balansavimas

Reguliariai žaiskite ir subalansuokite dialogo sistemą, kad įsitikintumėte, jog dialogai vyksta natūraliai, pasirinkimai turi reikšmingų pasekmių, o tempas atitinka bendrą žaidimo patirtį. Surinkite žaidėjų atsiliepimus ir kartokite dialogo turinį bei struktūrą, kad pagerintumėte žaidėjų įsitraukimą.

Lokalizacijos palaikymas

Kurkite dialogo sistemą nuo pat pradžių atsižvelgdami į lokalizaciją. Atskirkite teksto eilutes nuo kodo ir naudokite kalbos failus arba lokalizacijos bibliotekas, kad palaikytumėte kelias kalbas. Tai leidžia lengviau išversti ir lokalizuoti dialogo turinį.

Vadovaudamiesi šiais geriausios praktikos pavyzdžiais galite užtikrinti, kad jūsų dialogo sistema būtų gerai suprojektuota, efektyvi ir lanksti, todėl tobulėjant žaidimui bus lengviau prižiūrėti ir atnaujinti.

Padarykite žaidimus patrauklesnius naudodami dialogo sistemą

Įtraukę į žaidimą dialogo sistemą, jis gali tapti patrauklesnis, nes žaidėjai gali bendrauti su ne žaidėjais personažais (NPC), atskleisti siužetus, pasirinkti ir gauti vertingos informacijos.

Nepamirškite apgalvotai kurti dialogo struktūros, naudoti modulinį metodą ir apsvarstyti galimybę integruoti kolekcionuojamus daiktus ir lygius, kad dar labiau praturtintumėte žaidėjo patirtį.