tiistai 29. joulukuuta 2009

Grafiikoiden piirtäminen

Kaikki tämän pelin grafiikka on tehty ohjelmalla nimeltä GIMP. Se on ilmainen ohjelma, josta löytyy lähes kaikki samat ominaisuudet kuin Photoshopista. Kun tuota tarpeeksi käyttää, pystyy sillä tekemään yksinkertaisilla menetelmillä hienoa grafiikkaa. Kuten jo sanoin tämän blogin aika alussa, en ole kovin hyvä piirtäämään kuvia. Yksinkertaisten muotojen kuten pallojen ja neliöiden piirtäminen kyllä onnistuu ja GIMPin avulla minäkin pystyn tekemään varsin hienoa grafiikkaa vain näiden muotojen avulla. Ainakin omasta mielestäni tämän pelin grafiikka on hienoa ja onnistunutta. Ei siis välttämättä tarvitse olla taitava piirtämään tehdäkseen hienon näköisen pelin.



Pelin edistymisestä vielä sen verran, että nyt on ollut vähän hidasta, koska osallistun Ohjelmointiputkan tekoälyn ohjelmointi-kilpailuun.

keskiviikko 23. joulukuuta 2009

Testaajat ovat tärkeitä

Testaajat ovat erittäin tärkeitä pelejä tehdessä. Pelejä ei pitäisi tehdä vain yksin ja testata itse, vaan on hyvä olla myös muita testaamassa. Tässä, kun olin tehnyt tuota survival karttaa tähän peliin, se tuntui omasta mielestäni eräittäin helpolta ja ajattelin, että sitä voisi vaikeuttaa aika paljon. Kuitenkin, kun sain yhden toisen testaamaan sitä, se osoittautuikin paljon vaikeammaksi mitä kuvittelin.
Olen huomannut, että on varsin yleistä tällaisten pikkupelien keskuudessa, että ne ovat erittäin vaikeita, ja luultavasti juuri sen takia, että pelin tekijä on ollut ainoa, joka on omaa peliään testannut. Pelin tekijä kun tulee muutenkin pelanneeksi peliään kaikista eniten, on hän varmasti tullut erittäin hyväksi siinä ja nostaa vaikeusasteen liian korkealle. Aloittelijoille pelistä tuleekin sitten aivan liian vaikea.

sunnuntai 20. joulukuuta 2009

Tämänhetkinen tilanne

Tässä viime aikoina pelin kehitys on edelleen ollut varsin hidasta, koska on ollut niin paljon muuta tehtävää. Välillä ei ole ehtinyt muuta kuin lyhyissä puolen tunnin pätkissä tekemään tätä ja se ei ole kyllä kovin hyväksi ollut. Hyvä jos siinä ehtii kunnolla edes aloittamaan ja sitten, jos on juuri saanut jonkun hienon idean, niin se voi unohtua, kun joutuu heti keskeyttämään. Mutta kyllä tämä nyt tästä pikku hiljaa valmistuu. Nyt alkoi joululoma ja toivon mukaan saan tehtyä tätä taas vähän enemmän.

Nyt on viimeksi tullut tehtyä vain tuota ensimmäisen version ainutta survival-karttaa ja siinä samalla säätänyt taitojen vaikutusta, niiden kertymistä ja kaikkea muutakin pientä. Tuon jälkeen ei sitten enää kamalan paljoa tehtävää olekaan. Joitakin menusysteemejä vielä ja sitten tietysti nuo kaikki ääniefektit. Sopivien äänien etsimisessä voi kyllä mennä aikaa.

Tämän hetkistä tilastotietoa:
  • Pelin latautuminen kestää noin 2.8 sekuntia
  • Peli rohmuaa käynnistyessään 152Mt muistia
  • Pelin lähdekoodissa on 4356 riviä koodia

keskiviikko 16. joulukuuta 2009

Panosten törmääminen viholliseen

Nyt kerron, kuinka panosten ja vihollisten välinen törmäys on tässä pelissä toteutettu. Törmäystarkistuksiahan voi peleissä tehdä monilla eri tavoilla ja ympyröiden käyttämistä törmäystarkistukseen käytentään uskoakseni varsin paljon. Eli objektin ympärille kuvitellaan ympyrä ja katsotaan osuuko se toisen objektin ympärillä olevaan ympyrään. Periaatteessa se on sama, kuin testattaisiin näiden kahden kahden objektin keskipisteiden välinen etäisyys ja niin se myös käytännössä toteutetaan. Tämä seuraava kuva havainnollistaa hienosti kyseistä systeemiä:


Tässä systeemissä on kuitenkin yksi ongelma. Koska panokset liikkuvat nopeasti ja niitä voidaan liikuttaa vain framejen vaihtuessa, panokset ikään kuin pomppivat eteenpäin. Jos vihollinen on liian pieni, panos voi pompata tämän yli, vaikka näyttäisi, että se osuisi. Seuraava kuva yrittää havainnollistaa tätä tapahtumaa:


Niinpä tätä voidaan yrittää korjata tekemällä vihollisen ympärillä olevasta osuma-alueesta suurempi. Tässä tapauksessa syntyy kuitenkin toisenlainen ongelma. Nyt, vaikka panos menisi selvästi ohi vihollisesta, se voi silti osua, kuten seuraava kuva havainnollistaa:


Jotta tämä saataisiin korjattua, olen lisännyt tähän peliin vielä toisenlaisen tavan tarkistaa törmäys. Siinä kuvitellaan, että panoksen kulkema reitti synnyttää viivan ja sitten lasketaan vihollisen etäisyys tähän viivaan. Tämä oli varsin yksinkertaista toteuttaa, koska taulukkokirjasta löytyi valmis kaava tämän laskutoimituksen tekemiseen. Tämä törmäyssysteemi näyttäisi seuraavanlaiselta:


