Tee pelikokemuksestasi mukaansatempaava ottamalla käyttöön dialogijärjestelmä.
Dialogijärjestelmän käyttöönotto Pygamessa voi parantaa huomattavasti pelin interaktiivista kokemusta. Dialogijärjestelmän avulla peli voi esittää keskusteluja, viestejä ja valintoja pelaajalle, mikä luo mukaansatempaavamman ja mukaansatempaavamman pelin.
Pygame-kirjasto tarjoaa tarvittavat työkalut graafisen käyttöliittymän (GUI) luomiseen ja käyttäjän syötteiden käsittelemiseen, joten se on ihanteellinen valinta dialogijärjestelmän toteuttamiseen.
Luo yksinkertainen peli
Ennen kuin aloitat, varmista, että sinulla on pip asennettuna järjestelmääsi. Käytä tätä komentoa asentaaksesi pygame kirjasto:
pip asennus pygame
Aloita sen jälkeen luomalla yksinkertainen peli, jossa pelaaja voi liikkua vasemmalle ja oikealle välttäen vihollista.
Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
Alla oleva koodinpätkä määrittää peliikkunan, alustaa pelaajan ja vihollisen ominaisuudet ja ajaa pelisilmukan.
# Tuo tarvittavat kirjastot
tuonti pygame
alkaen pygame.locals tuonti *pygame.init()
# Aseta peli-ikkuna
screen_width, screen_height = 800, 600
näyttö = pygame.display.set_mode((näytön_leveys, näytön_korkeus))
pygame.display.set_caption("Minun pelini")# Määrittele värit
MUSTA = (0, 0, 0)
VALKOINEN = (255, 255, 255)
HARMAA = (128, 128, 128)# Soittimen ominaisuudet
pelaaja_x = 400
pelaaja_y = 500
player_speed = 5# Vihollisen ominaisuudet
vihollinen_x = 400
vihollinen_y = 100
vihollisen_nopeus = 3juoksu = Totta
kello = pygame.time. Kello()sillä aikaa käynnissä:
varten tapahtuma sisään pygame.event.get():
jos event.type == LOPETA:
juoksu = Vääräavaimet = pygame.key.get_pressed()
# Pelaajan liike
jos avaimet[K_LEFT] ja pelaaja_x > 0:
pelaaja_x - = pelaajan_nopeus
jos avaimet[K_RIGHT] ja player_x < screen_width - player_speed:
player_x += player_speed# Päivitä vihollisen sijainti
vihollinen_y += vihollisen_nopeus
jos vihollinen_y > screen_height:
vihollinen_y = -50# Tarkista törmäys
jos pygame. Suora (pelaajax, pelaaja_y, 50, 50).colliderect (pygame. Suora (vihollinen_x, vihollinen_y, 50, 50)):
# Toteuta valintaikkuna tähän
kulkeascreen.fill (MUSTA)
pygame.draw.rect (näyttö, VALKOINEN, (player_x, player_y, 50, 50))
pygame.draw.rect (näyttö, VALKOINEN, (vihollinen_x, vihollinen_y, 50, 50))
pygame.display.flip()
kello.tick(60)
pygame.quit()
Alla on tulos:
Luo dialogilaatikko
Dialogiikkunan toteuttamiseksi sinun on näytettävä se aina, kun pelaaja koskettaa vihollista. Lisää dialog_box muuttuja, joka määrittää, näytetäänkö valintaikkuna vai ei.
Pelisilmukan sisällä, Tarkista törmäys pelaajan ja vihollisen välillä, ja jos tapahtuu törmäys, aseta dialog_box to Totta. Sen ehdon sisällä missä dialog_box On Totta, piirrä harmaa suorakulmio näytölle käyttämällä pygame.draw.rect() edustamaan dialogiruutua.
Luo uusi tiedosto nimeltä dialogi.py ja lisää koodi alla olevilla päivityksillä:
# Dialogiruudun ominaisuudet
dialog_box_width = 400
dialog_box_height = 200
dialog_box_x = (screen_width - dialog_box_width) // 2
dialog_box_y = (näytön_korkeus - dialog_box_height) // 2
dialog_box = Väärä
# ...
sillä aikaa käynnissä:
varten tapahtuma sisään pygame.event.get():
jos event.type == LOPETA:
juoksu = Väärä
avaimet = pygame.key.get_pressed()
# Pelaajan liike
jos avaimet[K_LEFT] ja pelaaja_x > 0:
pelaaja_x - = pelaajan_nopeus
jos avaimet[K_RIGHT] ja player_x < screen_width - player_speed:
player_x += player_speed
# Päivitä vihollisen sijainti
vihollinen_y += vihollisen_nopeus
jos vihollinen_y > screen_height:
vihollinen_y = -50
# Tarkista törmäys
jos pygame. Suora (pelaajax, pelaaja_y, 50, 50).colliderect (pygame. Suora (vihollinen_x, vihollinen_y, 50, 50)):
dialog_box = Totta
screen.fill (MUSTA)
jos dialog_box:
pygame.draw.rect (näyttö, HARMAA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
# Lisää dialogiteksti ja painikkeet tähän
muu:
pygame.draw.rect (näyttö, VALKOINEN, (player_x, player_y, 50, 50))
pygame.draw.rect (näyttö, VALKOINEN, (vihollinen_x, vihollinen_y, 50, 50))
pygame.display.flip()
kello.tick(60)
pygame.quit()
Alla on tulos:
Nyt voit tehdä valintaikkunasta toimivamman ja interaktiivisemman lisäämällä painikkeita ja tekstiä.
Lisää painikkeita Python GUI: n avulla
Voit lisätä painikkeita valintaikkunaan käyttämällä Python GUI -kirjastoa, kuten Pygame GUI tai PySimpleGUI.
Asenna ja tuo pygame_gui moduuli ja luo sitten Pygame GUI -hallinta käyttämällä pygame_gui. UIManger. Luo sen jälkeen painike käyttämällä UIB-painike Python GUI -kirjaston tarjoama luokka.
Lisää pelisilmukan sisällä manager.update (pygame.time.get_ticks() / 1000.0) päivittääksesi GUI-hallinnan ja manager.draw_ui (näyttö) piirtääksesi GUI-elementit näytölle.
Luo uusi tiedosto nimeltä buttons.py ja lisää koodi alla olevilla päivityksillä:
tuonti pygame_gui# Pygame GUI manager
manageri = pygame_gui. UIManager((näytön_leveys, näytön_korkeus))# Luo painike
button_width = 100
button_height = 30
painike_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
painike = pygame_gui.elements. UIB-painike (relative_rect=pygame. Suora (button_x, button_y, button_width, button_height),
teksti ="Klikkaa minua",
johtaja = johtaja)juoksu = Totta
kello = pygame.time. Kello()sillä aikaa käynnissä:
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Väärämanager.process_events (tapahtuma)
avaimet = pygame.key.get_pressed()
# Tarkista törmäys
jos pygame. Suora (pelaajax, pelaaja_y, 50, 50).colliderect (pygame. Suora (vihollinen_x, vihollinen_y, 50, 50)):
dialog_box = Tottascreen.fill (MUSTA)
jos dialog_box:
pygame.draw.rect (näyttö, HARMAA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (näyttö)
muu:
pygame.draw.rect (näyttö, VALKOINEN, (player_x, player_y, 50, 50))
pygame.draw.rect (näyttö, VALKOINEN, (vihollinen_x, vihollinen_y, 50, 50))pygame.display.flip()
kello.tick(60)
pygame.quit()
Alla on tulos:
Näillä muutoksilla painikkeen pitäisi nyt näkyä valintaikkunassa, kun se tulee näkyviin.
Lisää tekstiä Python GUI: lla
Voit näyttää mukautetun tekstin valintaikkunassa käyttämällä Python GUI -kirjaston tarjoamaa tekstitoimintoa.
Määritä fontin ominaisuudet käyttämällä pygame.font. Fontti(). Luo teksti muuttuja halutulla sisällöllä ja renderöi se sitten määritetyllä fontilla ja värillä.
Luo uusi tiedosto nimeltä text.py ja lisää koodi alla olevilla päivityksillä:
# Alusta Pygame GUI Manager
manageri = pygame_gui. UIManager((näytön_leveys, näytön_korkeus))# Määritä fontin ominaisuudet
font = pygame.font. Fontti(Ei mitään, 24)
tekstin_väri = MUSTA# ...
sillä aikaa käynnissä:
# ...jos dialog_box:
pygame.draw.rect (näyttö, HARMAA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))# Lisää tekstiä valintaikkunaan
teksti = "Hei, tervetuloa peliin!"
renderöity_teksti = font.render (teksti, Totta, text_color)
text_rect = renderöity_teksti.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))
screen.blit (renderöity_teksti, teksti_suora)
Alla on tulos:
Sisältää lisäominaisuuksia
Painikkeiden ja tekstin lisäksi on useita muita ominaisuuksia, joita voit harkita Pygamen dialogijärjestelmääsi lisäämistä. Tässä vielä muutama esimerkki:
Hahmon tunteet
Näytä tunteita tai ilmeitä hahmoille dialogin aikana välittääksesi heidän mielialansa tai reaktiot. Tämä voidaan saavuttaa käyttämällä animoituja spritejä tai kuvapeittoja, jotka muuttuvat keskustelun kontekstin mukaan.
Ehdolliset vuoropuhelut
Käytä ehdollisia lauseita käynnistääksesi tiettyjä dialogeja tiettyjen kriteerien, kuten pelaajan edistymisen, aiempien valintojen tai pelin sisäisten tapahtumien, perusteella. Tämä lisää syvyyttä ja yksilöllistä vuorovaikutusta pelaajan toimien perusteella.
Äänestykset
Tehosta dialogijärjestelmän uppoamista sisällyttämällä ääninäyttelijöitä hahmodialogeihin. Toista äänileikkeitä Pygamessa jotka vastaavat valintaikkunassa näkyvää tekstiä antaakseen hahmoille selkeän äänen.
Kun yhdistät nämä lisäominaisuudet, voit luoda dynaamisemman ja mukaansatempaavamman dialogijärjestelmän, joka parantaa pelaajan uppoamista ja tarjoaa ainutlaatuisen pelikokemuksen.
Parhaat käytännöt dialogijärjestelmän lisäämiseksi
Pygameen dialogijärjestelmää toteutettaessa on tärkeää noudattaa tiettyjä parhaita käytäntöjä tehokkuuden, ylläpidettävyyden ja sujuvan pelikokemuksen varmistamiseksi. Tässä on muutamia muita parhaita käytäntöjä, joita kannattaa harkita:
Käytä tietoihin perustuvaa suunnittelua
Tallenna keskustelusisältöä, mukaan lukien tekstiä, puhujatietoja ja dialogivaihtoehtoja, ulkoisiin datatiedostoihin (esim. JSON, XML). Tämä mahdollistaa dialogin sisällön helpon muokkaamisen, lokalisoinnin ja hallinnan ilman koodimuutoksia.
Ota käyttöön Dialogue Manager
Luo oma dialoginhallintaluokka tai -moduuli, joka käsittelee dialogivuorovaikutusten hallinnan logiikkaa. Tämä auttaa pitämään koodin järjestyksessä ja helpottaa ylläpitoa ja laajennettavuutta.
Pelitestaus ja tasapainotus
Testaa ja tasapainota dialogijärjestelmää säännöllisesti varmistaaksesi, että dialogit sujuvat luonnollisesti, valinnoilla on merkityksellisiä seurauksia ja tahdistus on linjassa yleisen pelikokemuksen kanssa. Kerää palautetta pelaajilta ja toista keskustelun sisältöä ja rakennetta parantaaksesi pelaajien sitoutumista.
Lokalisoinnin tuki
Suunnittele dialogijärjestelmä lokalisointia ajatellen alusta alkaen. Erota tekstimerkkijonot koodista ja tue useita kieliä käyttämällä kielitiedostoja tai lokalisointikirjastoja. Tämä mahdollistaa dialogin sisällön helpomman kääntämisen ja lokalisoinnin.
Seuraamalla näitä parhaita käytäntöjä voit varmistaa, että dialogijärjestelmäsi on hyvin suunniteltu, tehokas ja joustava, mikä mahdollistaa helpomman ylläpidon ja päivitykset pelisi kehittyessä.
Tee peleistä kiinnostavampia dialogijärjestelmän avulla
Dialogijärjestelmän lisääminen peliisi voi tehdä siitä kiinnostavamman, koska pelaajat voivat olla vuorovaikutuksessa ei-pelaajahahmojen (NPC: iden) kanssa, paljastaa tarinan, tehdä valintoja ja saada arvokasta tietoa.
Muista suunnitella dialogirakenne harkiten, käyttää modulaarista lähestymistapaa ja harkita keräilyesineitä ja tasoja integroidaksesi pelaajakokemuksen entisestään.