Pythonin Arcade-kirjasto tarjoaa suoraviivaisen ja tehokkaan tavan toteuttaa pelitasoja projekteissasi.
Pelikehitys on jännittävä ja luova prosessi, jonka avulla voit toteuttaa mielikuvituksellisia ideoitasi. Peliä suunniteltaessa yksi avainelementeistä, joka voi parantaa huomattavasti pelaajakokemusta, on pelitasojen toteuttaminen.
Tasot tarjoavat rakennetta, etenemistä ja haasteita antaen pelaajille saavutuksen ja sitoutumisen tunteen heidän navigoidessaan pelin eri vaiheissa.
Luo yksinkertainen peli
Ennen kuin aloitat, varmista, että sinulla on pip asennettuna laitteellesi. Käytä tätä komentoa asentaaksesi pelihalli kirjasto:
pip asennus arcade
Luo peruspeli, jossa pelaaja voi liikkua vasemmalle ja oikealle.
Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
Käytä Arcade-kirjaston ominaisuuksia käsitelläksesi käyttäjän syötteitä ja päivittääksesi pelin tilan vastaavasti. Luo uusi tiedosto nimeltä simple-game.py ja lisää alla oleva koodi:
tuonti pelihalli
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minun pelini")
arcade.set_background_color (arcade.color. VALKOINEN)
self.player_x = SCREEN_WIDTH // 2defon_draw(itse):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. SININEN)defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= 10
elif avain == arcade.key. OIKEALLA:
self.player_x += 10defon_key_release(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN tai avain == arcade.key. OIKEALLA:
kulkeadefpää():
peli = OmaPeli()
arcade.run()
jos __nimi__ == "__main__":
pää()
Alla on tulos:
Luo useita tasoja
Laajenna nyt peliä lisäämällä useita tasoja. Jokaisella tasolla on omat ainutlaatuiset ominaisuutensa, jotka tarjoavat pelaajalle erilaisia haasteita. Voit muokata edellistä koodia lisäämään tasoja. Tässä on esimerkki:
luokkaaTaso yksi:
def__sen sisällä__(itse):
self.player_x = SCREEN_WIDTH // 2defpäivittää(itse):
kulkeadefpiirtää(itse):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. SININEN)luokkaaTaso Kaksi:
def__sen sisällä__(itse):
self.player_x = SCREEN_WIDTH // 2defpäivittää(itse):
kulkeadefpiirtää(itse):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. PUNAINEN)luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minun pelini")
arcade.set_background_color (arcade.color. VALKOINEN)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0defon_draw(itse):
arcade.start_render()
self.levels[self.current_level].draw()defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.levels[self.current_level].player_x -= 10
elif avain == arcade.key. OIKEALLA:
self.levels[self.current_level].player_x += 10defon_key_release(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN tai avain == arcade.key. OIKEALLA:
kulkeadefpäivittää(itse, delta_aika):
self.levels[self.current_level].update()defpää():
peli = OmaPeli()
arcade.run()
jos __nimi__ == "__main__":
pää()
Tasojen välinen siirtyminen
Luo tasainen siirtyminen tasojen välillä havaitsemalla, milloin pelaaja ylittää tietyn rajan. Sinä pystyt seurata pelaajan liikettä, ja kun pelaaja ylittää rajan, voit siirtyä seuraavalle tasolle. Luo uusi tiedosto nimeltä Transitio-between-levels.py ja lisää koodi alla olevilla päivityksillä:
luokkaaMyGame(pelihalli. Ikkuna):
# ...defpäivittää(itse, delta_aika):
self.levels[self.current_level].update()# Tarkista, ylittikö pelaaja rajan
jos self.levels[self.current_level].player_x < 0:
self.current_level += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = NÄYTTÖLEVEYS
elif self.levels[self.current_level].player_x > SCREEN_WIDTH:
self.current_level += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = 0
# ...
Alla on tulos:
Sisältää lisäominaisuuksia
Voit tehdä pelitasoistasi kiinnostavampia sisällyttämällä siihen lisäominaisuuksia, kuten tehostuksia ja tavoitteita.
Tavoitteet
Tavoitteet tarjoavat tietyt tavoitteet tai tavoitteet, jotka pelaaja voi saavuttaa tietyllä tasolla. Ne lisäävät tarkoituksen ja edistyksen tunnetta. Tässä on esimerkki objektiivisen ominaisuuden käyttöönotosta:
luokkaaTavoite:
def__sen sisällä__(itse, x, y):
itse.x = x
itse.y = y
itse.säde = 20defpiirtää(itse):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. VIHREÄ)luokkaaTaso yksi:
def__sen sisällä__(itse):
self.objective = Objective(600, 400)
# ...defpäivittää(itse):
# Tarkista, saavuttaako pelaaja tavoitteen
jos arcade.check_for_collision (self.player, self.objective):
self.complete_objective()defpiirtää(itse):
self.objective.draw()
# ...
deftäydellinen_tavoite(itse):
# Koodi objektiivisen valmistumisen käsittelemiseksi
kulkea
Keräilykohteet
Keräilykohteet ovat esineitä tai bonuksia, joita pelaaja voi kerätä tasoilla. Tässä on esimerkki keräilyominaisuuden käyttöönotosta:
luokkaaKeräilykelpoinen:
def__sen sisällä__(itse, x, y):
itse.x = x
itse.y = y
itse.säde = 10
self.is_colected = Väärädefpiirtää(itse):
josei self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ORANSSI)defkerätä(itse):
self.is_colected = Totta
# Koodi käsittelemään keräilyesineen vaikutusta pelaajaanluokkaaTaso yksi:
def__sen sisällä__(itse):
self.collectible = Kerättävä(300, 300)
# ...defpäivittää(itse):
# Tarkista, kerääkö pelaaja esineen
jos arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()
defpiirtää(itse):
self.collectible.draw()
# ...
Esteet
Esteet voivat olla staattisia esineitä tai liikkuvia kokonaisuuksia, jotka estävät pelaajan polun. Ne edellyttävät pelaajalta strategioita ja tapoja voittaa ne. Tässä on esimerkki estetoiminnon käyttöönotosta:
luokkaaEste:
def__sen sisällä__(itse, x, y, leveys, korkeus):
itse.x = x
itse.y = y
self.width = leveys
itse.korkeus = korkeusdefpiirtää(itse):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. HARMAA)
luokkaaTaso yksi:
def__sen sisällä__(itse):
self.obstacles = [Este(400, 200, 100, 50), Este(600, 500, 80, 120)]
# ...
Tehostukset
Tehostukset voivat parantaa pelaajan kykyjä tai tarjota tilapäisiä etuja. Tässä on esimerkki käynnistysominaisuuden käyttöönotosta:
luokkaaKäynnistää:
def__sen sisällä__(itse, x, y):
itse.x = x
itse.y = y
itse.säde = 10
self.is_active = Tottadefpiirtää(itse):
jos self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. KELTAINEN)defactivate_power_up(itse):
self.is_active = Tottadefdeactivate_power_up(itse):
self.is_active = VääräluokkaaTaso yksi:
def__sen sisällä__(itse):
self.power_up = PowerUp(200, 200)
# ...defpäivittää(itse):
# Tarkista, törmääkö soitin virransyöttöön
jos arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
defpiirtää(itse):
self.power_up.draw()
# ...
Tasosuunnittelun parhaat käytännöt
Tasosuunnittelulla on ratkaiseva rooli kiinnostavien ja nautinnollisten pelikokemusten luomisessa. Tässä on joitain parhaita käytäntöjä, jotka on otettava huomioon suunniteltaessa tasoja pelillesi:
Selkeät tavoitteet
Jokaisella tasolla tulee olla selkeä tavoite tai tavoite, jonka pelaaja saavuttaa. Oli kyseessä sitten tiettyyn paikkaan pääseminen, vihollisten lyöminen tai pulmien ratkaiseminen, tavoitteen tulee olla hyvin määritelty ja viestiä pelaajalle.
Asteittainen vaikeuskäyrä
Suunnittelutasot, joiden vaikeusaste kasvaa asteittain, jotta pelaajat saavat sujuvan oppimiskäyrän. Aloita yksinkertaisemmilla haasteilla ja ota vähitellen käyttöön uusia mekaniikkoja tai esteitä pelaajan edetessä. Äkilliset vaikeuspiikit voivat turhauttaa pelaajia, joten on tärkeää säilyttää tasapainoinen eteneminen.
Visuaalinen selkeys
Varmista, että tasosuunnittelu ja visuaaliset elementit välittävät pelaajalle selkeästi tärkeitä tietoja. Sisältää musiikkia ja äänitehosteita voi myös välittää tärkeitä vihjeitä ja antaa tärkeitä tietoja pelaajalle.
Pelitestaus ja iteraatio
Säännöllinen pelitestaus on välttämätöntä tasosuunnittelun jalostamiseksi ja parantamiseksi. Kerää palautetta pelaajilta ja tarkkaile heidän kokemuksiaan tunnistaaksesi alueet, jotka saattavat vaatia muutoksia. Toista tasosuunnitteluasi tämän palautteen perusteella luodaksesi nautinnollisempaa ja tasapainoisempaa peliä.
Tasapainota palkinto ja haaste
Palkitse pelaajia haasteiden voittamisesta tasoillasi. Tämä voidaan saavuttaa tehostuksilla, keräilyesineillä, uusien alueiden avaamisella tai tarinan etenemisellä. Haasteiden vaikeuden tasapainottaminen mielekkäiden palkintojen kanssa auttaa motivoimaan pelaajia ja antaa onnistumisen tunteen.
Tee peleistä kiinnostavampia tasoilla
Toteuttamalla pelitasoja voit parantaa yleistä pelaajakokemusta ja luoda kiinnostavamman peliympäristön. Tasot tarjoavat edistymistä, haasteita ja vaihtelua pitäen pelaajat motivoituneena. Niiden avulla voit esitellä uusia mekaniikkoja, esteitä, vihollisia ja palkintoja varmistaen, että jokainen taso tuntuu erilliseltä ja jännittävältä.