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ä.

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.


perjantai 30. lokakuuta 2009

Monen saman objektin luominen

Aikoinaan aina ihmettelin, miten koodaamalla olisi mahdollista saada luotua monta samaa objektia, jotka kaikki käyttäytyvät samalla tavalla. Esimerkiksi tässä minun peliprojektissani panokset ja viholliset. Jokaisella objektilla kun pitää olla aivan omat muuttujat ilmoittamaan kaikkia sen objektin ominaisuuksia, esimerkiksi koordinaatteja, missä se milläkin hetkellä sijaitsee. Aikoinaan, kun vähän CoolBasiciakin kokeilin ja joskus, kun vasta vähän tiesin C-kielestä, osasin alustaa vain yksittäisiä muuttujia. Pistää vaikka   int jotain;  niin saa alustettua yhden muuttujan. Pitäisikö siis alustaa pitkät litaniat muuttujia tarpeeksi monelle objektille ja sitte jotenkin kivasti numerojärjestyksessä laskea kaikki tarpeelliset laskut niillä läpi? No, ei tietenkään.
Itse käytän erästä menetelmää, joka on omasta mielestäni varsin hyvä ja yksinkertainen, vaikka en oikeasti tiedäkkään, tehdäänkö nämä asiat yleisesti näin. C-kielessä voi kätevästi tehdä "objektin" strucktin avulla ja sitten alustaa monta tällaista strucktia käyttämällä indeksiä: jokumuuttuja[joku luku]. Ei tarvitse käyttää mitään pitkiä muuttujalitanioita ja jokaisen noista saa myös helposti laskettua käymällä loopissa kaikki indeksit läpi.
Tässä on esimerkkinä kuinka olen vihollisen tehnyt pelissäni:
     //vihulainen
     struct vihustr {
            int elossa;
            int tyyppi;
            float nopeus;
            float koko;
            float x;
            float y;
            int energia;
     };
     struct vihustr vihu[256];
Tuossa siis aluksi määritellään millainen vihu on ja sitten alustetaan 256 tällaista vihua. Sitten kaikki nämä voi helposti laskea läpi yhdessä loopissa.

tiistai 27. lokakuuta 2009

Käyttääkkö prossua vai muistia?

Sanoisin, että peleissä voi käyttää enemmän joko tietokoneen prosessoria tai muistia, ainakin joiltakin osin. Tässä projektissa on paljon kuvia, joita täytyy pyörittää tai skaalata, kuten tykin ampumat panokset. Tämän voi tehdä kesken pelin joka framessa aina silloin, kun sitä tarvitsee, mikä kuluttaa prosessoritehoja. Tai sitten sen voi tehdä pelin latautuessa, kun peli käynnistetään, ja tallentaa kaikki muistiin. Kun kaikki käännellyt ja skaalatut kuvat on kerran laitettu muistiin, ei niitä enää pelin aikana tarvitse luoda.
Tämän SDL kirjaston kohdalla kuvien kääntely ja skaalaus on varsin hidasta. Muutenkin, kun tämä kirjasto on melko hidas kaiken piirtämisessä, niin ei haluaisi enää enempää kuluttaa prossutehoja. Siispä tämän kirjaston kohdalla on lähes pakko tehdä kaikki etukäteen pelin latautuessa, minkä takia tämä peli tulee kuluttamaan melko paljon muistia. Siis tämä peli lataa kaikki kuvat ja kääntelee ne etukäteen muistiin pelin latautuessa.
Sitten voi vielä miettiä, että lataako kaiken heti aluksi muistiin vai vasta sitten kun tarvitsee. Esimerkiksi mentäessä menusta itse peliin, poistettaisiin kaikki menun tavara muistista ja ladattaisiin pelin tavarat sinne. Tämä on kuitenkin työläämpi tehdä, joten minä päätin vain ladata kaiken kerralla muistiin. Jos ei lataisi kaikkea kerralla, tulisi myös pieni lataustauko, aina kun siirtyisi pelin ja menun välillä.

