tiistai 31. maaliskuuta 2009

Tunnit 8-12

Tulihan sitten käytettyä nekin tunnit.
Kirjoitin suurimman osan ( 95%) koodista uusiksi. Koodi on nyt paremmin järjestetty ja muutenkin loogisempi. Huolimatta että siinä meni monta tuntia, niin olen tyytyväinen tän hetkiseen toimintaan. Sain jopa "saumattoman scrollauksen" toimimaan. Eli huolimatta siitä, että liikutaan tile kerrallaan, niin liikkuminen tapahtuu nykimättä, liukuen siis.

Törmäyksen tunnistuksen kanssa oli vähän ongelmia ja joudun muuttamaan kartan muotoa, jotta hommat saa nopeammin toimimaan, niin kuin haluan.

Lisäsin myös ensimmäisen vihollisen ja törmäystarkistuksen siihen. Taistelu funktioita olen jo kirjoitellut, mutta ei tähän rumbaan kerennyt nyt. Huomenna luulisin saavani taistelut ja viholliset toimimaan. Itse asiassa, päätän nyt, että se on seuraava minkä kimppuun käyn.


Puoliaika, niin se aika vain hupenee. Peli on vielä kaukana pelattavasta, mutta toivoa on. Nyt pitäis kaiken olla helppoa lisätä, koska uskokaa pois, koodi oli aivan hirveetä :)
Seuraavina tunteina aion luoda vihollis interaktiivisuuden, sitten lootti ja inventory järjestelmä.
Ehkä sitten tulisi hyvin npc joka myy/ostaa kamaa/antaa questeja. Questi järjestelmä, varmaan jokin simppeli esim. .txt jossa on questin nimi, jokin tyyppi ( kerää, tapa ) ja määrä. En usko että on vaikeata, mutta katsotaan.

En ole vielä kokeillut, mutta luulisin, että "Engine" kykenee useaan mappiin, eli voin lisätä karttaan merkin, jonka päälle astuttaessa siirtyy toiseen karttaan. Näkis vaan :D

Mutta joo,
Uusi testi versio on taas upattu ja voitte sitä näppäillä jos siltä tuntuu.
Tarvitset .NET Framework 3.5 Jotta se toimii ( luulisin )

maanantai 30. maaliskuuta 2009

7. Tunti

Nyt on vihollisiakin. Nyt alkaa tuntumaan jo "suunnittelemattomuuden taakka" harteilla.. Koodi on täynnä virityksiä, kaikki on kirjoitettu suoraan koodiin. Enään en alusta aloita tätä projektia. Ehkä tällaisen voisi pistää uudestaan pystyyn, koska seuraavalla kerralla voisi sitten suunnitellakin jotain.

Mutta niin, loin muutaman uuden luokan. BaseCreature, player ja mob. Bases on kaikki yhteiset ominaisuudet, esim. voima, ketteryys, miekankäyttö, nimi jne.

Ominaisuuksien lisääminen tähän koodiin, on vähintäänkin mielenkiintoista.. Koodi on täynnä käyttämättömiä muuttujia ja funktioita, sekä ihmeellisiä listoja ja olioita.

Mutta kyllä mä tästä pelin saan vielä :)

4. Ja 5. ja 6.Tunti


Sinne meni sitten nekin tunnit..
Tuli tapeltua kahden aivan mitättömän asian kanssa.
Ensiksi yritin uudistaa kartan piirtoa. Failed
Sitten yritin liikuttaa ukkoa suhteessa aikaan, ei suhteessa FPS.. onnistuin viimein.
Ukko ainakin liikkuu, tai ukkoa jäljittelevä kissan hanurista karannut oksennuspuikko. Mutta liikkuu.
Versio 0.1.0:
Törmäyksen tunnistus lisätty.
Hahmon liikkuminen lisätty.
Sisäisiä muutoksia kartta ja törmäys luokissa.

Nyt on 6 Tuntia mennyt itse koodaus aikaa. Pahin vaihe on mielestäni nyt takana. Tästä pitäis helpottuu hommien. Seuraavaksi varmaan tulee viholliset/ystävät, eli NPC:t. Tappelusta en tiedä vielä, että miten sen hoitais? Ehkä Zeldamainen miekka ja potionit. Luulis niil selviävän. Questejä? En tiedä, se olis aika hienoa. Uusia tilejä, isompi kartta, ehkä "Fog of war".

Ensimmäinen julkaisukelpoinen testidemomikälie on ladattavissa täältä!.

Koittakaa muistaa, että tämä on ensimmäinen graafinen peli ( CoolBasic poisluettuna ), mitä olen tehnyt ja kehitetään ilman sen kummempaa suunnittelua.

Ominaisuuksia saa ehdottaa ja otan haukkuja ja kehuja vastaan kommenttien muodossa.

Hyvät päivän jatkot,
-Riku

sunnuntai 29. maaliskuuta 2009

2. ja 3. Tunti


Noniin, nyt saa kuvan piirrettyä ruudulle.
Grafiikan piirtäminen ruudulle ei sinänsä ollut vaikea homma, mutta ongelmia tietenkin tuli..
Tilet on helppo piirtää ruudulle, jos on vain yhden ruudun kokoinen rata, mutta kun halutaan 10*10 kokoinen peliruutu ja mahdollisuus muuttaa sitä, niin ongelmia alkoi ilmetä. Nullexeptionia pukkas ja kovaa vauhtia, mutta niistä selvittiin sitten. Koska ukko on aina keskellä ruutua, niin sijainti 0,0 aiheutti hetken aikaa ongelmia. Päätin, että negatiiviset luvut ja luvut jotka ylittävät kartan leveyden, piirretään mustalla tilellä.


