Knihovna Arcade v Pythonu nabízí přímý a efektivní způsob implementace herních úrovní do vašich projektů.
Vývoj her je vzrušující a kreativní proces, který vám umožní uvést vaše nápadité nápady do života. Při navrhování hry je jedním z klíčových prvků, které mohou výrazně zlepšit zážitek hráče, implementace herních úrovní.
Úrovně poskytují strukturu, postup a výzvy a dávají hráčům pocit úspěchu a zapojení, když procházejí různými fázemi hry.
Vytvořte jednoduchou hru
Než začnete, ujistěte se, že máte pip nainstalovaný na vašem zařízení. Tento příkaz použijte k instalaci pasáž knihovna:
pip instalační arkáda
Vytvořte základní hru, kde se hráč může pohybovat doleva a doprava.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Využijte možnosti knihovny Arcade ke zpracování uživatelských vstupů a odpovídajícím způsobem aktualizujte stav hry. Vytvořte nový soubor s názvem jednoduchá hra.py a přidejte níže uvedený kód:
import pasáž
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
arcade.set_background_color (arcade.color. BÍLÝ)
self.player_x = SCREEN_WIDTH // 2defon_draw(já):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arkáda.barva. MODRÝ)defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player_x -= 10
elif klíč == arcade.key. ŽE JO:
self.player_x += 10defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
složitdefhlavní():
hra = MyGame()
arcade.run()
-li __jméno__ == "__hlavní__":
hlavní()
Níže je výstup:
Vytvořte více úrovní
Nyní hru rozšiřte přidáním více úrovní. Každá úroveň bude mít své vlastní jedinečné vlastnosti, které pro hráče poskytnou různé výzvy. Předchozí kód můžete upravit tak, aby zahrnoval další úrovně. Zde je příklad:
třídaPrvní úroveň:
def__init__(já):
self.player_x = SCREEN_WIDTH // 2defAktualizace(já):
složitdefkreslit(já):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arkáda.barva. MODRÝ)třídaDruhá úroveň:
def__init__(já):
self.player_x = SCREEN_WIDTH // 2defAktualizace(já):
složitdefkreslit(já):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arkáda.barva. ČERVENÉ)třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
arcade.set_background_color (arcade.color. BÍLÝ)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0defon_draw(já):
arcade.start_render()
self.levels[self.current_level].draw()defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.levels[self.current_level].player_x -= 10
elif klíč == arcade.key. ŽE JO:
self.levels[self.current_level].player_x += 10defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
složitdefAktualizace(self, delta_time):
self.levels[self.current_level].update()defhlavní():
hra = MyGame()
arcade.run()
-li __jméno__ == "__hlavní__":
hlavní()
Přechod mezi úrovněmi
Chcete-li vytvořit plynulý přechod mezi úrovněmi, zjistěte, kdy hráč překročí určitou hranici. Můžeš sledovat pohyb hráčea jakmile hráč překročí hranici, můžete přejít na další úroveň. Vytvořte nový soubor s názvem přechod-mezi-úrovněmi.py a přidejte kód s níže uvedenými aktualizacemi:
třídaMyGame(pasáž. Okno):
# ...defAktualizace(self, delta_time):
self.levels[self.current_level].update()# Zkontrolujte, zda hráč nepřekročil hranici
-li 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
# ...
Níže je výstup:
Včetně dalších funkcí
Aby byly vaše herní úrovně poutavější, můžete začlenit další funkce, jako jsou vylepšení a cíle.
Cíle
Cíle poskytují konkrétní cíle nebo cíle, kterých má hráč dosáhnout v rámci úrovně. Dodávají pocit smysluplnosti a pokroku. Zde je příklad implementace objektivní funkce:
třídaObjektivní:
def__init__(já, x, y):
self.x = x
self.y = y
vlastní.poloměr = 20defkreslit(já):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ZELENÁ)třídaPrvní úroveň:
def__init__(já):
self.objective = Objective(600, 400)
# ...defAktualizace(já):
# Zkontrolujte, zda hráč dosáhne cíle
-li arcade.check_for_collision (self.player, self.objective):
self.complete_objective()defkreslit(já):
self.objective.draw()
# ...
defúplný_cíl(já):
# Kód pro zvládnutí cíleného dokončení
složit
Sběratelské předměty
Sběratelské předměty jsou předměty nebo bonusy, které hráč může sbírat v průběhu úrovní. Zde je příklad implementace sběratelské funkce:
třídaSběratelský:
def__init__(já, x, y):
self.x = x
self.y = y
vlastní.poloměr = 10
self.is_collected = Nepravdivédefkreslit(já):
-line self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ORANŽOVÝ)defsbírat(já):
self.is_collected = Skutečný
# Kód pro zvládnutí vlivu sběratelského předmětu na hráčetřídaPrvní úroveň:
def__init__(já):
self.collectible = Collectible(300, 300)
# ...defAktualizace(já):
# Zkontrolujte, zda hráč předmět sbírá
-li arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()
defkreslit(já):
self.collectible.draw()
# ...
Překážky
Překážky mohou být statické objekty nebo pohybující se entity, které brání hráči v cestě. Vyžadují od hráče strategii a hledání způsobů, jak je překonat. Zde je příklad implementace funkce překážek:
třídaPřekážka:
def__init__(vlastní, x, y, šířka, výška):
self.x = x
self.y = y
vlastní.šířka = šířka
vlastní.výška = výškadefkreslit(já):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. ŠEDÁ)
třídaPrvní úroveň:
def__init__(já):
self.obstacles = [Překážka(400, 200, 100, 50), Překážka(600, 500, 80, 120)]
# ...
Power-Ups
Power-ups může zlepšit schopnosti hráče nebo poskytnout dočasné výhody. Zde je příklad implementace funkce zapnutí:
třídaPowerUp:
def__init__(já, x, y):
self.x = x
self.y = y
vlastní.poloměr = 10
self.is_active = Skutečnýdefkreslit(já):
-li self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ŽLUTÁ)defactivate_power_up(já):
self.is_active = Skutečnýdefdeactivate_power_up(já):
self.is_active = NepravdivétřídaPrvní úroveň:
def__init__(já):
self.power_up = PowerUp(200, 200)
# ...defAktualizace(já):
# Zkontrolujte, zda přehrávač nekoliduje se zapínáním
-li arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
defkreslit(já):
self.power_up.draw()
# ...
Nejlepší postupy pro návrh úrovní
Design úrovní hraje klíčovou roli při vytváření poutavých a příjemných herních zážitků. Zde je několik osvědčených postupů, které je třeba vzít v úvahu při navrhování úrovní pro vaši hru:
Jasné cíle
Každá úroveň by měla mít jasný cíl nebo cíl, kterého má hráč dosáhnout. Ať už jde o dosažení konkrétního místa, poražení nepřátel nebo řešení hádanek, cíl by měl být dobře definován a sdělen hráči.
Postupná křivka obtížnosti
Navrhujte úrovně s postupným zvyšováním obtížnosti, abyste hráčům poskytli hladkou křivku učení. Začněte s jednoduššími výzvami a postupně zavádějte nové mechaniky nebo překážky, jak hráč postupuje. Náhlé skoky v obtížnosti mohou hráče frustrovat, takže je důležité udržovat vyvážený postup.
Vizuální jasnost
Zajistěte, aby design úrovní a vizuální prvky jasně sdělovaly důležité informace hráči. Začlenění hudby a zvukových efektů může také zprostředkovat zásadní vodítka a poskytnout hráči základní informace.
Playtesting a iterace
Pravidelné testování hry je nezbytné pro dolaďování a zlepšování designu úrovní. Získejte zpětnou vazbu od hráčů a sledujte jejich zkušenosti, abyste identifikovali oblasti, které mohou vyžadovat úpravy. Opakujte svůj návrh úrovní na základě této zpětné vazby, abyste vytvořili zábavnější a vyváženější hru.
Vyvážená odměna a výzva
Odměňujte hráče za překonání výzev ve vašich úrovních. Toho lze dosáhnout pomocí vylepšení, sběratelských předmětů, odemykání nových oblastí nebo narativního postupu. Vyvážení obtížnosti výzev se smysluplnými odměnami pomáhá motivovat hráče a poskytuje pocit úspěchu.
Udělejte hry poutavějšími s úrovněmi
Implementací herních úrovní můžete zlepšit celkový hráčský zážitek a vytvořit poutavější herní prostředí. Úrovně poskytují postup, výzvu a rozmanitost, udržují hráče investované a motivované. Umožňují vám představit nové mechanismy, překážky, nepřátele a odměny, což zajišťuje, že každá úroveň bude vypadat odlišně a vzrušující.