maanantai 30. marraskuuta 2009

Viimeisistä leveleistä

Tämä onkin siis marraskuun viimeinen blogipäivitys ja näyttää siltä, että näitä tuli marraskuussa yhtä monta kuin lokakuussakin. Kaksi kuukautta on takana, mutta nyt asiaan.

Tuolla joskus aikaisemmin taisinkin jo kertoa jotain tästä levusysteemistä, mutta nytpä kerron vielä uudestaan vähän tarkemmin. Siis jokaisella taidolla on leveleitä nollasta viiten eli 5 on maksimilevu. Kuitenkaan jokainen taito ei voi tätä saavuttaa vaan vain yksi, koska se on sen verran parempi leveli muihin verrattuna. Kun yksi taito saavuttaa levelin 4, muiden maksimilevut asettuvat kolmeen. Siispä yksi voi saavuttaa viiden ja muut vain kolmen.
Vitoslevu on siis paljon parempi, mutta kuinka?

Vahinko
Tässä panosten tekemät vahingot menevät levujen mukaan nollasta viiteen: 1, 2, 3, 4, 6, 12 (ainakin vielä tällä hetkellä). Joka levulla saa siis aina yhden vahinkoa lisää, nelosessa jopa kaksi ja viimeiseen leveliin se tuplaantuu.

Tarkkuus
Tarkkuussysteemistä on ollut aika paljon puhetta jo aikaisemminkin, mutta viimeisellä levelillä jokainen panos on täysin tarkka, jolloin ne tekevät myös tuplavahingon.

Nopeus
Samantapainen kuin vahinko. Viimeinen leveli on todella nopea ampumaan.

Hakeutuvuus
Joka levelillä panosten hakeutuvuus kasvaa vähäsen, mutta viimeisellä levelillä jokainen panos osuu varmasti johonkin kohteeseen.

Näin siis nämä. On varmaan sanomattakin selvää, että jos kaikki taidot voisivat saavuttaa viimeisen levelin, olisi peli aika voitettu. Tämä systeemi tekee pelistä myös vähän mielenkiintoisemman, kun voi valita minkä taidon haluaa viimeiselle levelille. Sitten on olemassa vielä se peruslevu, mutta siinä ei ole mitään erityistä. Aina kun saa sellaisen, saa vain 1000 ilmaista expaa johonkin muuhun levuun.

lauantai 28. marraskuuta 2009

Hiscoret valmiit

Nyt on siis hiscore-systeemi saatu kokonaan valmiiksi. Etukäteen vähän hirvitti sen tekeminen, koska siinä oli melko paljon tehtävää. Loppujen lopuksi tehtävää oli kuitenkin vähemmän, mitä odotin, mutta silti aika paljon.

Ensinnäkin piti tehdä systeemi, joka tulostaa tekstiä yksittäisistä kirjaimista, koska tähän mennessä kaikki pelissä esiintyvät tekstit olivat olleet kokonaisia kuvia. Päätin koodata tämän systeemin itse, vaikka tarjolla olisi ollut kirjastokin, joka olisi osannut tehdä tämän suoraan fonttitiedostolla. Kirjastoja on kuitenkin jo aika monta mukana, joten päätin säästää tässä asiassa. Sitten piti tehdä systeemi, joka lukee käyttäjän painamat näppäimet, jotta voitaisiin kysyä pelaajan nimi hiscoreihin. Näissä molemmissa systeemeissä oli luonnollisesti aika paljon tehtävää, koska kirjaimia on kuitenkin melko paljon.
Sitten enää puutuikin sivu, joka näyttää hiscoret, mutta se meni jo vähän nopeammin, koska tekstin tulostus oli jo hanskassa.

keskiviikko 25. marraskuuta 2009

Selkeämpi sivupalkki

