Pythonova knjižnica Arcade ponuja preprost in učinkovit način za implementacijo nivojev iger v vaše projekte.

Razvoj iger je vznemirljiv in ustvarjalen proces, ki vam omogoča, da svoje domiselne zamisli oživite. Pri načrtovanju igre je eden od ključnih elementov, ki lahko močno izboljša izkušnjo igralca, implementacija nivojev igre.

Ravni zagotavljajo strukturo, napredovanje in izzive, kar daje igralcem občutek dosežka in angažiranosti, ko krmarijo skozi različne faze igre.

Ustvari preprosto igro

Preden začnete, se prepričajte, da imate pip nameščen v vaši napravi. S tem ukazom namestite arkada knjižnica:

pip install arkada

Ustvarite osnovno igro, kjer se lahko igralec premika levo in desno.

Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Uporabite zmožnosti knjižnice Arcade za obdelavo uporabniškega vnosa in ustrezno posodobite stanje igre. Ustvari novo datoteko z imenom simple-game.py in dodajte spodnjo kodo:

uvoz arkada

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

instagram viewer

razredMyGame(arkadne. okno):
def__v__(sebe):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja igra")
arcade.set_background_color (arcade.color. BELA)
self.player_x = SCREEN_WIDTH // 2

defon_draw(sebe):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. MODRA)

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= 10
elif ključ == arcade.key. PRAV:
self.player_x += 10

defon_key_release(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO oz ključ == arcade.key. PRAV:
prehod

defglavni():
igra = MojaIgra()
arcade.run()

če __ime__ == "__glavni__":
glavni ()

Spodaj je rezultat:

Ustvarite več ravni

Zdaj razširite igro z dodajanjem več ravni. Vsaka raven bo imela svoje edinstvene značilnosti, ki igralcu ponujajo različne izzive. Prejšnjo kodo lahko spremenite tako, da vključuje dodatne ravni. Tukaj je primer:

razredLevelOne:
def__v__(sebe):
self.player_x = SCREEN_WIDTH // 2

defnadgradnja(sebe):
prehod

defpripraviti(sebe):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. MODRA)

razredLevelTwo:
def__v__(sebe):
self.player_x = SCREEN_WIDTH // 2

defnadgradnja(sebe):
prehod

defpripraviti(sebe):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. RDEČA)

razredMyGame(arkadne. okno):
def__v__(sebe):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja igra")
arcade.set_background_color (arcade.color. BELA)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0

defon_draw(sebe):
arcade.start_render()
self.levels[self.current_level].draw()

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.levels[self.current_level].player_x -= 10
elif ključ == arcade.key. PRAV:
self.levels[self.current_level].player_x += 10

defon_key_release(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO oz ključ == arcade.key. PRAV:
prehod

defnadgradnja(sam, delta_time):
self.levels[self.current_level].update()

defglavni():
igra = MojaIgra()
arcade.run()

če __ime__ == "__glavni__":
glavni ()

Prehod med nivoji

Če želite ustvariti gladek prehod med nivoji, zaznajte, kdaj igralec prestopi določeno mejo. Ti lahko spremljanje gibanja igralca, in ko igralec prestopi mejo, lahko preklopite na naslednjo stopnjo. Ustvari novo datoteko z imenom prehod-med-ravnimi.py in dodajte kodo s spodnjimi posodobitvami:

razredMyGame(arkadne. okno):
# ...

defnadgradnja(sam, delta_time):
self.levels[self.current_level].update()

# Preverite, ali je igralec prestopil mejo
če self.levels[self.current_level].player_x < 0:
samo.trenutna_raven += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = SCREEN_WIDTH
elif self.levels[self.current_level].player_x > SCREEN_WIDTH:
samo.trenutna_raven += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = 0

# ...

Spodaj je rezultat:

Vključno z dodatnimi funkcijami

Če želite, da bodo ravni vaše igre bolj privlačne, lahko vključite dodatne funkcije, kot so okrepitve in cilji.

Cilji

Cilji ponujajo določene cilje ali cilje, ki jih mora igralec doseči na ravni. Dodajajo občutek namena in napredka. Tukaj je primer izvajanja objektivne funkcije:

razredCilj:
def__v__(jaz, x, y):
sam.x = x
self.y = y
self.radius = 20

defpripraviti(sebe):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ZELENA)

razredLevelOne:
def__v__(sebe):
self.objective = Cilj(600, 400)
# ...

defnadgradnja(sebe):
# Preverite, ali igralec doseže cilj
če arcade.check_for_collision (self.player, self.objective):
self.complete_objective()

defpripraviti(sebe):
self.objective.draw()
# ...

defpopoln_cilj(sebe):
# Koda za obdelavo izpolnitve cilja
prehod

