Tekstit

Tasohyppelypeli 7: bittikarttatiedostojen lataaminen ja spritejen piirtäminen

Aiemmissa osissa on keskitytty siihen, että koodausprojektimme tuntuisi peliltä, mutta nyt pääsemme tekemään pelistämme myös pelin näköisen. Hylätäänpä siis kentän osalta harmaat, punaiset ja siniset neliöt ja korvataan ne bittikarttagrafiikalla!

Grafiikan käsittely GIMPissä

Ihan mitä tahansa grafiikkaa eivät Allegro ja DOS kelpuuta. Tässä postauksessa käydäänkin läpi, mitä GIMPissä täytyy tehdä, jotta ladatut bittikartat näkyvät pelissä oikein.

Buumeriräiskintä 5: Kerättävät esineet

Tässä osassa koodataan ensiapupakkaus, jonka kerätessään pelaaja saa menettämänsä terveyspisteet takaisin.

Buumeriräiskintä 4: Pelaajan kuolema ja terveyspisteet sekä pelin läpäisy

Tässä osassa koodataan pelaajan kuolema ja pelin läpäisy.

Buumeriräiskintä 3: Vihollisten käyttäytyminen

Tässä osassa koodataan vihollisille kyky havaita pelaaja, ampua sitä ja liikkua sitä kohti.

Buumeriräiskintä 2: Vihollisten piirtäminen ja tuhoaminen

Nyt, kun pelaajahahmomme pystyy ampumaan, pitäähän meidän antaa hänelle jotain mitä ampua! Lisätään siis vihollisten piirtäminen sekä niille kyky kuolla pelaajan ammuksen osuessa niihin.

Buumeriräiskintä 1: Alkuvalmistelut ja pelaajan ampumiskyky

Nyt kun meillä on hieno raycaster-pelimoottori, koodataan sille pieni peli! Ei mitään ihmeellistä, vaan oikein perinteistä buumeriräiskintämeininkiä, jossa pelaaja pistää vihulaisia matalaksi ampumalla niitä tarpeeksi monta kertaa. Pelin pääsee läpi, kun kaikki kentän viholliset on tuhottu, ja pelaaja kuolee, jos viholliset osuvat pelaajaan tarpeeksi monta kertaa. Pelaaja saa terveyspisteensä täyteen keräämällä ensiapulaukun. Eiköhän aloiteta! 

Raycaster-pelimoottori 4: Spritejen piirtäminen

Tähän asti raycaster-pelimoottorimme grafiikka on koostunut ainoastaan seinistä, mutta pelkillä seinillä ei voida esittää kaikkea sitä, mikä tekee pelistä pelin. Tällaisia asioita ovat esimerkiksi huonekalut, kerättävät esineet, viholliset ja lentävät ammukset. Implementoidaan siis spritejen piirtäminen, minkä avulla voidaan esittää kaikki tuo!

Raycaster-pelimoottori 3: Seinien tekstuurit

Pelkät yksiväriset seinät ovat aika tylsiä, kuten jo tasohyppelypelin tapauksessa havaittiin; tuleehan iso osa pelin tunnelmasta siitä, miltä se näyttää. Yksi parannus on seinien piirtäminen bittikarttatekstuurien avulla, ikään kuin yksiväriselle pinnalle levitettäisiin tapetti. Tässä osassa lisätään siis teksturoitujen seinien piirtäminen.

Raycaster-pelimoottori 2: Seinien piirtäminen ja pelaajan liikkuminen

Tässä osassa lisätään seinien laskeminen ja piirtäminen sekä pelaajan liikkuminen törmäystunnistuksineen.

Raycaster-pelimoottori 1: Alkuvalmistelut ja pelitila

Joillekin ei riitä kaksi ulottuvuutta. Tai akselia. Tai suuntaa. Miten vain. Mutta ei minullekaan, eli uteliaisuus vei voiton ja pakotti selvittämään, taipuuko Allegro-kirjasto "kolmiulotteisen", ns. raycaster-pelimoottorin sujuvaan pyörittämiseen. Taipuihan se, tosin Lode Vandevennen raycaster-tutoriaalin ja ChatGPT:n isolla avustuksella. Koodataanpa siis raycaster-pelimoottori!