Sain supistettua piirto komennon yhteen kätevään functioon. TEngine on siis tile enginen ilmentymä ( olio ).
TEngine.DrawMap(spriteBatch, testx, testy, 12, 12);

Tällä hetkellä engineen voi lyödä niin monta erilaista tileä kuin tarvii. Kaikki tapahtuu helpoilla funktioilla, jotka voisi periaatteessa ulkoistaa täysin, jotta engineä voisi käyttää ilman "hard coding":ia. Peli lukee tekstitiedoston string[] taulukkoon talteen. Tällä hetkellä kartassa on vain 'w' ja '.' merkkejä, joista 'w' on seinä ja '.' on lattia. Merkiksi kelpaa kaikki ASCII merkit ja isot ja pienet erotellaan, joten kartoissa voi olla monelaista tileä.
Tile on myös oma luokkansa, kuten aikaisemmin kaiketi mainitsin. Tilelle voi antaa "IsWalkable" muuttujaan joko "true" tai "false", riippuen voiko sen päällä kävellä, sen jälkeen engine hoitaa törmäys tunnistuksen automaattisesti.

Mutta, siinä kaikki tällä kertaa. Huomenna varmaan saan aika monta tuntia tehtyä tätä, joten jotain kokeiltavaakin saattaa tulla. En mene nyt sen kummemmin lupaamaan, mutta yritetään.



1 Tunti

Ensimmäinen tunti on nyt takana ( blogin aloitin kyseisen tunnin jälkeen, joten siksi nämä postaukset tulevat yhteen putkeen ).

C# ja Xna on valmiiksi asennettu, joten niiden asennusaikaa ei huomioida tässä.

Aloitin luomalla luokat "TileEngine" ja "Tile". Jokainen erilainen tile on oma yilmentymä tästä luokasta ja jokainen tile tyyppi ( Seinä, lattia jne ) saa omat ominaisuudet, esim. voiko sen läpi kävellä.
Tile engine huolehtii kartan piirtämisestä. En halua että koko kartta näkyy kokoajan, vaan että voin näyttää vain ne 10-15 tilee pelaajan ympärillä.
Se huolehtii myös kartan lukemisesta ja törmäys tarkistuksista.

Loin myös 2 malli tileä, jotta voin kohta puoliin testata kuvan luontia.

Äkkiä se aika menee..

Suunnittelu vaihe

"Game Design Document"

Tämä on todellakin dokumentti isolla D:llä. Eli mietin, että minkälainen pelistä tulisi ja miten ajattelin ajan käyttää, että on jotain tavoitteita.

Sankari seikkailee luolissa, kohtaa vihollisia, kerää parempia varusteita ja tappaa lopparin.
Siinäpä se, yksinkertaisuudessaan. Mitään ihme hilavitkuttimia on turha miettiä, 24h on lyhyt aika sellaiseen. Yksinkertaiset grafiikat ( muuta saakaan aikaseksi ).

1-8H:
Luolaston luonti, tekstitiedostosta, sankari jota voi liikuttaa, törmäyksen tunnistus.
9-12:
Esineet ja interaktiivisuus.
13-16:
Vihollisia ruudulle, taistelut, perus "AI"
17-20:
Käyttöliittymä
21-24:
Varattua aikaa grafiikoille ja muille osioille

Haluan huomauttaa, että peli todellakin rakennetaan "hot seat" tyyliin, eli sillä istumalla luodaan ideat ja porskutetaan eteenpäin näillä eväillä.

Projektin idea ja sen toteuttaja

Tervehdys,

Olen 26 vuotias harrastelijakoodari. Olen rääpinyt kasaan joitakin harjoituspelejä ( Pong, konsoli rpg jne ), mutta en ole koskaan saanut mitään valmiiksi, aina tulee uusi projekti, joka on parempi kuin edellinen.. Mutta kaikkia niitä yhdistää se tosiasia, että ne ovat jääneet ideaksi.

Tossa muutama päivä sitten, törmäsin mielenkiintoiseen artikkeliin, jossa kokenut pelialan ohjelmoija loi roolipelin, käyttämällä 0$ ja 40h aikaa. Idea oli mielenkiintoinen ja kilpailuhenkisenä ihmisenä, ajattelin pistää paremmaksi. 24h aikaa ja pelattava peli. En yritä tehdä tätä vuorokaudessa, vaan 24:n koodauksen aikana.

Säännöt (Omia ja vain itseäni varten)
Kaiken pitää olla ilmaista -> IDE ja grafiikka, kaikki.
Ei mitään valmiita pelimoottoreita
24 tuntia aikaa ( Sen jälkeen peliin ei saa lisätä ominaisuuksia enään, mutta bugit saa korjata ).

Valitsemani työkalut:
C# Express 2008
Xna 3.0
Paint .Net

Valitsin C#:n kieleksi, koska se tuntuu mukavalta ja monipuoliselta.
Xna:n koska se on siististi kool :P

Mutta anyway, aika aloittaa hommat.
Wish me luck,

Riku