Koodaan JS + CSS + HTML peliä meneillään olevaan kilpailuun.
Keskeneräistä (todella keskeneräistä) peliä pääsee jo hieman maistelemaan:
Linkki
Pelin idea on seuraava: sinun pitää ampua hyökkäävät laskuvarjohyppääjät. Jos laskuvarjohyppääjä pääsee laskeutumaan maahan, niin se alkaa ampumaan sinua.
Ensimmäinen versio pelistä on nyt testattavissa. Seuraavaksi ajattelin toteuttaan jonkinlaisen level -systeemin.
Mustavalkoiset pikseligrafiikat ainakin ovat tyylikkäät. Tämä on ehdottomasti juuri sitä, mitä kisan retro-osioon odotetaan. Kännykällä pelaaminen olisi kiva lisä.
Anteeksi että olen tyhmä mutta mistä ton koodin saa näkyviin?
Oikea hiiren painike ja Inspect/Tarkista -> Sources/Lähteet välilehti. Shortcut ctrl + shift + j ei toimi, koska ajan preventDefaultin kaikelle inputille
Uusi versio (1.1) on nyt pelattavissa.
Uutta:
- Uusi hp systeemi
- Kännykällä pelaaminen
- Yksinkertaistettu ulkoasu (Metabolixin tykkipelin ulkoasu)
- Koodia optimoitu
(Pääsiäisen takia vasta nyt päivitystä)
Voisit laittaa mobiilitilan checkboxin ja tekstin label-elementin sisään ja suurentaa hieman, niin olisi helpompi osua.
Mietin myös, onko naputus paras tapa mobiilipeliin vai olisiko esim. pitkä kosketus gamepadin tyyppiseen ohjaimeen helpompi.
Mutta hieno on edelleen.
Uusi versio (1.2) on nyt pelattavissa.
Uutta:
- Skootterimiehellä lisätoimintoja
- Koodia optimoitu
Mietin, sopisiko puhelimen ohjaimeksi seuraava: vasemmalla puolella on joystick, josta ohjataan liikkumista (ja tähtäämistä) ja oikealla on nappi, josta ammutaan.
Voisiko joku myös vilkaista koodin ulkoasua ja kertoa onko kehittämiskohteita.
Uusi versio (1.3) on nyt pelattavissa.
Uutta:
- Taso systeemi
- Aloituskuva
- Koodia optimoitu
AtskaFin kirjoitti:
Uusi versio (1.3) on nyt pelattavissa.
Seuraavaan 1.4 versioon toteutat vielä, että tuuli pystyy vaikuttamaan laskuvarjohyppääjien liitelyyn... ;)
jalski kirjoitti:
toteutat vielä, että tuuli pystyy vaikuttamaan laskuvarjohyppääjien liitelyyn...
Mites tuo tuuli sitten kannattaisi toteuttaa? Osuuko satunnaisesti muutamaksi sekunniksi tietylle korkeudelle vai koko pelikentälle? Ongelmanahan tuossa on se, että se saattaa työntää laskuvarjohyppääjiä näytön ulkopuolelle.
AtskaFin kirjoitti:
Mites tuo tuuli sitten kannattaisi toteuttaa? Osuuko satunnaisesti muutamaksi sekunniksi tietylle korkeudelle vai koko pelikentälle? Ongelmanahan tuossa on se, että se saattaa työntää laskuvarjohyppääjiä näytön ulkopuolelle.
Yksinkertaisimmillaan voit käyttää ihan tilataulua, jossa hyppääjällä on tietty todennäköisyys reagoida erilailla ja edellinen tila määrittää seuraavat mahdollisuudet. Ongelma ruudun ulkopuolelle joutumisesta on helppo ratkaista siten, että hyppääjä tulee ruudun toisesta reunasta taas näkyviin. Näin kohtuullisen yksinkertaisesti saisi hiukan vaihtelevuutta laskuvarjohyppääjien toimintaan...
Tuohan alkoi kuulostaa hyvältä idealta. Pitääpä toteuttaa :D
Oon tehny äänet peliin käyttäen Metabolixin tykkipelin Sounds -luokkaa. Miten saan tietyn tapahtuman kohdalla vain yhden ääniklipin kuulumaan, siis käytännössä miten pausetan kaikki jo meneillään olevat ääniklipit.
Sain toteutettua seuraavalla tavalla:
playAndMuteOtherAudio(src, options) { this.muted = true; for (const audio of this.playingAudio) { audio.muted = true; } this.playingAudio = []; options.unmuteWhenEnded = true; this.play(src, options); } async play(src, options = {}) { if (options.volume === 0 || (this.muted && !(options.unmuteWhenEnded))) { return; } let audio = this.preload(src).cloneNode(); audio.muted = false; audio.volume = options.volume || 1; this.playingAudio.push(audio); await audio.play(); audio.addEventListener('ended', () => { if (options.unmuteWhenEnded) { this.muted = false; } const index = this.playingAudio.indexOf(audio); this.playingAudio.splice(index, 1); }); }
Käyttö:
sounds.playAndMuteOtherAudio('nuclear-bomb.webm', { volume: 0.6 });
Yhtä aikaa alhaalla space+arrowUp+arrowLeft ei toimi. Saisitko jonkin toisenkin näppäimen ampumaan? Itse laitoin B:n ja F:n lisäksi, niin toimii hyvin.
Hiukan hankala suunnata omaa asetta, saisiko tuohonkin jotenkin, että aseen suunta säilyy, kunnes sitä muutetaan ja mielellään laajempi suuntaus kuin ylös, sivulle tai yläviistoon.
Lisäksi eri toimintojen ohjeet / kuvaus jonnekin näkyville olisi hyvä. Esim. nuolinäppäimet liikuttavat ja suuntaavat aseen, mutta onko muita näppäimiä käytössä?
Ja tietysti tuo TOP-10 -lista olisi kyllä hyvä, toteutus ei kuitenkaan ole ihan helppo.
TapaniS kirjoitti:
Yhtä aikaa alhaalla space+arrowUp+arrowLeft ei toimi.
Kyllä itselläni ainakin toimii. Olisiko tuo toimimattomuus kiinni näppäimistöstäsi? Voit testata, montako näppäintä kone rekisteröi yhtä aikaa tästä
TapaniS kirjoitti:
Hiukan hankala suunnata omaa asetta
Olen itsekin miettinyt jotain päivitystä nykyiseen tähtäämiseen, mutta ei tällä hetkellä ensisijaisena tekemisen kohteena.
TapaniS kirjoitti:
Lisäksi eri toimintojen ohjeet / kuvaus jonnekin näkyville olisi hyvä.
Tulee seuraavassa päivityksessä.
TapaniS kirjoitti:
Ja tietysti tuo TOP-10 -lista olisi kyllä hyvä
TOP-10 -listan lisäämistä en ole miettinyt, mutta olen suunnitellut jonkinlaista pelaajan mahdollisuutta tehdä oma taso, jota voisi sitten jakaa muille tekstimuodossa
AtskaFin kirjoitti:
TapaniS kirjoitti:
Yhtä aikaa alhaalla space+arrowUp+arrowLeft ei toimi.
Kyllä itselläni ainakin toimii. Olisiko tuo toimimattomuus kiinni näppäimistöstäsi? Voit testata, montako näppäintä kone rekisteröi yhtä aikaa tästä
Joo, minulla on HP ProBook 4340s ja tässä ei tuo kolmen näppäimen yhdistelmä toimi. Yksittäin tai kaksittain kaikki toimii, mutta nämä kolme yhdessä ei. Outo juttu.
Uusi versio (1.4) on nyt pelattavissa.
Uutuudet:
- Pelin äänet
- Uusi vihollinen: ydinpommi
- tuuli
- uudet kentät
- muuta pientä
Unohtu näköjään tehdä tuo toimintojen kuvaus :D, jos sen seuraavaan päivitykseen saisi.
En saa peliä käynnistymään mobiili-tilassa, peli pitää käynnistää ilman mobiilitilaa ja kytkeä päälle pelin käynnistyttyä.
Lisäksi html-sivuun pitäisi asettaa zoomi tietyksi, sillä mobiililaitteella oli lähes mahdoton saada peli mahtumaan kuvaruutuun koska pinch-zoom ei toimi pelialueen päällä.
Peli päättyy mobiilitilassa heti, koska sotilas ampuu automaattisesti heti autoa päin, joka räjähtäessään tappaa sotilaan ( Mites en ollut tuota ajatellut :D ).
Löysin myös pari muuta bugia, jotka pitää korjata. Korjaan kaikki löytämäni bugit seuraavaan päivitykseen.
Uusi versio (1.5) on nyt pelattavissa.
Uutta:
bugien korjauksia, mm.
Välipäivitys:
Olen tehnyt nyt uudenlaisen gamepadin puhelimelle. Vasemmalla on joystick ja oikealla ampumispainike.
Käykääpä joku testaamassa (puhelimella) joystickkiä täällä: Paratrooper invasion / joystick test
Olisiko vielä parannusehdotuksia gamepadiin?
Vanhempaa ohjaustapaa voi vielä testata täällä: Linkki peliin
Kyl nyt tuntuu hyvältä.
Wanha ohjaustyyppi on minun mieleeni kännykällä pelattaessa.
💪💪👍👍
Kiitos palautteesta!
Lebe80 kirjoitti:
Wanha ohjaustyyppi on minun mieleeni
Voisin sisällyttää kummankin ohjaustavan peliin ja käyttäjä voisi valita kumpaa käyttää.
Nyt vähään aikaan ei tule päivitystä, koska olen innostunut toisen projektin kimppuun. Jos parin päivän päästä taas jatkaisi tätä peliä.
Nyt on tämän lukuvuoden kouluhommat pulkassa ja projekti jatkuu...
Versio 1.6 on pelattavissa.
Uutuudet:
AtskaFin kirjoitti:
Voisin sisällyttää kummankin ohjaustavan peliin
Tuli vähän mutkia matkaan, joten ehkä myöhemmin
Ensimmäinen kisavalmis versio 2.0 on pelattavissa.
Uutuudet:
Ilmoittakaa bugien löytymisistä. Korjaan ne ennen kisan päättymistä.
Olet onnistunut luomaan erinomaisen teoksen! Peli on koukuttava sen haasteellisuuden ja nopeatempoisuuden vuoksi. Se houkuttelee vanhempaakin käyttäjää, koska aikaa päivästä ei tarvitse uhrata kuin 15 minuuttia, jonka jälkeen voi jatkaa normaalia arkiaskareita. En onnistunut jostain syystä ampumaan aseella vasempaan yläviistoon (oikeaan yläviistoon ampuminen onnistui kyllä). Olisiko tämä mahdollinen bugi? Joka tapauksessa tsemiä muille pelaajille, tein sellaisen High scoren, että oksat pois!! ;-) Sain muun muassa erittäin ärsyttävän pommikoneen räjähtämään peräti neljä kertaa. Valitettavasti 2/4 kpl. yrityksistä kurahti, kun jäin itse tämän ärsytyksen alle juuri ikävästi sen räjähdysvaiheessa.
Nimimerkillä kyllä vaan hieman vanhempikin vielä jaksaa.
Kiitos positiivisesta palautteesta!
(Vastaus poistettuun viestiin)
Tuon globaalin tulostaulun kanssa on se ongelma, että huijaaminen on luultavasti helppoa ilman hyvää pelinkulun tarkistusta palvelinpäässä. Voisinhan koittaa toteuttaa tämän, mutta luultavasti huijaaminen on helppoa, kun vain hieman tutustuu koodiin.
Jees. Peli on hyvä näin. Pakko tunnustaa, että tuo tason kahdeksan vastus ei ihan ensimmäisellä yrittämällä mennyt kovinkaan mallikkaasti. :D
mpni kirjoitti:
En onnistunut jostain syystä ampumaan aseella vasempaan yläviistoon
Itselläni toimii kaikilla testaamillani laitteilla, joten tämä johtuu luultavasti näppäimistöstäsi, joka ei tue tuohon liikkeeseen tarpeellisia näppäimiä. Koita toimiiko, jos ammut käyttämällä B-näppäintä.
Tuo versio 2.0 on ensimmäinen kisavalmis versio, mutta luultavasti jotain päivitystä vielä luvassa.
Ei onnistu Lenovon ThinkPaD-kannettavalla ampuminen vasemmalle viistoon edes B-näppäimellä. Tuo sinänsä ei ole iso harmi, kun tähän osaa varautua etukäteen.
Palaten julkiseen tulostauluun, niin mielestäni ei kannata takertua huijausepäilyihin liian vakavasti. Olen sen verta vanhan kansan ihminen, että minusta tällainen hakkerointi on lähinnä vain nuorien teinien harrastus. Nyt kyse ei ole kuitenkaan pankkisovelluksesta tai vastaavasta. Tietysti pienoinen perfektionismi ei ole koskaan pahasta, mutta liiallinen täydellisyyden tavoittelu voi usein vain hankaloittaa tilanteita. Asioita voi oppia myös kantapään kautta. Jos alkaa näyttämään siltä, että tuloksia hakkeroidaan, niin voi todeta, että olinpas "tyhmä", kun tein asian näin ja teen seuraavalla kerralla asian paremmin. Aloittavalle koodarille on jo melkoinen saavutus kun ylipäätään saa tällaisen julkisen tulostaulun tehtyä. Valmista koodia voi myös editoida, eli aloittaa homman helpoimmasta ja parantelee sitten, jos mieli alkaa tuntua siltä. Näin ainakin itse ajattelisin asian.
Olen itse sortunut lukuisia kertoja siihen, että olen aluksi yrittänyt liian hienoa ja lopussa todennut, että yksinkertaisempikin olisi riittänyt. Työelämässä perfektionismi usein johtaa aikataulupaineisiin, koska tällöin jää aikaa vähemmän muuhun tarpeelliseen. En ollenkaan väheksy "Keep it simple stupid" ajattelua, kunhan yhtä aikaa tekee yksinkertaista ja kaunista.
Versio 2.0.1 on pelattavissa.
Uutta:
Toteutin tuon tulostaulun käyttäen NodeJs:ää ja MongoDb -tietokantaa. Backendissä on nyt myös jonkinasteinen tarkistus pisteille.
Versio 2.0.2 on pelattavissa.
Uutta:
Muutama kommentti:
Itse peli näyttää hyvältä. Mielestäni kannattaisi käyttää hetki myös siihen, että sivu olisi kokonaisuutena tyylikkäämpi erityisesti asettelun osalta.
Alkuanimaatio tuntuu turhan hitaalta, haluaisin aloittaa pelin nopeammin.
Olisi kiva tietää etukäteen, mitä pitää tehdä niille vihollisille, joihin pelkkä ampuminen ei riitä. Ainakin pudotettu ydinpommi räjähti ja lopetti koko pelin.
Itselläni on itse asiassa tuo sama liikkumisongelma. Testasin, että kun vasen ja ylänuoli ovat pohjassa, näppäimistöstä eivät toimi painikkeet ghäbn-< ja välilyönti. Onneksi WASD-ohjaus toimii ongelmitta. Ehkä tätä vaihtoehtoa voisi nostaa sivulla selvemmin esiin. Jo peliruudun yläpuolella voisi lukea yhdellä rivillä, miten peliä ohjataan, tai ehkä näppäimet voisi näyttää ruudulla alkuanimaation aikana.
Muista ilmoittautua kisaan ja laita myös peli siinä vaiheessa pakettiin arkistointia varten.
Kiitos kommenteista, kehittelen peliä juhannuksen jälkeen mainitsemiesi asioiden kannalta.
Metabolix kirjoitti:
Muista ilmoittautua kisaan
Enkös ole jo ilmoittautunut kisaan? Ainakin lisäsit minut ilmoittautuneiden listalle ja lähetit vahvistus viestin.
Metabolix kirjoitti:
laita myös peli siinä vaiheessa pakettiin arkistointia varten
Laitanko tuon paketin kilpailu@ohjelmointiputka.net - spostiin? Backendin koodit pitää varmaan myös sisällyttää siihen?
Edit.
Metabolix kirjoitti:
Olisi kiva tietää etukäteen, mitä pitää tehdä niille vihollisille, joihin pelkkä ampuminen ei riitä
Mielestäni peli on mielenkiintoisempi, jos ei tiedä kaikkea, mitä tuleman pitää. Ja ainahan voi yrittää kuoleman jälkeen uudestaan. Tuon ydinpommin idea tosiaan on, että sitä ei saa ampua. Sen pitää antaa laskeutua maahan.
AtskaFin kirjoitti:
Metabolix kirjoitti:
Muista ilmoittautua kisaan
Enkös ole jo ilmoittautunut kisaan? Ainakin lisäsit minut ilmoittautuneiden listalle ja lähetit vahvistus viestin.
Totta! Tarkoitin, että muista laittaa myös se paketti johonkin (vaikka ilmoittautumislomakkeen kautta tai jostain ladattavaksi). Aikaisemmin on käynyt niin, että kilpailujen pelit ovat kadonneet netistä, ja sen takia haluaisin nämä varmuuden vuoksi talteen. Toki ensisijaisesti voidaan laittaa linkki omaan versioosi, jos pystyt hostaamaan sitä.
Pari pientä kehitysehdotusta peliin liittyen, jotka voit halutessasi toteuttaa:
- Satunnaisuuden poistaminen liittyen pelin loppumiseen. Eräs tällainen seikka on, kun laskuvarjohyppääjä laskeutuu reunalla olevan skootterimiehen päälle. Tämän seurauksena skootterimies alkaa välittömästi ampua, jota on mahdotonta estää pelaajan seisoessa pelikentän keskellä. Eli "Tippuvat laskuvarjohyppääjät tappavat skootterimiehen tippuessa tämän päälle" ei välttämättä olekaan hyvä ominaisuus.
- Toinen hieman ikävä seikka on odotelle ydinpommin häviämistä sen tippuessa kentälle. Voisiko ydinpommi olla vaaraton jo siinä vaiheessa, kun sen laskuvarjo alkaa laskeutumaan?
Versio 2.1.0 on nyt pelattavissa.
Uutta:
En kerkeä enää kehittää peliä ennen kisan loppua lomareissun takia.
Metabolix: Lähetin koodipaketin kilpailu@ohjelmointiputka.net -spostiin.
Hei,
Testaapa huviksesi tasoa kymmenen. En tiedä oliko sattumaa vai ei, mutta aikaisemmassa peliversiossa skootterimiehet ja ydinpommit sattuivat harvoin yhtä aikaa kentälle. Nyt useissa kokeiluissani tasolla kymmenen peli päättyy joko siihen, että ammut ydinpommin tai jäät skootterimiehen yliajamaksi. Ymmärrän kyllä, että pelin täytyy loppua joskus ja siksi myös kenttien pitää vaikeutua. Pelaajan kannalta herkullisin lopetus olisi kuitenkin se, että peliä olisi voinut jatkaa vielä, jos olisi pystynyt pikkuisen parempaan.
Kokeileis Metabolixen neuvoa nostaa itsesi haluamallesi pelitasolle ja testaa onko kaikkia tasoja ylipäätään mahdollista pelata. Viimeisiä pelitasoja voi pitää myös tasaisen vaikeina. Tällöin peli loppuu vääjäämättä siihen, että pelaaja tekee joskus vahingossa virheen. Toisin sanoen pelin toimintalogiikkaa antaisi mahdollisuuden jatkaa peliä, mutta jossain vaiheessa energiavarat vain ajautuvat tyhjiksi tai pelaaja sortuu huolimattomuusvirheeseen.
Jos taso kymmenen on mielestäsi edelleen pelattava, niin voit unohtaa tämän viestini (en vain itse kyennyt jatkamaan tuosta eteenpäin peliä).
Laitoin edellisessä päivityksessä ydinpommit tippumaan nopeammin, enkä ajatellut niiden osuvan silloin yhtä aikaa skootterimiehien kanssa kentälle.
Tämähän pitäisi vielä muuttaa. Käväisen kotona 28. päivä, koitan silloin keretä muuttamaan asian. Pahoittelut.
Hyvä peli!!
Kyllä se viimein paukahti läpi, kun jaksoi tarpeeksi monta kertaa yrittää. : )
Edit: Myös taso 10 on realistinen pelattava. Myöhemmät tasot tarjoavat tasaisesti enemmän haastetta.
Pienimuotoinen kuvaus pelistä saattaisi olla piristävä päivitys. Kuvaus voisi olla joitain tähän tyyliin:
"Päätehtävänäsi on tuhota kaksi kaksi pommikonetta ja varoa laskeutuvien laskuvarjohyppääjien räjähteitä. Mikäli laskuvarjohyppääjät pääsevät pakenemaan pelikentältä niiden laskeutumisien jälkeen, saat pienen puolen sydämen energiavajauksen kustakin hyppääjästä. Lisäksi pelissä on mukana rynnäkkökivääreillä varustautuneita skootterimiehiä. Varo jäämästä skootterimiehien yliajamaksi, koska tällöin peli loppuu välittömästi. Rynnäkkökiväärien laukaukset heikentävät kokonaisenergiamäärääsi, kuten myös lähelläsi tapahtuvat "pamaukset". Mustat pelissä esiintyvät ydinpommit ovat erittäin vaarallisia. Niitä ei saa missään vaiheessa ampua. Peli loppuu, kun energiavarat ajautuvat nollaksi. Pelitasot vaikeutuvat tasaisesti ja ovat lopussa haastavia. Maksimissaan kenttiä on kolmetoista, jonka jälkeen alkaa "free play" moodi. Moodissa on mahdollista kerryttää jo kasattua kokonaispistepottia vieläkin suuremmaksi. Oikein paljon pelaamiseen riemua! Yritähän selviytyä pelissä mahdollisimman pitkälle. :)"
En päässytkään lomilta muuttamaan tuota ydinpommin vauhtia, mutta hienoa jos se kerta on mahdollista nykyisellään voittaa.
Eikai sitä voi kun hattua nostaa hienosti tehdystä kuvauksesta. Kisaan on jo lähetetty nykyinen versio (ja en muutenkaan pääse koneelle muuttamaan koodia), joten en tule lisäämään kuvausta itse pelisivulle ainakaan vielä.
Tuo kuvauksesi oli paljon parempi, kuin ilmoittautuessani antamani kuvaus (ilmoittautuneiden pelien lista). Olisin voinut vaihtaa kuvauksesi omani tilalle listaan, mutta viestiä ei voinyt muokata enään.
AtskaFin kirjoitti:
Tuo kuvauksesi oli paljon parempi, kuin ilmoittautuessani antamani kuvaus (ilmoittautuneiden pelien lista).
Voin vaihtaa kyllä tuollaisen kuvauksen kisaan.
Ilmoittautumisviestistä voisi vaihtaa kohdan
"Paratrooper invasion on nettipeli, jossa tarkoituksena on kerätä mahdollisimman paljon pisteitä tuhoamalla hyökkääviä vihollisia. Jos viholliset saavat tapettua pelihahmosi, peli päättyy."
hieman muutettuun mpnin kuvaukseen:
"Päätehtävänäsi on tuhota vihollisen pommikoneet ja estää laskeutuvien laskuvarjohyppääjien pääsy maallesi. Mikäli laskuvarjohyppääjät pääsevät pakenemaan pelikentältä niiden laskeutumisien jälkeen, saat pienen puolen sydämen energiavajauksen kustakin hyppääjästä. Lisäksi pelissä on mukana rynnäkkökivääreillä varustautuneita skootterimiehiä, jotka yrittävät ajaa ylitsesi. Vihollisten tiputtamat ydinpommit ovat erittäin vaarallisia, eikä niitä saa missään vaiheessa ampua. Peli päättyy energiavarojen loppuessa.
Pelitasot vaikeutuvat tasaisesti ja ovat lopussa haastavia. Maksimissaan kenttiä on kolmetoista, jonka jälkeen alkaa "free play" -pelitila, jossa on mahdollista kerryttää jo kasattua kokonaispistepottia vieläkin suuremmaksi. Oikein paljon pelaamiseen riemua! Yritähän selviytyä pelissä mahdollisimman pitkälle. :)"
Ilmoittautumisviestin loppuun voisi lisätä vielä seuraavan maininnan:
"Kiitos käyttäjälle mpni luovasta kuvauksesta."
Aihe on jo aika vanha, joten et voi enää vastata siihen.