Tasohyppelypeli 6: Kentän skrollaaminen

Tässä osassa mahdollistetaan se, mikä tekee pelistä kuin pelistä oikeasti mielenkiintoisen ja jopa jännittävän: koodataan ruutua suurempi kenttä ja skrollataan sitä pelaajahahmon liikkuessa; näin koko kenttä ei lävähdä pelaajan näkyviin heti alussa, ja pelaajassa herää uteliaisuus tutkia koko kenttä.

Tasohyppelypeli 5: Painovoima ja hyppääminen

Tässä osassa pelistämme tulee ihan oikea tasohyppelypeli, nimittäin sen sijaan, että pelaajahahmo pystyy lentämään ympäriinsä, muutetaan liikkumista niin, että kaikki pystysuuntainen liike on joko putoamista tai ponkaisua ylöspäin. Koodataan siis painovoima ja hyppääminen!

Tasohyppelypeli 4: Aarrejahti ja pelin läpäisy

Tässä osassa koodataan kenttään aarteita (eli "hienoja" sinisiä neliöitä), jotka keräämällä pelin pääsee läpi.

Tasohyppelypeli 3: Kuolema!

Elämä on lyhyt, etenkin pelihahmoilla. Tässä osassa koodataankin pelaajan kuoleminen, joka voi tapahtua kahdella tavalla: osumalla punaiseen tiileen tai putoamalla kentästä pois. Tällöin tulostetaan ruutuun teksti pelaajan kuolemisesta ja annetaan vaihtoehdoiksi joko aloittaa peli uudestaan painamalla Enteriä tai poistumalla päävalikkoon painamalla Esciä.

Tasohyppelypeli 2: Kentän piirtäminen ja seiniin törmääminen

Tästä tuleekin aika hurja osa tähän tutoriaalisarjaan: ensin rakennetaan kenttä ja koodataan sen piirtäminen, sitten toteutetaan törmäystunnistus, jota varten kaikki kenttään piirretyt tiilet kerätään sijainteineen taulukkoon.

Tasohyppelypeli 1: Pelaajahahmon piirtäminen ja liikuttaminen

Tässä osassa päästään tositoimiin varsinaisen pelitilan kanssa! Tähän asti tekemämme alkuvalikko voi olla alkuvalikko millaiselle pelille tahansa, mutta nyt, kun alamme koodaamaan varsinaista pelitilaa, voisi olla hyvä selvittää, millaista peliä olemme toteuttamassa: peli on perinteinen tasohyppely, jossa keltainen neliö – pelaajahahmo – hyppelee harmaassa neliömaailmassa, kerää sinisiä neliöitä ja väistelee punaisia kun kaikki siniset neliöt on kerätty, peli on läpäisty jos pelaajahahmo osuu punaiseen neliöön tai putoaa ulos kentästä, hän kuolee ja kenttä alkaa alusta.

Alkuvalikko ja pelitila

Nyt päästään kunnon hommiin, nimittäin pelimme varsinaiseen koodaukseen! Ensin toteutetaan alkuvalikko ja pelitila, joiden pohjalta voidaan koodata peli kuin peli.

Hello world allegrolaisittain

Seuraavaksi tiiraillaan demo-ohjelma Exhellon lähdekoodia, jotta pääsemme selville siitä, miltä Allegro-kirjastolla toteutettu C-ohjelma pienimillään näyttää. Ohjelmassa piirretään valkoiselle pohjalle musta teksti "Hello, world!" ja odotellaan minkä tahansa näppäimen painallusta, joka sulkee ohjelman.

Ympäristö pystyyn 2: DJGPP-kääntäjä ja Allegro-kirjasto

Seuraavaksi ladataan ja konffataan kirjoittamamme pelikoodin kääntäjä – DJGPP – sekä Allegro-kirjasto, joka sisältää kaikki pelidevauksessa tarvittavat rutiinit grafiikan, äänen ja musiikin esittämisestä näppäinpainallusten lukemiseen; aika paljon likaista koodaustyötä on siis jo tehty, huh.

Ympäristö pystyyn 1: DOSBox

Tässä osassa perehdytään DOSiin ja asennetaan DOSBox-emulaattori.