Sitten vähän mitä olen viime aikoina saanut aikaiseksi muistin käytön osalta. Kuten tuossa edellisessä jutussa kerroin, peli kulutti huimat 244Mt muista ja latasi 2.7 sekuntia. Silloin esimerkiksi vihulaisten raadoista oli 360 eri kuvaa, jokaiseen mahdolliseen suunta, kaikki muistissa. Nyt vähensin niiden määrän kymmeneen, koska eihän niitä oikeasti tarvitse noin paljon olla. Siispä nyt muistin kulutus on paljon vähäisempää. Tällä hetkellä se on noin 150Mt ja pelikin latautuu nyt 1.9:ssä sekuntissa, ja tuossa on vielä mukana paljon enemmän tavaraa kuin viimeksi (kuten muutaman uuden vihun kuvat).
Sain myös yhden (ja luultavasti myös viimeisen) muistivuodon korjattua, mistä olen varsin iloinen.

sunnuntai 25. lokakuuta 2009

Toinen kuva

Toinen kuva on täällä ja edistystä on varsin mukavasti:


Yläkulmassa siis näkyi FPS, joka on nyt 93. Se näyttää sen, mihin oma kone pystyisi, mutta peli on rajoitettu pyörimään enintään 40:ssä FPS:ssä. Toinen luku on vain debug-tarkoituksiin ja se näyttää senhetkisen tarkkuuden.
Sitten mitä uutta on edellisestä kuvasta. Vihollisilla on nyt uusi kuva ja siellä on myös erikokoisia vihollisia, jotka on skaalattu alkuperäisestä kuvasta. Erikokoiset viholliset eivät kuitenkaan vielä eroa toisistaan ja siellä tulee kyllä olemaan erinäköisiäkin vihollisia. Toinen hieno juttu on, että nyt vihollisista jää jälki peliareenalle, kun ne kuolevat. Yksi isompi raato ja muita pienempiä läikkiä. Kaikki piirretään taustana toimivaan valkoiseen kuvaan kiinni, joten niitä ei tarvitse piirtää joka framessa uudelleen, minkä takia peli ei ala pätkimään vaikka ruudulla olisi miljoona raatoa.
Siellä missä oli ennen tyhjiä laatikoita, on nyt myös numeroita. Isompi numero kertoo kyseisen taidon levelin ja pienemmät numerot kertovan expan ja tavoite-expan seuraavaan leveliin. Myös joka tapon yhteydessä ilmestyvät numerot kertovat kuinka paljon mitäkin expaa saa. Myös tykillä on nyt hieman erilaisempi kuva, mutta tuokaan tuskin tulee olemaan se lopullinen.
Ruudulta puuttuu vielä ainakin pisteet, jotka näkyvät sitten oikeanpuoleissa palkissa. Sinne ajattelin laittaa myös FPS:n näkyviin ja joitakin muitakin featureita, joita olen suunnitellut, mutta jotka eivät välttämättä vielä ensimmäiseen betaan tule. Myös grafiikat tulevat jonkin verran päivittymään, ainakin sivupalkkien ja taustan osalta.

Siellä mainitsin jo beta-version, mutta se ei kuitenkaan tarkoita sitä, että se olisi kohta jo valmis. Siitä olaan kullä vielä melko kaukana. Kunhan itse peli on saatu valmiiksi, on vielä ainakin menu ja jonkinlainen loading-ruutukin saatava tehtyä.

Mutta eiköhän tuo nyt ollut taas tuossa.
Loppuun vielä pari fun factia, kuten viimeksikin:
  • Pelin latautuminen kestää noin 2.7 sekuntia
  • Peli rohmuaa käynnistyessään 244Mt muistia
  • Pelin lähdekoodissa on 1525 riviä koodia 
Muistia menee jo aika paljon ja yritän kyllä vähentää sen käyttöä aikanaan.

maanantai 19. lokakuuta 2009

Tähtäimen luominen

