Pythoni arkaadide teek pakub lihtsat ja tõhusat viisi mängutasemete rakendamiseks oma projektides.
Mänguarendus on põnev ja loominguline protsess, mis võimaldab teil oma fantaasiarikkaid ideid ellu viia. Mängu kujundamisel on üheks võtmeelemendiks, mis võib mängijakogemust oluliselt parandada, mängutasemete rakendamine.
Tasemed pakuvad struktuuri, edenemist ja väljakutseid, pakkudes mängijatele saavutus- ja seotuse tunnet, kui nad mängu eri etappides navigeerivad.
Looge lihtne mäng
Enne alustamist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku installimiseks arkaad raamatukogu:
pip install arkaad
Loo põhimäng, kus mängija saab liikuda vasakule ja paremale.
Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Kasutage kasutaja sisendi käsitlemiseks ja mängu oleku vastavalt värskendamiseks Arcade teegi võimalusi. Looge uus fail nimega lihtne-mäng.py ja lisage allolev kood:
importida arkaad
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)
self.player_x = SCREEN_WIDTH // 2defon_draw(ise):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. SININE)defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= 10
elif võti == arcade.key. PAREMALE:
self.player_x += 10defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE või võti == arcade.key. PAREMALE:
üle andmadefpeamine():
mäng = MinuMäng()
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Allpool on väljund:
Loo mitu taset
Nüüd laiendage mängu mitme taseme lisamisega. Igal tasemel on oma ainulaadsed omadused, mis pakuvad mängijale erinevaid väljakutseid. Eelmist koodi saate muuta, et lisada täiendavaid tasemeid. Siin on näide:
klassLevelOne:
def__selles__(ise):
self.player_x = SCREEN_WIDTH // 2defvärskendada(ise):
üle andmadefjoonistada(ise):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. SININE)klassTase Kaks:
def__selles__(ise):
self.player_x = SCREEN_WIDTH // 2defvärskendada(ise):
üle andmadefjoonistada(ise):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. PUNANE)klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0defon_draw(ise):
arcade.start_render()
self.levels[self.current_level].draw()defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.levels[self.current_level].player_x -= 10
elif võti == arcade.key. PAREMALE:
self.levels[self.current_level].player_x += 10defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE või võti == arcade.key. PAREMALE:
üle andmadefvärskendada(ise, delta_aeg):
self.levels[self.current_level].update()defpeamine():
mäng = MinuMäng()
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Üleminek tasandite vahel
Tasemete vahel sujuva ülemineku loomiseks tuvastage, millal mängija ületab teatud piiri. Sa saad jälgida mängija liikumistja kui mängija ületab piiri, saate lülituda järgmisele tasemele. Looge uus fail nimega üleminek-between-levels.py ja lisage kood koos allolevate värskendustega:
klassMinu Mäng(arkaad. aken):
# ...defvärskendada(ise, delta_aeg):
self.levels[self.current_level].update()# Kontrollige, kas mängija ületas piiri
kui 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 = EKRAANI_LAAIUS
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
# ...
Allpool on väljund:
Kaasa arvatud lisafunktsioonid
Oma mängutasemete köitvamaks muutmiseks saate lisada lisafunktsioone, nagu võimsused ja eesmärgid.
Eesmärgid
Eesmärgid seavad mängijale konkreetsed eesmärgid või eesmärgid, mida ta peab tasemel saavutama. Need lisavad sihikindlust ja edusamme. Siin on näide objektiivse funktsiooni rakendamisest.
klassEesmärk:
def__selles__(ise, x, y):
ise.x = x
ise.y = y
ise.raadius = 20defjoonistada(ise):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ROHELINE)klassLevelOne:
def__selles__(ise):
self.objective = Objective(600, 400)
# ...defvärskendada(ise):
# Kontrollige, kas mängija saavutab eesmärgi
kui arcade.check_for_collision (self.player, self.objective):
self.complete_objective()defjoonistada(ise):
self.objective.draw()
# ...
deftäielik_eesmärk(ise):
# Kood eesmärgi täitmiseks
üle andma
Kogumisobjektid
Kollektsionäärid on esemed või boonused, mida mängija saab koguda kogu tasemel. Siin on näide kogutava funktsiooni rakendamisest.
klassKogutav:
def__selles__(ise, x, y):
ise.x = x
ise.y = y
ise.raadius = 10
ise.is_kogutud = Valedefjoonistada(ise):
kuimitte self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ORANŽ)defkoguda(ise):
ise.is_kogutud = Tõsi
# Kood, mis käsitleb kogumisobjekti mõju mängijaleklassLevelOne:
def__selles__(ise):
self.collectible = kogutav(300, 300)
# ...defvärskendada(ise):
# Kontrollige, kas mängija kogub eseme kokku
kui arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()
defjoonistada(ise):
self.colectible.draw()
# ...
Takistused
Takistused võivad olla staatilised objektid või liikuvad üksused, mis takistavad mängija liikumisteed. Need nõuavad mängijalt strateegiat ja võimaluste leidmist nende ületamiseks. Siin on näide takistuste funktsiooni rakendamisest:
klassTakistus:
def__selles__(ise, x, y, laius, kõrgus):
ise.x = x
ise.y = y
ise.laius = laius
ise.kõrgus = kõrgusdefjoonistada(ise):
arcade.draw_reectangle_filled (self.x, self.y, self.width, self.height, arcade.color. HALL)
klassLevelOne:
def__selles__(ise):
self.obstacles = [Takistus(400, 200, 100, 50), takistus(600, 500, 80, 120)]
# ...
Võimsused
Võimsused võivad parandada mängija võimeid või pakkuda ajutisi eeliseid. Siin on näide sisselülitusfunktsiooni rakendamisest.
klassPowerUp:
def__selles__(ise, x, y):
ise.x = x
ise.y = y
ise.raadius = 10
self.is_active = Tõsidefjoonistada(ise):
kui self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. KOLLANE)defactivate_power_up(ise):
self.is_active = Tõsidefdeaktiveeri_toite_üles(ise):
self.is_active = ValeklassLevelOne:
def__selles__(ise):
self.power_up = Võimsus(200, 200)
# ...defvärskendada(ise):
# Kontrollige, kas mängija põrkub toitelülitiga kokku
kui arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
defjoonistada(ise):
self.power_up.draw()
# ...
Tasemekujunduse parimad tavad
Tasemekujundus mängib kaasahaarava ja nauditava mängukogemuse loomisel otsustavat rolli. Siin on mõned parimad tavad, mida oma mängu tasemete kujundamisel arvesse võtta.
Selge eesmärgid
Igal tasemel peaks mängijal olema selge eesmärk või eesmärk, mida mängija peab saavutama. Olgu selleks siis kindlasse kohta jõudmine, vaenlaste võitmine või mõistatuste lahendamine, eesmärk peaks olema täpselt määratletud ja mängijale edastatud.
Järkjärguline raskuskõver
Disainitasemed, mille raskusaste suureneb järk-järgult, et tagada mängijatele sujuv õppimiskõver. Alustage lihtsamate väljakutsetega ja tutvustage mängija edenedes järk-järgult uusi mehaanikaid või takistusi. Äkilised raskuste tõusud võivad mängijaid frustreerida, seega on oluline säilitada tasakaalustatud edenemine.
Visuaalne selgus
Veenduge, et taseme kujundus ja visuaalsed elemendid edastaksid mängijale selgelt olulist teavet. Sisaldab muusikat ja heliefekte võib edastada ka olulisi vihjeid ja anda mängijale olulist teavet.
Mängu testimine ja iteratsioon
Regulaarne mängutestimine on tasemekujunduse viimistlemiseks ja täiustamiseks hädavajalik. Koguge mängijatelt tagasisidet ja jälgige nende kogemusi, et teha kindlaks kohad, mis võivad vajada kohandusi. Korrake oma tasemekujundust selle tagasiside põhjal, et luua nauditavamat ja tasakaalustatumat mängu.
Tasakaalustage tasu ja väljakutse
Premeerige mängijaid teie taseme väljakutsete ületamise eest. Seda saab saavutada võimsuse suurendamise, kogumisobjektide, uute valdkondade avamise või narratiivi edasiarendamise kaudu. Väljakutsete raskuste tasakaalustamine sisukate auhindadega aitab mängijaid motiveerida ja annab saavutustunde.
Muutke mängud tasemetega kaasahaaravamaks
Mängutasemeid rakendades saate parandada üldist mängijakogemust ja luua kaasahaaravama mängukeskkonna. Tasemed pakuvad edenemist, väljakutseid ja vaheldust, hoides mängijaid investeerituna ja motiveerituna. Need võimaldavad teil tutvustada uusi mehaanikaid, takistusi, vaenlasi ja auhindu, tagades, et iga tase tundub erinev ja põnev.