A Python Arcade könyvtára egyszerű és hatékony módot kínál a játékszintek megvalósítására a projektekben.

A játékfejlesztés egy izgalmas és kreatív folyamat, amely lehetővé teszi fantáziadús ötleteidet életre kelteni. A játék megtervezésekor az egyik kulcselem, amely nagyban javíthatja a játékos élményét, a játékszintek megvalósítása.

A szintek szerkezetet, fejlődést és kihívásokat biztosítanak, így a játékosok sikerélményt és elkötelezettséget biztosítanak a játék különböző szakaszaiban való navigálás során.

Hozzon létre egy egyszerű játékot

Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik pip telepítve van a készülékére. Ezzel a paranccsal telepítheti a árkád könyvtár:

pip install arcade

Hozz létre egy alapjátékot, amelyben a játékos balra és jobbra mozoghat.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Használja ki az Arcade könyvtár képességeit a felhasználói bevitel kezelésére, és ennek megfelelően frissítse a játék állapotát. Hozzon létre egy új nevű fájlt simple-game.py és add hozzá az alábbi kódot:

instagram viewer
import árkád

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

osztályAz én játékom(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)
self.player_x = SCREEN_WIDTH // 2

defon_draw(maga):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. KÉK)

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= 10
elif kulcs == arcade.key. JOBB:
self.player_x += 10

defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL vagy kulcs == arcade.key. JOBB:
pass

deffő-():
játék = SajátJáték()
arcade.run()

ha __név__ == "__fő__":
fő()

Alább látható a kimenet:

Hozzon létre több szintet

Most bővítse ki a játékot több szint hozzáadásával. Minden szintnek megvannak a saját egyedi jellemzői, amelyek különböző kihívásokat jelentenek a játékos számára. Módosíthatja az előző kódot, hogy további szinteket tartalmazzon. Íme egy példa:

osztályEgyes szint:
def__benne__(maga):
self.player_x = SCREEN_WIDTH // 2

deffrissítés(maga):
pass

defhúz(maga):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. KÉK)

osztályLevelTwo:
def__benne__(maga):
self.player_x = SCREEN_WIDTH // 2

deffrissítés(maga):
pass

defhúz(maga):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. PIROS)

osztályAz én játékom(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0

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

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.levels[self.current_level].player_x -= 10
elif kulcs == arcade.key. JOBB:
self.levels[self.current_level].player_x += 10

defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL vagy kulcs == arcade.key. JOBB:
pass

deffrissítés(self, delta_time):
self.levels[self.current_level].update()

deffő-():
játék = SajátJáték()
arcade.run()

ha __név__ == "__fő__":
fő()

Szintek közötti átmenet

A szintek közötti zökkenőmentes átmenet létrehozásához észlelje, ha a játékos átlép egy adott határt. tudsz követni a játékos mozgását, és ha a játékos átlépi a határt, válthat a következő szintre. Hozzon létre egy új nevű fájlt Transit-beween-levels.py és adja hozzá a kódot az alábbi frissítésekkel:

osztályAz én játékom(árkád. Ablak):
# ...

deffrissítés(self, delta_time):
self.levels[self.current_level].update()

# Ellenőrizze, hogy a játékos átlépte-e a határt
ha 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

# ...

Alább látható a kimenet:

Kiegészítő funkciókkal együtt

A játékszintek vonzóbbá tételéhez további funkciókat is beépíthet, mint például a teljesítménynövelések és a célok.

Célok

A célok konkrét célokat vagy célokat adnak a játékos számára, amelyeket egy szinten belül teljesíteni kell. Hozzáadják a cél és a haladás érzését. Íme egy példa egy objektív jellemző megvalósítására:

osztályCélkitűzés:
def__benne__(én, x, y):
önmaga.x = x
self.y = y
én.sugár = 20

defhúz(maga):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ZÖLD)

osztályEgyes szint:
def__benne__(maga):
self.objective = Objective(600, 400)
# ...

deffrissítés(maga):
# Ellenőrizze, hogy a játékos elérte-e a célt
ha arcade.check_for_collision (self.player, self.objective):
self.complete_objective()

defhúz(maga):
self.objective.draw()
# ...

defteljes_cél(maga):
# Kód az objektív befejezés kezelésére
pass

Gyűjtemény

A gyűjthető tárgyak vagy bónuszok, amelyeket a játékos gyűjthet a szintek során. Íme egy példa egy gyűjthető funkció megvalósítására:

osztályGyűjthető:
def__benne__(én, x, y):
önmaga.x = x
self.y = y
én.sugár = 10
self.is_collected = Hamis

defhúz(maga):
hanem self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. NARANCS)

