Sadržaj:

Platformer sa beskonačnim nivoima na GameGo -u sa Makecode Arcade: 5 koraka (sa slikama)
Platformer sa beskonačnim nivoima na GameGo -u sa Makecode Arcade: 5 koraka (sa slikama)

Video: Platformer sa beskonačnim nivoima na GameGo -u sa Makecode Arcade: 5 koraka (sa slikama)

Video: Platformer sa beskonačnim nivoima na GameGo -u sa Makecode Arcade: 5 koraka (sa slikama)
Video: 50 лучших инди-игр всех времен 2024, Juli
Anonim
Image
Image

GameGo je retro prijenosna igraća konzola kompatibilna sa Microsoft Makecode -om, koju je razvilo TinkerGen STEM obrazovanje. Zasnovan je na STM32F401RET6 ARM Cortex M4 čipu i napravljen je za STEM edukatore ili samo ljude koji se vole zabavljati stvarajući retro video igre. Možete pratiti ovaj vodič i isprobati igru u Makecode Arcade simulatoru, a zatim je pokrenuti na GameGo -u.

U ovom ćemo članku napraviti platformersku igru s beskonačnim nasumično generiranim nivoima. Na platformi, igrač kontroliran lik mora skakati i penjati se između suspendiranih platformi izbjegavajući prepreke. Okoliš često ima neravan teren različite visine koji se mora prijeći. Igrač često ima određenu kontrolu nad visinom i udaljenošću skokova kako ne bi dopustio da im lik padne u smrt ili propusti potrebne skokove. Implementirat ćemo sve ove osnovne elemente, a također ćemo dodati prilagođenu funkciju koja će generirati nove nivoe kad dođemo do kraja posljednjeg. Počnimo!

Supplies

GameGo

Korak 1: Heroj

Heroj
Heroj

Kao prvi korak stvorit ćemo naš alter-ego. Moje vještine crtanja su prilično loše, pa sam samo odlučio koristiti jednu iz galerije;) Za razliku od prethodne igre koju smo napravili, u ovom platformeru naš lik koji se može igrati može se kretati samo lijevo i desno, a može i skakati. Dakle, umjesto da imamo dva različita sprajta za glavnog lika, ovaj put je dovoljan jedan - možemo samo preokrenuti sliku sprajta kada promijenimo smjer.

Prvo što trebate učiniti je dodati pozadinu i mapu pločica. Odabrao sam dugačku mapu pločica 32x8 - za prvi nivo ćemo je nacrtati ručno, kao na snimku ekrana 2. Zatim dodajemo našeg lika za igru sa postavljenim mySprite -om u sprite ljubaznog Player bloka i postavljamo ga na vrh pločice 0-5. Također smo postavili kameru da se kreće s karakterom koji se može igrati i kontrolirati njeno kretanje lijevo i desno - postavit ćemo brzinu vy kretanja na 0, budući da naš lik ne bi trebao moći slobodno plutati na karti u smjeru y. Dodajte dva bloka pritisnuta na dugme, jedan za lijevo dugme, jedan za desno. Kada pritisnete lijevo dugme, provjeravamo je li naš smjer "lijevo" prije nego pritisnemo dugme. Ako jeste, samo nastavljamo lijevo. Da nije, moramo okrenuti sliku duha našeg lika. Slična logika za kretanje udesno.

Za sada je sve u redu, čini se da je jedini problem što čini se da naš junak ne može svladati nijednu prepreku. Zato moramo dodati i skakanje. Pratit ćemo kontrole za pritiskanje tipke gore, a kada se otkrije, postavit ćemo promjenjivo skakanje na 1, zabilježiti vrijeme pokretanja skakanja i postaviti brzinu sprite znaka vy na -200 (ide prema gore). Zatim ćemo nakon određenog vremenskog perioda postaviti brzinu na 200 (spuštanje), kako naš junak ne bi pucao u nebo kao raketa.

Mislim da smo sada stvorili heroja vrijednog izazova! Pa, gdje je izazov?

Korak 2: Neprijatelji

The Enemies
The Enemies

Koristit ćemo strukturu niza za spremanje sprajtova neprijatelja. Za neprijatelje ćemo uzeti mali prečac i upotrijebit ćemo šišmiše:) a ne referencu koronavirusa, već samo šišmiši mogu letjeti, zato im nećemo morati "simulirati" gravitaciju, kao što to činimo s našim likom za igru. Upotrijebite na kreirani sprite vrste neprijateljskog bloka za postavljanje novostvorenih šišmiša na nasumičnu ploču za mriješenje (označenu malom bijelom oznakom) i postavite njihovu vx brzinu na -10 (polako se pomiče udesno). Zatim unutar ažuriranja igre svakih 2000 ms bloka ponavljamo svaku stavku liste neprijatelja_ i nasumično mijenjamo njihov smjer, a po potrebi i okrećemo sprajtove šišmiša (kako bi odrazili promjenu smjera kretanja). Konačno, dodajemo sprite vrste Player preklapa se sa drugim blokom neprijatelja vrste neprijatelja, gdje jednostavno provjeravamo je li igrač već pogođen. Ako nije, oduzeli smo jedan život, postavite hit flag na 1 (pogođen je) i pokrenite mjerač vremena. Nakon što je prošlo 500 ms od zadnjeg pogotka, mijenjamo zastavicu na 0. Radimo to kako bi igrač izbjegao da izgubi previše svojih dragocjenih života nakon sudara s neprijateljem.