Tuossa muutamia päiviä sitten joku tuntematon henkilö lisäsi tähän blogiin ensimmäisen kommentin, jossa hän ehdotti noiden damage ynnä muiden valikoiden selkeyttämistä. Niinpä päätin tehdä tämän ja kiitos sinun, uskoisin, että ne ovat nyt paljon selkeämmät.
Tuossa on siitä kuva:


Tuossa siis tuo, enkä taida tuosta nyt tässä enää mitään sanoa...

Sitten vielä vähän tilastotietoutta, mikä muuten unohtui edellisen kuvan yhteydestä:
  • Pelin latautuminen kestää noin 2.6 sekuntia
  • Peli rohmuaa käynnistyessään 145Mt muistia
  • Pelin lähdekoodissa on 2997 riviä koodia
Muistia menee muuten taas vähemmän! :)

sunnuntai 22. marraskuuta 2009

Blogin ulkoasun päivitys

Nyt siis viimein jaksoin päivittää tämän blogin ulkoasun paremmin vastaamaan sen aihetta. Nyt kun pelin grafiikkakin alkaa olemaan lopullisen näköinen, saatoin lisätä saman tapaista grafiikka tähän blogiinkin. Ensinnäkin yläreunassa on nyt uusi hieno banneri ja sen takia blogi on nyt myös hieman leveämpi. Samalla vaihdoin taustakuvan ja tunasin fontteja ja värejä.

Sitten on vielä yksi uusi juttu, jonka lisäsin tuohon oikeaan sivupalkkiin. Nyt sieltä näkee pelin edistymisen ja tällä hetkellä siellä näyttäisi olevan vielä aika paljon tekemätöntä tavaraa.

perjantai 20. marraskuuta 2009

Kuva menusta

Viime aikoina olen työskennellyt menun kimpussa, ja aika paljon olen jo saanut aikaankin. Tuossa on sitten kuva aivan siitä ensimmäisestä menusta, mikä ruutuun ilmestyy käynnistäessä pelin.


Tuolta siis tulee menun grafiikat näyttämään. Siinä on hiiri tuon new game-napin päällä ja sen takia se on korostunut.
Nyt siis on jo new game- ja exit game-napit toiminnassa. New gamea painamalla tulee uusi menu, josta voi valita pelattavan kartan, joita on kuitenkin tällä hetkellä vasta se yksi survival. Itse pelissäkin voi painaa esciä, josta avautuu pelin päälle pieni menu, josta voi sitten halutessaan palata menuun. Hi-scoret, settingit ja creditit teen sitten myöhemmin.

keskiviikko 18. marraskuuta 2009

Pistesysteemi

On jo varmaan selvinnyt, että tässä pelissä ei mitään tehdä yksinkertaisesti, eipä siis pisteitäkään saa yksinkertaisesti. Parissa kuvassahan on jo vilahtanut pisteet siellä oikeassa palkissa ja ensinnäkin niistä huomaa, että siellä ei ole mitään ylimääräisiä nollia perässä. Joissakin ääripäänpeleissähän saattaa olla loppupisteet jopa 738000000, mutta minä en itse pidä ollenkaan noista nollista tuolla perässä. Niinpä tässä pelissä ei tule olemaan ollenkaan ylimääräisiä nollia pisteissä.

Sitten itse pisteiden antamiseen. Koska jokaisesta vihusta ei saa aina samaa määrä pisteitä, pisteiden pitää riippua jostakin, ja tässä pelissä ne riippuvat luonnollisesti expasta, koska expat ovat niin tärkeä ja iso juttu tässä pelissä. Joka tapon yhteydessä siis katsotaan paljonko mitäkin expaa sai, ja niiden perusteella annetaan pisteitä. Heti voi varmasti keksiä hienon systeemin tähän: lasketaan kaikki saadut expat yhteen ja lisätään ne pistesaaliiseen. No, ihan hyvä idea, mutta tässä pelissä se on kuitenkin paljon monimutkaisempi.

