Sužinokite, kaip matuoti laiką ir naudoti jį įvairiems žaidimo aspektams valdyti.

Žaidimų kūrimo procese įtraukus laiku pagrįstus įvykius galima labai pagerinti žaidimo mechaniką ir padaryti žaidimus patrauklesnius žaidėjams. Naudodami laikmačius galite pateikti iššūkių, sukurti riboto laiko tikslus arba suteikti tam tikrų žaidimo elementų skubos jausmą.

Sukurkite paprastą žaidimą

Pradėkite nuo paprasto žaidimo kūrimo, kad suprastumėte pagrindus. Sukurkite žaidimą, kuriame žaidėjas gali judėti į kairę ir į dešinę, ir bus viena platforma. Sukurkite naują failą pavadinimu paprastas žaidimas.py ir importuoti arkadinį modulį, kuris suteikia žaidimui kurti reikalingas funkcijas.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Toliau apibrėžkite Žaidimo langas klasė, kuri yra poklasis arkada. Langas. „GameWindow“ klasėje apibrėžkite __init__ metodas, kuris inicijuoja langą su nurodytu pločiu, aukščiu ir pavadinimu.

The yra_key_press

instagram viewer
metodas aptinka kairiojo arba dešiniojo rodyklės klavišų paspaudimus. Paspaudus kairę, sumažėja žaidėjas_x 10 vienetų, o paspaudus dešinėn, jis padidinamas 10 vienetų. Tai leidžia žaidėjui judėti horizontaliai žaidimo lange.

Norėdami paleisti žaidimą, apibrėžkite pagrindinę funkciją, sukurkite GameWindow egzempliorių, iškvieskite sąrankos metodą, kad nustatytumėte žaidimo langą, ir galiausiai pradėkite žaidimo kilpą naudodami arcade.run().

Laikmačio klasės struktūros projektavimas

Norėdami įdiegti laikmačius savo žaidime, galite sukurti laikmačio klasę su reikiamais atributais ir metodais. Ši klasė suteiks funkcijas, skirtas paleisti laikmatį, jį sustabdyti, nuskaityti praėjusį laiką ir patikrinti, ar laikmatis nesibaigė. Štai pagrindinė laikmačio klasės struktūra:

importuoti laikas

klasėLaikmatis:
def__init__(savaime, trukmė):
savaime.trukmė = trukmė
self.start_time = 0
self.is_running = Netiesa

defpradėti(savarankiškai):
self.start_time = laikas.laikas()
self.is_running = Tiesa

defsustabdyti(savarankiškai):
self.is_running = Netiesa

defgauti_praėjusį_laiką(savarankiškai):
jeigu self.is_running:
grąžinti laikas.laikas() – savaiminis.pradžios_laikas
grąžinti0

defyra_galiojimo laikas(savarankiškai):
grąžinti self.get_elapsed_time() >= self.duration

Laikmačio klasė trunka a trukmės parametras sekundėmis inicijavimo metu. Klasėje yra tokių atributų kaip pradžios laikas išsaugoti laiką, kada įsijungė laikmatis, ir bėga stebėti laikmačio būseną.

The pradžia () metodas nustato pradžios_laiką į dabartinį laiką naudojant laikas.laikas() ir nustato is_running į Tiesa. The sustabdyti() metodas tiesiog nustato is_running į Netiesa. The get_elapsed_time() metodas apskaičiuoja praėjusį laiką, atimdamas pradžios_laiką iš dabartinio laiko.

Jei laikmatis veikia, jis grąžina praėjusį laiką; kitu atveju jis grąžina 0. The is_expired() metodas patikrina, ar praėjęs laikas yra didesnis arba lygus trukmei, o tai rodo, kad laikmačio galiojimo laikas baigėsi.

Atgalinės atskaitos laikmačių diegimas

Norėdami žaidime parodyti atgalinį skaičiavimą, galite paleisti laikmatį, kai žaidėjas paspaudžia konkretų klavišą, pvz., tarpo klavišą. Atspausdinkite atgalinį skaičiavimą iki konsolės naudodami Python spausdinimo komandą. Sukurkite naują failą pavadinimu laikmatis.py ir pridėkite kodą su šiais atnaujinimais:

importuoti laikas

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
super().__init__(WIDTH, HEIGHT, "Paprastas žaidimas")
self.player_x = PLOTIS // 2
self.player_y = AUKŠTIS // 2
self.timer = Laikmatis(10)

defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. ERDVĖ:
self.timer.start()

defon_draw(savarankiškai):
# Esamas kodas
jeigu self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration – praėjęs_laikas
likęs_laikas = max (r_time, 0)
spausdinti (f" Atgalinė atskaita: {likęs laikas:.1f} sekundės")

Įsitikinkite, kad tuo pačiu metu matote terminalo langą ir žaidimo langą. Tada paspauskite tarpo klavišą ir pamatysite laikmačio atgalinę atskaitą:

Laikmačio įvykių tvarkymas ir suaktyvinimo veiksmai

Taip pat galite suaktyvinti funkciją, kuri piešia stačiakampį kai baigiasi atgalinės atskaitos laikmatis. Sukurkite naują failą pavadinimu rankena-įvykis.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

defon_draw(savarankiškai):
# Esamas kodas
jeigu self.timer.is_expired():
self.draw_stačiakampis()

