Knižnica Arcade v Pythone ponúka priamy a efektívny spôsob implementácie herných úrovní do vašich projektov.

Vývoj hier je vzrušujúci a kreatívny proces, ktorý vám umožní uviesť vaše nápadité nápady do života. Pri navrhovaní hry je jedným z kľúčových prvkov, ktoré môžu výrazne zlepšiť zážitok hráča, implementácia herných úrovní.

Úrovne poskytujú štruktúru, postup a výzvy a dávajú hráčom pocit úspechu a angažovanosti, keď prechádzajú rôznymi fázami hry.

Vytvorte jednoduchú hru

Pred začatím sa uistite, že máte pip nainštalovaný na vašom zariadení. Tento príkaz použite na inštaláciu pasáž knižnica:

arkáda na inštaláciu pipu

Vytvorte základnú hru, v ktorej sa hráč môže pohybovať doľava a doprava.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

Využite možnosti knižnice Arcade na spracovanie používateľských vstupov a podľa toho aktualizujte stav hry. Vytvorte nový súbor s názvom jednoduchá hra.py a pridajte nižšie uvedený kód:

instagram viewer
importovať pasáž

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

triedaMyGame(arkáda. okno):
def__init__(ja):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja hra")
arcade.set_background_color (arcade.color. BIELY)
self.player_x = SCREEN_WIDTH // 2

defon_draw(ja):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. MODRÁ)

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= 10
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += 10

defon_key_release(ja, kľúč, modifikátory):
ak kľúč == arcade.key. LEFT alebo kľúč == arcade.key. SPRÁVNY:
prejsť

defHlavná():
hra = MyGame()
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Nižšie je výstup:

Vytvorte viacero úrovní

Teraz rozšírte hru pridaním viacerých úrovní. Každá úroveň bude mať svoje vlastné jedinečné vlastnosti a poskytne hráčovi rôzne výzvy. Predchádzajúci kód môžete upraviť tak, aby obsahoval ďalšie úrovne. Tu je príklad:

triedaLevel One:
def__init__(ja):
self.player_x = SCREEN_WIDTH // 2

defaktualizovať(ja):
prejsť

defkresliť(ja):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. MODRÁ)

triedaDruhá úroveň:
def__init__(ja):
self.player_x = SCREEN_WIDTH // 2

defaktualizovať(ja):
prejsť

defkresliť(ja):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. ČERVENÁ)

triedaMyGame(arkáda. okno):
def__init__(ja):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja hra")
arcade.set_background_color (arcade.color. BIELY)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0

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

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.levels[self.current_level].player_x -= 10
elif kľúč == arcade.key. SPRÁVNY:
self.levels[self.current_level].player_x += 10

defon_key_release(ja, kľúč, modifikátory):
ak kľúč == arcade.key. LEFT alebo kľúč == arcade.key. SPRÁVNY:
prejsť

defaktualizovať(self, delta_time):
self.levels[self.current_level].update()

defHlavná():
hra = MyGame()
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Prechod medzi úrovňami

Ak chcete vytvoriť plynulý prechod medzi úrovňami, zistite, kedy hráč prekročí určitú hranicu. Môžeš sledovať pohyb hráčaa keď hráč prekročí hranicu, môžete prejsť na ďalšiu úroveň. Vytvorte nový súbor s názvom prechod-medzi-úrovňami.py a pridajte kód s nižšie uvedenými aktualizáciami:

triedaMyGame(arkáda. okno):
# ...

defaktualizovať(self, delta_time):
self.levels[self.current_level].update()

# Skontrolujte, či hráč neprekročil hranicu
ak 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 = SCREEN_WIDTH
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

# ...

Nižšie je výstup:

Vrátane ďalších funkcií

Aby boli vaše herné úrovne pútavejšie, môžete začleniť ďalšie funkcie, ako sú vylepšenia a ciele.

Ciele

Ciele poskytujú konkrétne ciele alebo ciele, ktoré má hráč dosiahnuť v rámci úrovne. Dodávajú zmysel pre účel a pokrok. Tu je príklad implementácie objektívnej funkcie:

triedaCieľ:
def__init__(ja, x, y):
self.x = x
self.y = y
vlastný.polomer = 20

defkresliť(ja):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ZELENÁ)

triedaLevel One:
def__init__(ja):
self.objective = Objective(600, 400)
# ...

defaktualizovať(ja):
# Skontrolujte, či hráč dosiahne cieľ
ak arcade.check_for_collision (self.player, self.objective):
self.complete_objective()

defkresliť(ja):
self.objective.draw()
# ...

defúplný_cieľ(ja):
# Kód na zvládnutie objektívneho dokončenia
prejsť

Zberateľské predmety

Zberateľské predmety sú predmety alebo bonusy, ktoré môže hráč zbierať počas jednotlivých úrovní. Tu je príklad implementácie zberateľskej funkcie:

triedaZberateľské:
def__init__(ja, x, y):
self.x = x
self.y = y
vlastný.polomer = 10
self.is_collectected = Nepravdivé

defkresliť(ja):
aknie self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ORANŽOVÁ)

defzbierať(ja):
self.is_collectected = Pravda
# Kód na zvládnutie vplyvu zberateľského predmetu na hráča

triedaLevel One:
def__init__(ja):
self.collectible = Collectible(300, 300)
# ...

defaktualizovať(ja):
# Skontrolujte, či hráč zbiera položku
ak arcade.check_for_collision (vlastný hráč, vlastný zberateľský predmet):
self.collectible.collect()

defkresliť(ja):
self.collectible.draw()
# ...

Prekážky

Prekážkami môžu byť statické objekty alebo pohybujúce sa entity, ktoré bránia hráčovi v ceste. Vyžadujú od hráča stratégiu a hľadanie spôsobov, ako ich prekonať. Tu je príklad implementácie funkcie prekážok:

triedaPrekážka:
def__init__(ja, x, y, šírka, výška):
self.x = x
self.y = y
self.width = šírka
seba.výška = výška

defkresliť(ja):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. ŠEDÁ)

triedaLevel One:
def__init__(ja):
self.obstacles = [Prekážka(400, 200, 100, 50), Prekážka (600, 500, 80, 120)]
# ...

Power-Ups

Vylepšenia môžu zlepšiť schopnosti hráča alebo poskytnúť dočasné výhody. Tu je príklad implementácie funkcie zapnutia:

triedaPowerUp:
def__init__(ja, x, y):
self.x = x
self.y = y
vlastný.polomer = 10
self.is_active = Pravda

defkresliť(ja):
ak self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ŽLTÁ)

defactivate_power_up(ja):
self.is_active = Pravda

defdeactivate_power_up(ja):
self.is_active = Nepravdivé

triedaLevel One:
def__init__(ja):
self.power_up = PowerUp(200, 200)
# ...

defaktualizovať(ja):
# Skontrolujte, či prehrávač nekoliduje so zapínaním
ak arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()

defkresliť(ja):
self.power_up.draw()
# ...

Najlepšie postupy pre návrh úrovne

Dizajn úrovní hrá kľúčovú úlohu pri vytváraní pútavých a príjemných herných zážitkov. Tu je niekoľko osvedčených postupov, ktoré je potrebné zvážiť pri navrhovaní úrovní pre vašu hru:

Jasné ciele

Každá úroveň by mala mať jasný cieľ alebo cieľ, ktorý má hráč dosiahnuť. Či už ide o dosiahnutie konkrétneho miesta, porážku nepriateľov alebo riešenie hádaniek, cieľ by mal byť dobre definovaný a oznámený hráčovi.

Postupná krivka obtiažnosti

Navrhnite úrovne s postupným zvyšovaním obtiažnosti, aby ste hráčom poskytli plynulé učenie. Začnite s jednoduchšími výzvami a postupne s postupom hráča predstavujte nové mechaniky alebo prekážky. Náhle skoky v obtiažnosti môžu hráčov frustrovať, preto je dôležité udržiavať vyvážený postup.

Vizuálna čistota

Zabezpečte, aby dizajn úrovní a vizuálne prvky jasne oznamovali hráčovi dôležité informácie. Zahŕňa hudbu a zvukové efekty môže tiež sprostredkovať kľúčové stopy a poskytnúť hráčovi základné informácie.

Playtesting a iterácia

Pravidelné testovanie hier je nevyhnutné pre dolaďovanie a zlepšovanie dizajnu úrovní. Získajte spätnú väzbu od hráčov a sledujte ich skúsenosti, aby ste identifikovali oblasti, ktoré môžu vyžadovať úpravy. Opakujte svoj dizajn úrovní na základe tejto spätnej väzby, aby ste vytvorili príjemnejšiu a vyváženejšiu hru.

Vyvážiť odmenu a výzvu

Odmeňte hráčov za prekonanie výziev na vašich úrovniach. Dá sa to dosiahnuť pomocou vylepšení, zberateľských predmetov, odomykania nových oblastí alebo naratívneho postupu. Vyváženie náročnosti výziev so zmysluplnými odmenami pomáha motivovať hráčov a poskytuje pocit úspechu.

Urobte hry pútavejšie s úrovňami

Implementáciou herných úrovní môžete zlepšiť celkový zážitok hráča a vytvoriť pútavejšie herné prostredie. Úrovne poskytujú postup, výzvy a rozmanitosť, vďaka čomu sú hráči investovaní a motivovaní. Umožňujú vám predstaviť novú mechaniku, prekážky, nepriateľov a odmeny, čím zaisťujú, že každá úroveň bude odlišná a vzrušujúca.