Ja nyt se selviää: aluksi kaikkien taitojen saadut expat kerrotaan yhteen, laitetaan ne neliöjuureen ja jaetaan kymmenellä. Nyt yhdestä vihusta voi saada 1-1000 pistettä ja pisteiden saanti riippuu enemmän taidoista, mutta miten?
Tässä seuraavaksi on piirretty hieno kuvaaja funktion f(x) = sqrt(x^4) / 10 mukaan, eli siinä oletetaan, että jokaisesta taidosta olisi aina saatu sama määrä (x-määrä) expaa:

Siitä siis muodostuu tuollainen nouseva käyrä (itseasiassa funktion f(x) = x² / 10 kuvaaja). Kuvaajasta voi esimerkiksi ottaa kohdan, jossa kaikista taidoistaa saa 50 expaa, jolloin pisteitä saa 250. Jos taas jokaisesta taidosta saisi 100 expaa, saisi pisteitä täydet 1000. Siis, expojen kasvaessa pisteet eivät kuitenkaan kasva samassa tahdissa vaan vasta saadessa huippuexpoja voi saada oikeasti suuria pisteitä.

sunnuntai 15. marraskuuta 2009

Kappas, fps parani tähtitieteellisesti!

Opin tuossa, kuinka SDL:n Surfaceja eli kuvapintoja voi optimoida nopeampaa piirtoa varten ja niinpä fps parani varsin mukavasti. Pelissä fps nousi 100:sta 1000:een ja kaupassa 50:stä 5000:een, eli aika *lvetin paljon. Samoin pieneni muistin kulutus muutamalla megalla, mutta se ei kuitenkaan ollut kovin merkittävää. Tämän takia pelin latautumiseen kuluva aika kuitenkin kasvoi puolella sekuntilla, koska optimointiin menee jonkin aikaa, mutta eihän se haittaa, koska nyt tätä peliä voi pelata paljon vanhemmallakin raudalla.

Tuossa on vielä se mainio funktio, jolla tämä oli mahdollista:
kuville ilman alpha-kanavaa: SDL_DisplayFormat(kuvapinta)
ja kuville alpha-kanavan kanssa: SDL_DisplayFormatAlpha(kuvapinta)

keskiviikko 11. marraskuuta 2009

Tähtäimen tarkkuus

Nyt siis selviää, kuinka tuo tähtäin tarkentuu... sillä sekään ei ole aivan yksinkertaisesti tehty tässä pelissä. On siis jo selvää, että tähtäin tarkentuu, kun sitä ei liikuta ja ei ammu. Tähtäin ei kuitenkaan tarkennu tasaista vauhtia, vaan sen tarkentuminen hidastuu, mitä tarkemmaksi se tulee. Päätin tehdä tällaisen systeemin, jotta tähtäimen saisi nopeasti vähän tarkemmaksi, mutta jos haluaa kriittisen ammuksen (eli, kun tähtäin on tullut täysin tarkaksi) saa odottaa paljon kauemmin. Tällainen tähtäin on saatu aikaan niin, että joka framessa kerrotaan tarkkuuden arvo tietyllä luvulla, kun taas sellainen tähtäin, joka pienenisi tasaista vauhtia, saataisiin aikaan vähentämällä tarkkuudesta joka framessa tietty luku.
Tämän lisäksi pelissä on taito tarkkuudelle, joka parantaa tarkkuutta pelin edetessä. Taidon karttuessa tähtäimen pieneneminen nopeutuu ja sen maksimikokokin pienenee.

sunnuntai 8. marraskuuta 2009

Nyt alkaa näyttämään jo joltakin

Taas on aika näyttää uusi kuva. Nyt alkaa pelin perusmekaaniikat olemaan jo kasassa, ja nyt enää pitäisi tehdä itse peliin ehkä vielä jokunen vihollinen ja sitten itse se kartta, mitä pelata. Näiden lisäksi on kuitenkin vielä paljon tehtävää, kuten loading ruutu, menu, hiscoret ja muuta, joten kovin valmiita ei nyt kuitenkaan vielä olla.
Ja se kuva on nyt tässä:


Grafiikoista vielä sen verran, että lopullinen peli tulee näyttämään aika lähelle tuota. Sivu- ja alapalkit, tausta ja vihulaiset eivät luultavasti tule enää muuttumaan tuosta yhtään. Tykkiä varmaan vielä parantatelen ja sitten vielä lisään joitakin partikkeliefektejä joihinkin paikkoihin.

Loppuun vielä pari fun factia, kuten aina:
  • Pelin latautuminen kestää noin 2.0 sekuntia
  • Peli rohmuaa käynnistyessään 162Mt muistia
  • Pelin lähdekoodissa on 2205 riviä koodia
Nuohan ovatkin jo paljon paremmat lukemat kuin viimeksi. :)

lauantai 7. marraskuuta 2009

Vihollis- ja karttasysteemi valmis

Nyt on siis vihollissysteemi valmis, eli mukana on nyt kolme erilaista vihollista, joiden ominaisuuksia voi muokata. Tällä hetkellä ainakin, vihollisina toimivat vielä kolme eri väristä palloa, sininen, vihreä ja punainen. Vihreä vihulainen on nopeampi ja punainen on kestävämpi. Sininen on siitä välistä. Saatan kuitenkin vielä tehdä myös joitakin muita vihollisia ensimmäiseen versioon.
Tämän lisäksi on myös karttasysteemi saatu valmiiksi eli kartat tehdään kirjoittamalla tekstitiedostoon juttuja ja sieltä peli sitten lataa pelattavan kartan. Ekaan versioon ei kuitenkaan tule kuin se yksi survival-kartta, mutta ainakin omien karttojen tekeminen on alusta asti mahdollista, jos sellainen kiinnostaa. Tämä systeemi tulee olemaan käytössä myös tulevaisuuden "uramoodissa".

Sitten vielä kerron millainen se kartta-tiedosto tulee olemaan. Jokaisella erilaisella vihollisella on oma spawneri, ja nämä spawnerit ovat kartta-tiedostossa peräkkäin. Yksi tällainen spawneri voisi näyttää esimerkiksi tältä:
spawner:
start           5
end             -1
rate            5
raterandom      50
minrate         1
progress        0.01
enemy:
type            -1
value           1
speed           0.4
speedrandom     75
size            2
health          1
Mutta eipä tuosta nyt vielä enempää. Kohta puoliin ajattelin taas näyttää yhden kuvat, jossa näkyy nyt hieman päivitetyt grafiikat ja niitä uusia vihollisia.

torstai 5. marraskuuta 2009

Jaa koodi tiedostoihin

Vielä vähän aikaa sitten, kaikki tämän pelin lähdekoodi oli yhdessä tiedostossa yhdessä pitkässä pötkössä. Kun koodirivejä alkoi olla jo yli 1500, alkoi käydä vaikeaksi löytää sieltä enää mitään nopeasti. Niinpä nyt tässä parin viimepäivän aikana opettelin, kuinka jakaa koodi eri tiedostoihin ja se on todellakin helpottanut hommaa. Siispä, jos joskus alat ohjelmoida, tämä kannattaa todellakin opetella.
Tämän ja muunkin pienen koodin optimoinnin takia ei ole ollut nyt hirveästi edistystä viimeaikoina.

keskiviikko 4. marraskuuta 2009

Kauppasysteemi valmis

Nyt on "kauppa" saatu valmiiksi. Ei se kyllä ihan nimensä mukaisesti kauppa ole, vaan pelaaja pääsee valitsemaan, mille taidolle ottaa 1000 ilmaista expaa aina, kun saa yhden peruslevelin.
Tässä on vielä yksi kuva siitä. Siinä peli pysähtyy ja se jää tuonne taustalle näkymään vähäsen samalla, kun siihen päälle tulee tuo kaupparuutu. Tuolla oikeassa sivupalkissa näkyy uutuutena nyt myös pisteet ja FPS.