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:
importovať pasáž
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600triedaMyGame(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 // 2defon_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 += 10defon_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 // 2defaktualizovať(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 // 2defaktualizovať(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 = 0defon_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 += 10defon_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 = 20defkresliť(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áčatriedaLevel 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ýškadefkresliť(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 = Pravdadefkresliť(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 = Pravdadefdeactivate_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.