Zbirateljski predmeti

Zbirateljski predmeti so predmeti ali bonusi, ki jih lahko igralec zbira na stopnjah. Tu je primer izvajanja zbirateljske funkcije:

razredZbirateljsko:
def__v__(jaz, x, y):
sam.x = x
self.y = y
self.radius = 10
self.is_collected = False

defpripraviti(sebe):
čene self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ORANŽNA)

defzbirati(sebe):
self.is_collected = Prav
# Koda za upravljanje učinka zbirateljskega predmeta na igralca

razredLevelOne:
def__v__(sebe):
self.collectible = Zbirateljsko(300, 300)
# ...

defnadgradnja(sebe):
# Preverite, ali igralec prevzame predmet
če arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()

defpripraviti(sebe):
self.collectible.draw()
# ...

Ovire

Ovire so lahko statični predmeti ali premikajoče se entitete, ki ovirajo igralčevo pot. Od igralca zahtevajo strategijo in iskanje načinov, kako jih premagati. Tu je primer implementacije funkcije ovir:

razredOvira:
def__v__(jaz, x, y, širina, višina):
sam.x = x
self.y = y
self.width = širina
self.height = višina

defpripraviti(sebe):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. SIVA)

razredLevelOne:
def__v__(sebe):
self.obstacles = [Ovira(400, 200, 100, 50), ovira (600, 500, 80, 120)]
# ...

Okrepitve

Ojačanja lahko izboljšajo igralčeve sposobnosti ali zagotovijo začasne prednosti. Tukaj je primer implementacije funkcije vklopa:

razredPrižgi:
def__v__(jaz, x, y):
sam.x = x
self.y = y
self.radius = 10
self.is_active = Prav

defpripraviti(sebe):
če self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. RUMENA)

defactivate_power_up(sebe):
self.is_active = Prav

defdeaktiviraj_power_up(sebe):
self.is_active = False

razredLevelOne:
def__v__(sebe):
self.power_up = PowerUp(200, 200)
# ...

defnadgradnja(sebe):
# Preverite, ali igralec trči z vklopom
če arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()

defpripraviti(sebe):
self.power_up.draw()
# ...

Najboljše prakse za načrtovanje ravni

Oblikovanje nivojev igra ključno vlogo pri ustvarjanju privlačnih in prijetnih izkušenj igranja. Tukaj je nekaj najboljših praks, ki jih morate upoštevati pri načrtovanju ravni za svojo igro:

Jasni cilji

Vsaka raven mora imeti jasen cilj ali cilj, ki ga mora igralec doseči. Ne glede na to, ali gre za dosego določene lokacije, premagovanje sovražnikov ali reševanje ugank, mora biti cilj dobro definiran in sporočen igralcu.

Postopna krivulja težavnosti

Oblikujte ravni s postopnim povečevanjem težavnosti, da zagotovite gladko krivuljo učenja za igralce. Začnite s preprostejšimi izzivi in ​​postopoma uvajajte nove mehanike ali ovire, ko igralec napreduje. Nenadni skoki v težavah lahko frustrirajo igralce, zato je pomembno ohraniti uravnoteženo napredovanje.

Vizualna jasnost

Zagotovite, da zasnova ravni in vizualni elementi jasno sporočajo pomembne informacije igralcu. Vključuje glasbo in zvočne učinke lahko posreduje tudi ključne namige in igralcu zagotovi bistvene informacije.

Testiranje predvajanja in ponovitev

Redno testiranje igranja je bistvenega pomena za izboljšanje in izboljšanje zasnove ravni. Zberite povratne informacije igralcev in opazujte njihove izkušnje, da prepoznate področja, ki bodo morda zahtevala prilagoditve. Ponovite svojo zasnovo ravni na podlagi teh povratnih informacij, da ustvarite bolj prijetno in uravnoteženo igranje.

Ravnotežje med nagrado in izzivom

Nagradite igralce za premagovanje izzivov na vaših ravneh. To je mogoče doseči z okrepitvami, zbirateljskimi predmeti, odklepanjem novih področij ali napredovanjem pripovedi. Uravnoteženje težavnosti izzivov s pomembnimi nagradami pomaga motivirati igralce in daje občutek dosežka.

Naredite igre bolj privlačne z ravnmi

Z uvedbo nivojev igre lahko izboljšate splošno izkušnjo igralca in ustvarite bolj privlačno igralno okolje. Ravni zagotavljajo napredovanje, izziv in raznolikost, zaradi česar so igralci vloženi in motivirani. Omogočajo vam, da uvedete nove mehanike, ovire, sovražnike in nagrade, s čimer zagotovite, da je vsaka stopnja razločna in vznemirljiva.