Kun nämä kaksi törmäystarkistusta yhdistetään saadaan aikaiseksi kyseinen systeemi törmäyksen tarkistamiselle. Siinä on saatu korjattua kaikki viat, paitsi yksi. Nyt panos näyttäisi osuvan viholliseen liian aikaisin, mutta se on helppo korjata. Piirretäänkin panos hieman edemmäs, kuin missä se todellisuudessa on.

lauantai 12. joulukuuta 2009

Pelin kehitys on hieman hidasta

Pelin kehitys on viime aikoina ollut erittäin hidasta, koska koulu puskee päälle. Ensi viikon jälkeen alkaa kuitenkin joululoma, jolloin toivottavasti saan tätä taas vähän enemmän eteenpäin.
Jotain on kuitenkin saatu valmiiksi: kaikki partikkeliefektit ovat nyt valmiita ja menumusiikkikin on melkein valmis.

maanantai 7. joulukuuta 2009

Uusia vihollisia

Loputkin ensimmäiseen versioon tulevat viholliset ovat nyt valmistuneet. Latasin myös SDL_Mixer kirjaston ja sain musiikin soimaan peliini. Mutta nyt tässä on taas uusi kuva, jossa näkyy nyt myös loput uudet vihulaiset:


Vielä en kerro mitä nuo tekevät, ettei peli aivan spoilaannu jo etukäteen, vaan saatte odottaa julkaisuun asti.

Se tuosta, tässä vielä vähän erittäin kiinnostavaa tietoutta:
  • Pelin latautuminen kestää noin 2.7 sekuntia
  • Peli rohmuaa käynnistyessään 150Mt muistia
  • Pelin lähdekoodissa on (nyt en jaksanut laskea) riviä koodia

perjantai 4. joulukuuta 2009

Tällä kertaa teen itse musiikin

Tähän peliin päätin ensimmäistä kertaa tehdä itse musiikit. Aikaisemmissa peleissä kaikki musiikki on aina ollut jostain ladattuja ilmaisia kappaleita. Eihän siinä tietenkään mitään vikaa ollut, mutta tällä kertaa päätin tehdä näin, koska musiikin tekeminen tietokoneella on muutenkin aina kiinnostanut minua.

Tuo musiikki, joka siis soi tuossa pelin taustalla on jo oikeastaan valmis ja siitä tuli jopa neljän minuutin pituinen, mikä on mielestäni varsin hyvä saavutus. Tätä aikaisemmin en ollut oikeastaan ollenkaan tehtyn koneella musiikkia, mitä nyt rahtusen kokeillut, mutta silti sanoisin, että tästä tuli todella hyvä. Kuitenkin, kun olen jo pianoa soittanut yli kymmenen vuotta, ja opiskellut musiikin teoriaa, ei tämä ollut ollenkaan hirveän vaikeaa.

Se ohjelma jota käytin tuon tekemiseen oli ilmainen JAZZ Midi Sequencer, eli tuo kappale oli siis alunperin midi. Muutin sen kuitenkin mp3-muotoon, koska en niinkään pidä tuosta midi-muodosta. Tuo JAZZ Midi Sequencer on kyllä mielestäni todella hyvä ja varsin tehokas ohjelma, joten kyllä suosittelisin sitä, jos yksinkertainen musiikin teko kiinnostaa.

keskiviikko 2. joulukuuta 2009

Panosten hakeutuvuus

Kun kerran pelissä on hakeutuvuudella oma taito, se tarkoittaa, että panokset voivat hakeutua viholliseen, ja nyt kerron kuinka panokset valitsevat kohteensa. Yksinkertaisesti sanottuna, päätin tehdä tähän sellaisen systeemin, että panokset valitsevat aina sellaisen kohteen, joka on mahdollisimman suoraan sen edessä. Muitakin mahdollisuusksia olisi ollut, kuten panokset voisivat hakeutua siihen vihuun, joka on kaikista lähimpänä alareunaa tai panosta itseään.

Ihan aluksi sain aikaan sellaisen systeemin, että panokset hakeutuivat siihen vihuun, joka oli kaikista lähinnä sitä itseään. Kuintenkin kun viimeisellä tasolla panosten hakeutuvuus oli 100%, tuli joitakin ongelmia. Jos aivan ruudun reunassa oli vihu pääsemmässä ruudun alareunaan ja tykin läheisyydessä oli muita vihuja, sitä vihua siellä reunassa ei voinut ampua, koska ne tykin lähellä olevat vihut olivat lähempänä sitä panosta itseään. Samalla tämä systeemi oli siitä tylsä, että panokset valitsivat aina kohteet ihan itse, eikä pelaaja pystynyt vaikuttamaan siihen mitenkään. Periaattessa myös, kun olisi saavuttanut viimeisen hakeutuvuuslevelin, tähtäämisellä ei olisi enää ollut mitään merkitystä ja olisi voinut antaa vaikka tietokoneen vain pelata peli loppuun.

Nyt tässä paremmassa systeemissä, kun pelaaja ampuu johonkin suuntaan, panos yrittää valita vihollisen juuri siitä suunnasta. Näin ollen pelaaja voi paremmin vaikuttaa panosten käyttäytymiseen myös viimeisellä tasolla, jossa hakeutuvuus on 100%. Nyt siis tarvitsee edelleen edes jonkin verran taitoa myös viimeisellä hakeutuvuuslevelillä.