Nyt, kun kaikki peliin liittyvät perusasiat on saatu setvittyä läpi, niin ajattelin tähän väliin kertoa jostain vähän teknisemmästä asiasta. Niinpä kerron nyt kuinka tuo upea tähtäin on tehty.

Tuossa kuvassa on nyt kaksi erikokoista tähtäintä, mutta niitä on oikeasti 200 erikokoista. Oli siinä kyllä aikamoinen piirtourakka noissa... no ei nyt sentään. Mutta eihän se voi yksittäinen kuvakaan olla, jota olisi skaalattu, koska silloin eri kokoisilla tähtäimillä pitäisi olla eri paksuiset reunat. Siispä, noissa tähtäimissä ei ole käytetty yhtäkään valmista kuvaa vaan ne generoidaan tyhjästä joka kerta kun peli käynnistetään.
Tuo generointi tapahtuu niin, että aluksi tehdään tietyn kokoiselle tähtäimelle sopivan kokoinen kuva, sitten kuvan jokaisen pikselin kohdalla lasketaan kuinka kaukana se on kuvan keskipisteestä. Etäisyyden ollessa sopiva, piirretään siihen kohtaan punainen pikseli. Ja näin saatiin kätevästi kokoa vaihtava tähtäin, jonka reunan paksuus pysyy kuitenkin koko ajan samana.

Tuohon generointiin menee noin sekunti omalla koneellani, ja tällä hetkellä pelin kaikkien kuvien lataamiseen ja generointiin menee reilu kaksi ja puoli sekuntia.

torstai 15. lokakuuta 2009

Grafiikoista

Nyt sitten selviää vähän minkälaiset grafiikat peliin tulee, vaikka voihan sitä jotain jo tuosta näyttämästäni kuvastakin päätellä.
Tässä nyt seutaavaksi esimerkki yhdestä toisesta (Game Maker) pelistä, johon tein itse kaikki gafiikat:


Pelissä on selvästi käytetty vain yksinkertaisia värejä ja muotoja eli ei todellakaan mitään vaikeasti piirrettävää grafiikkaa. Monet efektit ovat vain kasa yksivärisiä palloja, kuten nuo liekit ja tuo vihreä juttu, minkä tuo pallo ampuu. Grafiikoiden ei siis tarvitse olla mitenkään monimutkaisia ja tosi hienosti piirrettyjä, että pystyy tekemään hienon näköisen pelin. Usein monet pelien tekijät yrittävät tehdä liian hienoja grafiikoita omiin tatoihinsa nähden, minkä takia ne lopulta näyttävät vain rumilta. Jos ei ole niin hyvä piirtämään, kuten en minäkään, kannattaa tehdä graafiikat yksinkertaisemmin.
Tässä uudessakin pelissä tulee siis olemaan varsin yksinkertaisesti tehtyjä grafiikoita, niin kuin siitä kuvastakin jo vähän näkyi silloin aikaisemmin. Värimaailma on toki aivan erilainen kuin tuossa esimerkkikuvassa. Yritän saada tehtyä peliin myös jonkinlaisia partikkeliefektejä, koska ne on suhteellisen helppo tehdä ja niillä saa helposti hienoa grafiikka.

keskiviikko 14. lokakuuta 2009

Taitosysteemi selitetty

Tuossa kuvassa pari päivää sitten paljastinkin jo mitä taitoja tähän peliin tulee. Nyt sitten kerron vähän niistä.
Kaikkiin taitoihin saa vähän expaa joka kerta kun tappaa jonkun vihulaisen. Kun on tarpeeksi expaa saanut saa seuraavan levelin ja tykki taikka panokset paranevat vähän sen mukaan. Maksimileveli on 5, mutta vain yhdellä taidolla sen voi saavuttaa, sillä joka pääsee sinne ensimmäisenä. Muilla taidoilla maksimi on 3. Tämä sen takia, että tykki olisi aivan liian tehokas, jos kaikki taidot olisivat täysillä, koska viimeisellä taidolla tykki paranee paljon enemmän kuin muilla. Se myös lisää jonkinlaista taktisuutta peliin, kun voi vähän valita minkä taidon haluaa parhaaksi.
Sitten eri systeemeistä:

Vahinkosysteemi:
Vahinkoexpaa saa joka taposta 50. Levelit parantavat panosten tehoa.

Tarkkuussysteemi:
Tämä on pelin monimutkaisin systeemi. Tarkkuus on vähän saman tapainen kuin joissakin FPS-peleissä. Hiirtä heiluttamalla ja ampumalla tarkkuus huononee, mutta paikallaan odottelemalla se paranee. Kun odottaa jonkin aikaa, tykki muuttuu täysin tarkaksi ja hiiren heiluttaminen ei enää epätarkenna tähtäintä. Tällöin ammuttu panos on myös kriittinen, jolloin se tekee tuplavahingon ja menee vihollisten läpi, jos ne kuolevat heti.
Tarkkuusexpaa saa joka taposta sen hetkisen tarkkuusprosentin verran (0-100) eli sen mukaan kuinka monella panoksella on osunut. Jos siis haluaa tarkkuuslevuja, ei pidä ampua hutiin. Viimeinen tarkkuuslevu on siitä erikoinen, että jokainen panos on täysin tarkka ja kriittinen.

Nopeussysteemi:
Nopeusexpaa saa tappamalla vihollisia tiuhempaan, 0-100. Nopeuslevelit nopeuttavat tykin ampumista.

Hakeutuvuussysteemi:
Hakeutuvuusexpaa saa tappamalla vihollisia, jotka ovat kauempana tykistä, 0-100. Hakeutuvuuslevelit parantavat ammusten hakeutuvuutta. Viimeisellä hakeutuvuuslevulla joka ikinen panos osuu varmasti johonkin vihuun, jos niitä ruudulla on. Panosten ampumistiheys ja vahinko on tällöin kuitenkin pienempi, joten tämä on ikään kuin "nobotaito". Panokset pyrkivät aina hakeutumaan sellaiseen viholliseen, joka on mahdollisimman suoraan sen edessä.

Tavalliset levelit:
Aina, kun saa tällaisen, tulee "kauppa", jossa voi ostaa vähän expaa johonkin taitoon. Näin ainakin tässä vaiheessa suunnitelmia.

Sitten loppuun vielä kerron, missä vaiheessa peli on. Kaikki nuo listatut systeemit, paitsi tavalliset levut, on saatu valmiiksi. Expaa ja leveleitä ei kuitenkaan vielä automaattisesti tule, mutta levelit toimivat jo periaatteessa.
Eilen tuon hakeutuvuussysteemin koodaaminen oli kyllä aika tuskaista, kun ei millään meinannut saada sitä toimimaan, mutta nyt se sitten viimein toimii.

tiistai 13. lokakuuta 2009

Sehän on Evolute!

Nyt on pelille keksitty viimein nimikin: Evolute taikka suomeksi käännettynä Evoluutta. Katselin sanakirjasta joitakin kehittymiseen liittyviä sanoja ja siellä vilahti evolutionikin. Siitä sitten väänsin evoluten ja wikipedia tiesi, että se tarkkoittaakin tuollaista asiaa. No ei se mitään, pelin tähtäin voi etäisesti muistuttaa noita palloja tuon englanninkielisen wikipedian giffeissä, joten saa kelvata, kun nimi kuitenkin kuulostaa sen verran hyvältä.

Sitten ajattelin vielä kertoa, mistä keksin idean tähän peliin, kun en sitä ole muistanut vielä paljastaa. No, yleisesti tuon tapaiset rennot arcade pelit ovat ihan mukavia, mutta toisaalta pidän myös paljon sellaisista peleissä, joissa voi kehittyä jotenkin, ostaa päivityksiä tai saavuttaa jotakin. Siitä sitten keksin yhdistää nämä asiat, joten laitoin tuollaiseen perusräiskintään kehittymissysteemin. Ostettavia päivityksiähän tuollaisissa peleissä on kuitenkin suhteellisen paljon, joten tämä on (ainakin minulle) jotain uutta.
Täytyy kyllä kuitenkin sanoa, että arcade pelit käyvät aina varsin nopeasti tylsiksi, joten ajatuksena on, että vielä myöhemmin lisään tähän jonkin tapaisen "uramoodin". Samoin ajattelin tehdä mahdolliseksi rakentaa myös omia ratoja, joissa tulee erilaiset vihulaisaallot.