Hajde da provjerimo kako nam ide. Pa, scena svakako izgleda živahnija sa svim palicama koje lete uokolo i grizu našeg igrača. Sada nam je potrebno oružje da činimo svoja herojska djela!

Korak 3: Oružje

Oružje
Oružje

Za oružje sam inspiraciju crpio iz stare Nintendo igre o dvojici braće vjeverica:) Dodajmo spratee sanduka na nivo, na sličan način kao i dodavanje neprijatelja. Također smo inicijalizirali varijablu has_crate na -1, što znači da naš lik ne nosi sanduk. U spritetu vrste Player se preklapa s drugim blokom hrane FoodSprite vrste, provjeravamo držimo li već sanduk, a ako ga nemamo, postavljamo varijablu has_crate na indeks sprate sanduka na listi. Zatim u blok za ažuriranje igre premještamo taj sprite zajedno sa spritetom igrača i ako pritisnemo dugme A, mijenjamo vx brzinu sanduka na 1200 ili -1200 (ovisno o smjeru kretanja lika). Također smo ponovo postavili varijablu has_crate na -1 i promijenili tip sprite sanduka koji je upravo lansiran u zrak u Projektil.

Na kraju, potrebno nam je da sanduci zaista unište neprijatelje pri pokretanju (ali ne i kada neprijatelji nasumično naiđu na sanduk! Zato smo sanduke dodijelili za upisivanje hrane i promijenili ga u projektil tek kada se lansiraju) i samouništavaju prilikom udarca zid. Za to koristimo drugi sprite vrste projektila koji se preklapa s drugim blokom neprijatelja vrste - u tom slučaju uništavamo oba sprajta i povećavamo rezultat za jedan. Ako projektil udari u zid, uništavamo njegov duh.

Skoro je gotovo! Igra se sada može igrati, ali teško da ima izazova - samo jedan nivo i prilično jednostavan. Mogli bismo ručno napraviti više nivoa ili napisati algoritam koji bi automatski generisao te nivoe za nas - iako oni naravno neće biti tako lijepi kao nivoi koje je napravio čovjek.

Korak 4: Beskrajne avanture

Beskonačne avanture
Beskonačne avanture
Beskonačne avanture
Beskonačne avanture
Beskonačne avanture
Beskonačne avanture

Funkcija za generiranje slučajnog nivoa u početku izgleda pomalo zastrašujuće, ali to je zapravo jednostavan niz koraka za algoritamsko generiranje nove razine, na način da je nova razina prihvatljiva za karaktere koji se mogu igrati. Prvo, vodimo računa o tome da naš lik dovedemo na taj novi nivo - koristeći sprite vrste preklapanja igrača … na lokaciji - koristimo pločicu portala kao okidač za novu razinu. U funkciji generated_level iniciramo varijable row, col i chance. Također stvaramo novu kartu pločica, iste veličine kao i prije, ali praznu. Evo malo upozorenja - da bi se koristio set … u retku karti karti … col … blok, karta pločica mora imati ove određene pločice --- to je pomalo kontra intuitivno i možda greška u Makecodeu. Dakle, ono što trebate učiniti je da kreirate pločicu, stavite sve tipove pločica koje želite koristiti u nasumično generiranje I zatim ih izbrišite.

Ručno smo stavili prvu pločicu (0x6) i player na nju. Zatim 30 puta ponavljamo sljedeći korak - sljedeći korak je jednostavna serija provjera Tačno -Netačno, koje odlučuju hoće li sljedeća pločica kolone biti 1) na istom nivou kao prethodna 2) jedan gore ili 3) jedan dolje. Također postoji vrlo mala šansa da sljedeća pločica bude lava pločica - ne želimo ih previše! Nakon svake generirane pločice prostor ispod nje ispunjavamo lavom - samo radi ljepote. Kao posljednji korak, dodajemo neprijatelje i gajbe te ih postavljamo na nasumične mrijestile pločice.

Korak 5: Avantura počinje

Avantura počinje
Avantura počinje

Voila! Završili smo naš platformer i naš junak može krenuti u beskrajnu avanturu, pobjeđujući šišmiše i uništavajući sanduke. ako naiđete na probleme, možete preuzeti kôd iz našeg GitHub spremišta.

To je samo nacrt i definitivno se mogu napraviti neka poboljšanja, na primjer različite vrste neprijatelja, bonusi, stvaranje boljeg nivoa itd. Ako ipak napravite poboljšanu verziju igre, podijelite je u komentarima ispod! Za više informacija o GameGo -u i drugom hardveru za proizvođače i STEM edukatore posjetite našu web stranicu, https://tinkergen.com/ i pretplatite se na naš bilten.

TinkerGen je kreirao Kickstarter kampanju za MARK (Make A Robot Kit), komplet robota za učenje kodiranja, robotike, AI!

Preporučuje se: