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:

instagram viewer
tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

luokkaaMyGame(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 // 2

defon_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 += 10

defon_key_release(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN tai avain == arcade.key. OIKEALLA:
kulkea

defpää():
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 // 2

defpäivittää(itse):
kulkea

defpiirtää(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 // 2

defpäivittää(itse):
kulkea

defpiirtää(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 = 0

defon_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 += 10

defon_key_release(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN tai avain == arcade.key. OIKEALLA:
kulkea

defpä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 = 20

defpiirtää(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 pelaajaan

luokkaaTaso 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 = korkeus

defpiirtää(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 = Totta

defpiirtää(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 = Totta

defdeactivate_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ä.