maanantai 12. lokakuuta 2009

Viikko on kulunut ja ensimmäinen kuva on täällä

No niin, nyt on viikon päivät väännetty uutta peliä ja on aika katsoa mitä on saatu aikaan. Ensimmäinen kuva pelistä tulee tässä:


No mutta, siinähän on jo saatu varsin paljon aikaan. Sehän näyttää jo varsin kivalta peliltä.

Mutta nyt asiaan, kerronpa mitä kaikkea tuossa kuvassa on.
Ensinnäkin aivan yläkulmassa on kaksi numeroa. Vasemmanpuoleinen numero kertoo FPS:n, joka näyttäisi minun koneellani olevan 107. Peli kuitenkin pyörii maksimissaan 40:ssä FPS:ssä ja luku vain kertoo mihin oma kone parhaimmillaan pystyisi. Jos FPS menee alle 40, peli muuttuu vähän slow motioniksi, joten tässä vaiheessa näyttää vielä hyvältä.
Toinen luku kertoo senhetkisen epätarkkuuden määrän eli kuinka epätarkkaa tykin ampuminen sillä hetkellä on ja kuten kuvastakin huomaa, siellä on kaksi viiva ja pallo, jotka havainnollistavat tykin epätarkkuutta, ja varsin epätarkaltahan se vielä näyttää. Pelissä tulee sitten olemaan varsin monimutkainen tuo tarkkuussysteemi, joten siitä tulee vielä myöhemmin lisää.
Sitten ruudulla näkyy pari sinistä palloa, ne ovat vihollisia, sitten on pari keltaista panoksen näköistä juttua, jotka ovat panoksia ja sitten on vielä pari keltaista tahraa. Ne kertovat mitä pistettä kohti nuo panokset lähtivät lentämään.
Sitten vielä viimeisenä ruudun vasemmassa laidassa on palkki, joka on täynnä jotain jänniä laatikoita. Kuten jo aikaisemmin selvisi, pelissä on taitoja ja tuolla ne eri taidot nyt näkyvät. Laatikoissa sitten näkyy jokaisen taidon expat ja levelit.

Grafiikoista vielä sen verran, että ne tulevat näyttämään jokseenkin tuollaisilta, mutta mikään ruudulla näkyvä ei aivan välttämättömästi ole vielä kiveen hakattu.

Sitten loppuun vielä pari fun factia:
Pelin latautuminen kestää noin 1.8 sekuntia
Peli rohmuaa käynnistyessään 138Mt muistia
Pelin lähdekoodissa on 830 riviä koodia

perjantai 9. lokakuuta 2009

Miksei enää Game Makeria?

Kuten aikaisemmin kävi jo ilmi, käytin aikaisemmin Game Makeria tekemään pelejä, mutta nyt sitten päätin siirtyä ohjelmointiin ja suoraan käyttämään (sitä vaikeinta) C++:aa. Mutta miksi?

Ensiksikin Game Maker ei ole ilmainen, ellei sitten karsittu version, joka lisää pelin alkuun myös mainoksen, riitä... Ei tietenkään riitä, joten siitä joutuu maksamaan. Ja lähdekoodihan on Game Makerin oma tiedosto, joten peli on luonnollisesti sidottu Game Makeriin

