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 = 600

instagram viewer

tří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 // 2

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

defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
složit

defhlavní():
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 // 2

defAktualizace(já):
složit

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

defAktualizace(já):
složit

defkreslit(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 = 0

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

defon_key_release(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET nebo klíč == arcade.key. ŽE JO:
složit

defAktualizace(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 = 20

defkreslit(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áče

tří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ýška

defkreslit(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í.