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:
import árkád
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600osztá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 // 2defon_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 += 10defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL vagy kulcs == arcade.key. JOBB:
passdeffő-():
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 // 2deffrissítés(maga):
passdefhú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 // 2deffrissítés(maga):
passdefhú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 = 0defon_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 += 10defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL vagy kulcs == arcade.key. JOBB:
passdeffrissí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 = 20defhú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 = Hamisdefhú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átosztá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ágdefhú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 = Igazdefhú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 = Igazdefdeactivate_power_up(maga):
self.is_active = Hamisosztá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.