defpiešti_stačiakampį(savarankiškai):
arcade.draw_rectangle_filled (PLOTIS // 2, HEIGHT // 2, 100, 100, raudona)

Žemiau yra išvestis:

Laikmačio pristabdymas, nustatymas iš naujo ir atnaujinimas

Norėdami pridėti laikmačio pristabdymo, nustatymo iš naujo ir atnaujinimo funkcijų, galite pratęsti Laikmatis klasė su atitinkamais metodais. Štai pavyzdys:

klasėLaikmatis:
# Esamas kodas

defPauzė(savarankiškai):
self.duration -= self.get_elapsed_time()
self.is_running = Netiesa

defatstatyti(savarankiškai):
self.start_time = 0
self.is_running = Netiesa

defAprašymas(savarankiškai):
self.start_time = laikas.laikas()
self.is_running = Tiesa

Vaizdinių atsiliepimų pridėjimas prie laikmačio

Norėdami pateikti vaizdinį atsiliepimą apie laikmatį, žaidimo ekrane galite įtraukti teksto arba grafinių elementų. Sukurkite naują failą pavadinimu visual.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

defon_draw(savarankiškai):
# Esamas kodas
jeigu self.timer.is_running:
tekstas = f" Atgalinė atskaita: {likęs laikas:.1f} sekundės"
arcade.draw_text (tekstas, 10, 10, juoda, 18)

Dabar laikmatį matysite tiesiai žaidimo lange, o ne konsolėje:

Įskaitant papildomas funkcijas

Norėdami dar labiau pagerinti laiku pagrįstus įvykius, galite apsvarstyti galimybę savo žaidimuose įdiegti toliau nurodytas papildomas funkcijas.

Laiku pagrįsti papildymai arba premijos

Pristatykite papildymus ar premijas, kurios periodiškai pasirodo žaidimo metu. Šie papildymai gali suteikti laikinų sugebėjimų, papildomų taškų, padidinti greitį arba patobulinti ginklus.

Nustatydami juos riboto laiko, žaidėjai turi strategiškai juos surinkti per tam tikrą laikotarpį, kad įgytų pranašumą. Tai suteikia jaudulio ir skatina greitą mąstymą.

Riboto laiko iššūkiai

Kurkite riboto laiko iššūkius, kai žaidėjai turi atlikti užduotį per tam tikrą laiką. Pavyzdžiui, galvosūkis arba platformos skyrius, kurį reikia išspręsti per tam tikrą laiką.

Tai skatina žaidėjus greitai mąstyti ir veikti, o žaidimui suteikiamas jaudinantis skubos jausmas. Sėkmingas šių iššūkių įveikimas gali atgauti atlygį arba patobulinti istoriją.

Laiku nustatytos kliūtys arba priešai

Įdiekite laiku nustatytas kliūtis ar priešus, kurie kelia grėsmę žaidėjui. Pavyzdžiui, judančios platformos, kurios atsiranda ir išnyksta reguliariais intervalais, arba priešai, kurie tam tikrą laiką tampa neįveikiami.

Žaidėjai turi teisingai nustatyti savo veiksmus ir judesius, kad galėtų įveikti šias kliūtis arba nugalėti priešus, kol laikas nesibaigs. Tai prideda žaidimo strategijos ir koordinavimo sluoksnį.

Geriausia laiku pagrįstų įvykių praktika

Diegiant laiku pagrįstus įvykius žaidimuose, būtina vadovautis šia geriausia praktika.

Testas ir balansas

Kruopščiai patikrinkite savo laiku pagrįstus įvykius, kad įsitikintumėte, jog jie yra teisingi ir subalansuoti. Tiksliai sureguliuokite trukmę, sunkumus ir apdovanojimus, kad sukurtumėte malonią žaidimo patirtį.

Vartotojų atsiliepimai

Pateikite žaidėjams aiškius ir intuityvius atsiliepimus apie laikmačio būseną ir bet kokius laiku pagrįstus įvykius. Garso efektų pridėjimas, vaizdiniai indikatoriai arba tekstiniai ženklai gali padėti žaidėjams suprasti laiko apribojimus ir savo veiksmų pasekmes.

Nuoseklus laiko matavimas

Visame žaidime naudokite nuoseklią laiko matavimo sistemą. Pavyzdžiui, naudokite sekundes kaip visų laikmačių ir su laiku susijusių skaičiavimų vienetą. Tai užtikrina nuoseklumą ir lengvą supratimą tiek žaidėjams, tiek kūrėjams.

Tvarkykite kraštinius dėklus

Apsvarstykite scenarijus, kai žaidimas gali būti pristabdytas, sumažintas arba paleistas fone. Elkitės tokiomis situacijomis grakščiai, kad išlaikytumėte tikslų laiką ir išvengtumėte netyčinio elgesio, kai žaidimas atnaujinamas.

Laikydamiesi šios geriausios praktikos, galite kurti laiku pagrįstus įvykius, kurie pagerina žaidimo eigą, meta iššūkį žaidėjams ir suteikia subalansuotą bei malonią patirtį.

Padarykite žaidimus linksmesnius su laiku pagrįstais įvykiais

Į savo žaidimus įtraukę laiku pagrįstus įvykius galite sukurti dinamišką ir patrauklią žaidėjų patirtį. Laiku apriboti iššūkiai prideda jaudulio ir skubumo, o su laiku sureguliuoti įjungimai ar kliūtys gali sukurti strateginių sprendimų priėmimo galimybių.

Eksperimentuokite su įvairia laiko mechanika, kad rastumėte tinkamą žaidimo pusiausvyrą, ir nepamirškite išbandyti ir kartoti, kad maksimaliai padidintumėte linksmybes ir malonumą.