defgyűjt(maga):
self.is_collected = Igaz
# Kód, amellyel kezelheti a gyűjtemény játékosra gyakorolt ​​hatását

osztályEgyes szint:
def__benne__(maga):
self.collectible = Gyűjthető(300, 300)
# ...

deffrissítés(maga):
# Ellenőrizze, hogy a játékos begyűjti-e a tárgyat
ha arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()

defhúz(maga):
self.collectible.draw()
# ...

Akadályok

Az akadályok lehetnek statikus tárgyak vagy mozgó entitások, amelyek akadályozzák a játékos útját. Megkövetelik a játékostól, hogy stratégiát dolgozzon ki, és találjon módokat ezek leküzdésére. Íme egy példa az akadályok funkció megvalósítására:

osztályAkadály:
def__benne__(saját, x, y, szélesség, magasság):
önmaga.x = x
self.y = y
self.width = szélesség
self.height = magasság

defhúz(maga):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. SZÜRKE)

osztályEgyes szint:
def__benne__(maga):
self.obstacles = [Akadály(400, 200, 100, 50), Akadály(600, 500, 80, 120)]
# ...

Power-Ups

A feljavítások javíthatják a játékos képességeit, vagy átmeneti előnyöket biztosíthatnak. Íme egy példa a bekapcsolási funkció megvalósítására:

osztályBekapcsolás:
def__benne__(én, x, y):
önmaga.x = x
self.y = y
én.sugár = 10
self.is_active = Igaz

defhúz(maga):
ha self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. SÁRGA)

defactivate_power_up(maga):
self.is_active = Igaz

defdeactivate_power_up(maga):
self.is_active = Hamis

osztályEgyes szint:
def__benne__(maga):
self.power_up = PowerUp(200, 200)
# ...

deffrissítés(maga):
# Ellenőrizze, hogy a lejátszó ütközik-e a bekapcsolóval
ha arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()

defhúz(maga):
self.power_up.draw()
# ...

A szinttervezés legjobb gyakorlatai

A szinttervezés döntő szerepet játszik a megnyerő és élvezetes játékélmények megteremtésében. Íme néhány bevált gyakorlat, amelyet figyelembe kell venni, amikor szintet tervez a játékhoz:

Tiszta célok

Minden szintnek világos céllal kell rendelkeznie, amelyet a játékosnak el kell érnie. Legyen szó egy adott hely eléréséről, ellenségek legyőzéséről vagy rejtvények megoldásáról, a célt jól meg kell határozni, és közölni kell a játékossal.

Fokozatos nehézségi görbe

Tervezési szintek fokozatos növekedési nehézséggel, hogy zökkenőmentes tanulási görbét biztosítsanak a játékosok számára. Kezdje az egyszerűbb kihívásokkal, és fokozatosan vezessen be új mechanikát vagy akadályokat a játékos előrehaladtával. A hirtelen kiugró nehézségek frusztrálhatják a játékosokat, ezért fontos a kiegyensúlyozott fejlődés fenntartása.

Vizuális tisztaság

Ügyeljen arra, hogy a szintterv és a vizuális elemek egyértelműen közöljék a játékossal a fontos információkat. Zene és hangeffektusok beépítése döntő nyomokat is közvetíthet, és lényeges információkat szolgáltathat a játékosnak.

Játékteszt és iteráció

A rendszeres játékteszt elengedhetetlen a szinttervezés finomításához és javításához. Gyűjtsön visszajelzéseket a játékosoktól, és figyelje meg tapasztalataikat, hogy azonosítsa azokat a területeket, amelyeken kiigazításra lehet szükség. A visszajelzések alapján ismételje meg a szinttervet, hogy élvezetesebb és kiegyensúlyozottabb játékmenetet teremtsen.

Egyensúlyozza a jutalmat és a kihívást

Jutalmazd meg a játékosokat a kihívások leküzdéséért a pályáidon. Ez elérhető teljesítménynövelésekkel, gyűjthető tárgyakkal, új területek felszabadításával vagy a narratíva előrehaladásával. A kihívások nehézségeinek és az értelmes jutalmaknak az egyensúlyozása segít motiválni a játékosokat, és sikerélményt nyújt.

Tedd vonzóbbá a játékokat a szintek segítségével

A játékszintek megvalósításával javíthatja az általános játékos élményt, és vonzóbb játékkörnyezetet teremthet. A szintek fejlődést, kihívást és változatosságot biztosítanak, befektetést és motiváltságot biztosítva a játékosoknak. Lehetővé teszik új mechanikák, akadályok, ellenségek és jutalmak bemutatását, biztosítva, hogy minden szint egyedi és izgalmas legyen.