Toiseksi, kun uusi Windows Vista tuli, vanhat Game Maker pelit eivät enää toimineet siinä, vaan piti hommata uusi Game Maker 7 (vaikka sen saikin ilmaiseksi kaikki vanhan Game Makerin omistavat) ja tallentaa pelit uudestaan ajettavaan muotoon, ja näin varmaan joka kerta, kun Windowsista tulee joku vähän erilaisempi versio. En usko, että C-kielellä tehdyillä peleillä olisi tällaisia yhteensopivuusongelmia niin paljon. Game Maker pelejä ei myöskään voi saada mitenkään toimimaan muissa käyttöjärjestelmissä.

Vielä kolmanneksi, Game Maker on tietysti jotenkin rajoitettu. Sillä voi tehdä vain niitä asioita mitä Game Makerissa on. Toki siihen voi ladata lisäosia ja kirjastoja ja opetella Game Makerin scriptikielen ja tällä tavalla saada aikaan kaikkea muutakin. Mutta miksi opettelisin sen scriptikielen, kun voin opetella minkä tahansa muunkin ohjelmointikielen. Tuskin millään Game Makerin kielellä olisi mitään hyötyä tulevaisuudessakaan. Muilla ohjelmointikielellillä kyllä voi saada lopulta paljon enemmän aikaan kuin Game Makerilla. Tämänkin peliprojektin kohdalla olen jo saanut tehtyä joitakin asioita, joita en olisi osannut tehdä Game Makerilla.

En nyt kuitenkaan tarkoita, että Game Maker olisi aivan turha ja huono. Onhan se hyvä niille, jotka eivät osaa muuten tehdä pelejä, mutta silti haluaisivat. Tässä olivat nyt vain ne syyt miksi minä en enää halua käyttää sitä.

Ensi kerralla sitten jotain asiaa jo tästä nykyisestä peliprojektistakin.

keskiviikko 7. lokakuuta 2009

Eiköhän tästä peli tule

Tämä tulee siis olemaan ensimmäinen C++:lla ohjelmoimani peli ja tavoitteet ovat suhtellisen korkeat. Mutta eiköhän tästä vielä hyvä tule, kun miettii mitä on aikaisemmin tullut tehtyä.
Peli ei todellakaan ole ensimmäinen, vaan sillä Game Makerilla on tullut tehtyä jo pari. Jos niitä muuten haluatte vilaista, niin tässä linkki. Omasta mielestäni ne ovat varsin hienoja, joten ihan pelien perusmekaniikat on jo tiedossa.
Sitten en ole aivan uusi ohjelmoimisen ihmeelliseen maailmaankaan. Omia nettisivuja on tehty muutamia, kuten tuokin minkä linkin annoin, ja myös php:tä olen käyttänyt niiden luomiseen. C++:aa on kokeiltu sen verran, että muutama testi ohjelma on tehty, jossa lähinnä olen testanut kuinka tämä SDL-kirjasto toimii.

Tässä sitten onkin pari kuvaa niistä ohjelmista, kuten aikaisemmin jo lupasin:


Tuossa on tuollainen lanka, jonka toinen pää seuraa hiirtä. Tuostahan voisi pienellä vaivalla tehdä jonkinlaisen matopelinkin.



Ja tuossa on vielä plasmapallo, johon on lisätty kohinaa. Pallon piirtämiseen ei ole käytetty yhtään valmista kuvaa ja sen kokoa ja kohinan määrää voi muuttaa lennossa. Yläreunassa näkyy myös FPS.

Joten, taitoja pitäisi löytyä tarpeeksi tähän peliprojektiin. Noissa esimerkeissähän ei tietenkään ollut vielä mitään hienoja grafiikoita, joten peli ei kyllä tule näyttämään noin ankealta, älkää huoliko. ; )

tiistai 6. lokakuuta 2009

Minkälainen peli on kyseessä?

Nyt vähän tietoa siitä, minkälainen tämä peli tulee olemaan:
Pelin genre tulee ainakin nyt aluksi olemaan vain arcadea. Saatan sitten myöhemmin vielä lisätä jotain muutakin kuin pelkän survivallin. Pelissä ammutaan ruudun alareunassa pysyvällä tykillä ruudun yläreunasta päälle vyöryviä vihulaisia, jotka muuten ovat kivoja pallukoita (grafiikasta sitten vielä myöhemmin lisää). Se mikä tässä pelissä on varsin omaperäistä, on skillisysteemi, jossa paremmin pelaamalla saa expaa, jolla tykin ominaisuudet paranevat. Siinä se sitten onkin aika tiivistettynä. Yksityiskohtia sitten satelee lisää pelin kehityksen edetessä.

Sitten vähän teknisempiä yksityiskohtia:
Pelin kehitys tapahtuu Dev C++ ohjelmalla, vaikka joidenkin mielestä sitä ei enää pitäisi käyttää, mutta kun sillä on nyt jotain jo tullut tehtyä, niin eiköhän sillä vielä yhden pelin saa tehdä.
Koska C-kielellä ei saa juuri mitään aikaan ilman kirjastoja, niin ainakin seuraavia kirjastoja tulen käyttämään:
  • SDL - grafiikka ominaisuudet ja näppiksen ja hiiren lukeminen
  • SDL_gfx - lisää grafiikka ominaisuuksia
  • SDL_image - käyttää libpng:tä avaamaan png kuvia
  • libpng - avamaan niitä png kuvia
  • libjpeg - SDL_image tarvitsee tätä (vaikka minä en)
  • zlib - SDL_image tarvitsee tätäkin johonkin
  • SDL_mixer - soittamaan musiikkia
Ja ehkä vielä joitain muitakin, joita mahdollisesti tarvitsen myöhemmin, mutta näin alustavasti, ainakin nuo.

Sitten loppuun vielä sanon, että eilen sain jo vähän koodia kasaan, joten pelin kehitys alkoi siis virallisesti 05.10.09.

maanantai 5. lokakuuta 2009

Vielä nimetön peliprojekti...

Tämä blogi tulee seuraamaan vielä nimettömän pelin kehitystä, (toivottavasti lopulta myös) julkaisua ja mahdollisesti vielä jotain muutakin peliin liittyvää julkaisun jälkeen.
Tulen ohjelmoimaan pelin C++ kielellä ja pyrin tekemään kaiken muunkin mahdollisen peliin liittyvän itse. Tämä peli on myös ensimmäinen C-kielinen peliprojektini, mutta ei kuitenkaan aivan ensimmäinen pelini eikä myöskään ensimmäinen C-kielinen ohjelmakaan. Aikaisemmat pelit on tehty... Game Makerilla :/ ja niitä C-kielisiä ohjelmia ajattelin näyttää tässä kohta puoliin (ne on muuten aika hienoja).

Mutta minkä takia haluan sitten pitää tätä blogia? Siihen löytyy monta syytä. Ensiksikin tavallisesti, kun olen tehnyt pelejä tai jotain muuta, ne eivät ole juurikaan tulleet huomatuiksi. Tämän blogin avulla toivon saavani ainakin jonkinlaista huomiota. Toiseksi pelien kehitys ei ole aivan koko ajan innostanut ja joidenkin pelien kehitys on joskus ollut jäissä hyvinkin pitkiä aikoja ja jotkut ovat melkein jääneet julkaisemattakin, mutta blogatessa toivon paremmin jaksavani tämän projektin parissa. Ja vielä kolmanneksi, joskus, kun se peli on sitten valmis, olisi kiva, kun olisi tullut otettua joitakin kuvia talteen pelin aikaisemmista kehitysvaiheista... mutta kun ei tullut. Nyt ainakin tulee niitä kuvia esiteltyä.

Tämä peli on jo suunniteltu lähes alusta loppuun, joten enää jäljellä on toteutus. Pelin genrestä ynnä muusta varsin oleellisesta hieman myöhemmin.
Yhtään riviä koodia ei vielä ole kasassa, mutta toivottavasti kohta on.

Ja vielä pieni huomautus tähän loppuun blogin ulkoasusta ja nimestä: ne tulevat kyllä muuttumaan, mutta ei vielä. Sitten kun jaksaa. :P