21.2.2010 Pelin kehitys

Tässä RandomCar:ia koodatessani on jälleen tullut opittua. Ei ehkä niinkään syntaksia tai kielen ominaisuuksia, mutta suunnittelua ja kehitystä ja tämän myötä myöskin julkaisusta ja paketoinnista.

Suunnittelusta sen verran, että ehkä tärkeimpänä aspektina se, että peliä ei koodata valmiiksi. Ei todellakaan. Se kehitetään valmiiksi. Kehittäminen tarkoittaa päämäärään pääsyä pienten askelten välein, joissa on hyvä tauko pysähtyä miettimään tulevaa ja tehdä kaikki tekemättä jääneet tehtävät kuten dokumentoinnin, blogauksen, tulevan dokumentointi. Lisäksi huomasin, että vaikka ohjelmaa/peliä koodaisi yksin, on silti jonkin näköinen roadmap oltava. Tähän suosin ehdottomasti Trac:iä, koska se antaa esinnäkin mahdollisuuden tehdä roadmapin, mutta sen lisäksi integroituu saumattomasti svn:ään ja sisältää oman wikin, vaikkapa sitten dokumentointia varten. Lisäksi tracissä voi viljellä linkkejä eri osiin esim. wikiin, changesettiin, roadmappiin kaikista paikoista. Ja itse tätä käytin merkkaamaan missä commiteissa tein mitkäkin ominaisuudet.

Tätä kautta saa helpon kuvan milloin on seuraava rajapyykki saavutettu, ja mitä pitää vielä tehdä saavuttaakseen sen.

Itse softan kehitykseen liittyy hyvin mielenkiintoinen seikka, jota aikaisemmin paheksuin syvästi, mutta nykyään hyväksyn. Eli, ainakin aikasemmin tein koodin suoraan niin valmiiksi kuin tavallaan ‘voi-olla’, eli kun koodataan palikka-x niin palikka-x tulee myös valmiiksi ja on täten yleishyödyllinen, dokumentoitu, bugivapaa, sekä täysillä ominaisuuksilla varustettu. Tässähän ei sinällänsä mitään vikaa ole, mutta se, että se vie aikaa. Ja paljon. Tästä ajattelumallista luovuttuani saa paljon nopeammin aikaan tuloksia, jotka taas inspiroi tekemään lisää, ja kun tarvii palikkaa x korjata, niin se myös korjataan. Mutta vasta kun on tarve, ei etukäteen. Tästä syystä aikasemmista projekteista (mm. Bubble Bouncing)  tuli lähinnä moottoreita (engine) . Periaatteessa, ei moottorissa mitään vikaa ole, varsinkaan kun BB oli varsin bugivapaa, mutta kun tahtoisin tehdä peliä, tulee kehitykseen vaadittava aika vastaan. Peleissä on myöskin usein raja-tapauksia tai muuta sellaista, että pitää tehdä erikoistapaus jollekkin yhdelle asialle pelissä, kun taasen moottoria tehdessä, se pitäisi tehdä jotenkin geneerisesti ja tämä taas vie resursseja.

Vaikka olen ennenkin tehnyt ihan pelejä, osaa silti ei-koodaamiseen kuluva aika hämmentää. Paljon menee aikaa mm. graaffisen olemuksen suunnitteluun, sekä grafiikan toteutukseen. Lisäksi jostain syystä äänien lisääminen tulee aina jotenkin yllätyksenä peliin, koska ne lisätään aika myöhäisessä vaiheessa (kun logiikka ja grafiikka jo toimii).

Paketointi ei mitenkään ihmeellistä ole, mutta tällä kertaa se onkin tehty ensimmäistä kertaa. Itse suosittelen pienen opettelun jälkeen todella mukavaa InnoSetup:ia, mutta tämäkin tarvii kohtuullisesti säätöä ennenkuin XNA-pelien vaadittavat kirjastot on asennettu (ja .NET Framework 3.5:n asennus ei edes toimi nykyiseltään).

Kun viimein sai RandomCar 0.0.3 pientä julkisuuden valoa, paljastui PC-maailman karmiva totuus. Millon ei peli lähde päälle, milloin grafiikat bugaa, milloin tulee JIT-ikkuna, jota ei saa edes näkyviin kun nykyinen ikkuna varaa fokusia. Lisäksi mikä hauskinta, on täysin mahdotonta edes selvittää kyseisiä vikoja, koska peli ei sisällä minkään näköistä lokitusta. (Lokitus on jo tehty, ja tulee seuraavaan versioon, näin tyhmästä päästä oppineena)

Vihdoin kun edes joku sai pelin päälle pelattuaan lähes samallaisella alustalla, kuin itse koodaan, osottautui peli erittäin vaikeaksi. Tai itseasissa niin vaikeaksi, että on hankala kuvitella kenenkään edes nauttivan pelaamisesta. Tiesin kyllä että peli on vaikea, mutta että niin vaikea. Tämän tietenkin murskasi sydämmeni tuhannen palasiksi jota seuraavaan kuukauden keräsin ja imuroin huoneeni lattioilta. Mutta ei se mitään, itseasiassa katson lähinnä tämän positiivisesti, koska kun aloin tosissaan tätä tekemään, luulin ettei pelissä olisi tarpeeksi haastetta (tästä johtuen, lisäsin loppuvaiheessa statistiikan ja ajan oton).

Se missä nyt mennään, on jälleen hieman paremmat grafiikat, lokitus, äänimaailman parannuksia. Ja ennen kaikkea, helpomman, viimeistellyt ja todella viimeisen päälle (ainakin toivon mukaan) hauskan ja nautittavat kentät.

Itse julkaisuhan tapahtui Suomipelit.com:ssa. Ja tätä myötä myös suuret kiitokset Tomppu:lle pelin testauksesta ja peli-ideoista.

3.2.2010 RandomCar 0.0.3

Pitääpä sitä tästäkin sivuprojektista mainita (jota siis olen viimeiset 5kk kehittänyt), että siitä on vihdoin julkastu käyttäjälle jotenkinpäin ystävällinen versio. Peli osoittautui harmillisien bugiseksi, joka voi auheuttaa kaatumisia. Tämän takia oonkin jo koodaillut logituksen, sekä virheiden käsittelijän, joka sammuttaa ohjelman hieman nätimmin (joka ei ehkä ole hyvä idea, kun käyttäjä ei välttämättä tiedä viasta).

Kommenttaja, risuja ja ruusuja voi jättää tänne kommentteihin tai sitten antaa palautetta pelin sivujen kautta.

Kuvakaappauksia ja latauslinkin löytää pelin virallisilta sivuilta.

Offtopic:

Joojoo, tästä tuli vähän tynkä, mutta kun Google Readerin mukaan tällä on jopa yksi tilaaja, joten pitäähän hänenkin saada tieto tästä vallankumoiksellisesta pelistä.

21.11.2009 AskMeWords

Viime aikoina on tullut ohjelmoitua/opeteltua C#:ia, jonka johdosta päätin tehdä sanaston kertausohjelman kerratakseni englannin kielen epäsäännöllisiä verbejä. Koska sanaston kertaus jaettiin kolmeen jaksoon, jaoin myös ohjelman kehityksen kolmeen iteraatioon, joka meni käytännössä näin:

Kuvakaappaus AskMeWords-ohjelmasta.

Kuvakaappaus AskMeWords-ohjelmasta.

  1. Ensimmäinen iteraatio
    • Perustoiminnallisuus
      • Kyselee sanoja, sekä ilmoittaa onko jokin sana väärin, sekä kertoo oikean vastauksen
  2. Toinen iteraatio
    • Muokattiin hienompi ulkoasu
    • Lisättiin Jatkuva, sekä Kysy kaikki -moodi, jossa jatkuva kyselee jatkuvasti sattunnaisia sanoja ja Kysy kaikki puolestaan kysyy kaikki sanat kertaalleen läpi satunnaisessa järjestyksessä
  3. Kolmas iteraatio
    • Lisättiin XML-tuki sanaston tallennukselle ja lataamiselle
    • Lisättiin äänituki (sanoo annetun verbin taivutusmuodot)
      • Mahdollisuus poistaa äänet käytöstä
    • Lisättiin näyttämään prosentit Kysy kaikki -moodin lopuksi

Kaiken kaikkiaan kyseessä oli todella onnistunut projekti, jonka myötä oppi myös C#:ia. Muutamia bugeja ohjelmaan jäi, kuten prosenttien väärin laskeminen, sekä äänien katkeaminen.

Jos nyt joku kuitenkin haluaa testata ohjelmaa, sen voi ladata täältä.

21.9.2009 Mobiilikäyttöjärjestelmien käyttömukavuus

Mobiili-rintamalla on tapahtunut kummia viimeisten vuosien aikana. Monia uusia pelureita on tullut kuten iPhone, Windows Mobile 6.5, sekä Android, myöskin Nokia tulee uudella Maemo 5-käyttöjärjestelmällään. Mitä uutta ne tuovat verrattuina edelliseen sukupolveen? Ihmiset on entistä enemmän siirtymässä Internettiin, ja myös siihen valmistajat tähtäävät. Tämä näkyy jopa huolestuttavan paljon puhelimien kehityksessä, mutta toisaalta tuo myös paljon hyvää.

Pieni esimerkki tähän väliin, kuinka jaat kätevästi kuvia flickriin niin puhelimella kuin tietokoneella:

Kuvan jakoa Androidissa.

Kuvan jakoa Androidissa.

  1. Puhelimella
    1. Kamera sovellus auki
    2. Otat kuvat
    3. Valikosta kuvan jakaminen
    4. Valitaan flickr
    5. Ehkä nimien muokkausta ja muuta hienosäätöä (resize, crop)
    6. Upload
  2. Tietokoneella
    1. Kuvankatselin avoinna katsot kuvan
    2. Avataan nettiselain
    3. Mennään osoitteeseen flickr.com
    4. Kirjaudutaan sisään
    5. Klikataan “upload pictures” (tjsp)
    6. Lisätään valittava kuva seikkaillen valintadialogissa samaan avoinna olevaan kuvaan
    7. Klikataan upload
    8. Klikataan “add description” (tjsp)
    9. Lopuksi tallennetaan kuva

Sanomattakin on selvää, että puhelimella saman asian tekeminen on huomattavasti suoraviivaisempaa ja ennenkaikkea helpompaa. Asiaan tietenkin suuresti vaikuttaa flickrin huono käytettävyys, mutta toisaalta myös käyttöjärjestelmän kankeus. Miksei tietokoneella voisi vaikka kuvienkatseluohjelmasta painaa “Jaa”? Ei.., ku kaikkihan haluaa sen sijaan käyttää sähköpostia.

Tämä ei ole läheskään ainoa asia, jossa tämä kankeus näkyy, se on kaikkialla, oli sitten kyse facebook/twitter-tilapäivityksistä, yhteystietojen jakamisesta, tai oikeastaan mistä tahansa. Sen sijaan, että käyttöjärjestelmä olisi ohjelma-pohjaisia (application-based), ne voisivat olla työ/tekemis-pohjaisia (action-based). Ei minua oikeasti kiinnosta millä ohjelmalla teen jonkin asian, vaan se, että saan sen asian tehtyä.

Tästä hyvänä esimerkkinä on Mac OS X:n palvelut(services), joita siis käytetään esimerkiksi niin, että valitset missä tahansa, mitä tahansa tekstiä, ja voit valita palveluista “Hae googlella”, ja se hakee valitulla tekstillä. Tässä on se oikea suunta, mutta harmittavasti se on turhan piilossa ja harvemmin käytetty ominaisuus kolmasien osapuolet ohjelmissa.

Services-valikko Mac OS X:ssä

Services-valikko Mac OS X:ssä

Windows yrittää myöskin näyttää mallia ja tarjoaa useassa paikkaa sähköpostia, mutta oikeesti, kuka enään käyttää sähköpostia joka päiväiseen kommunikointiin? Tästä syystä nämä pitäisi olla jatkettavissa/muokattavissa niin, että käyttäjä voi lisätä haluamiansa palveluita, jotka kuvalle/musiikille/tekstille/tiedostolle tekevät jotain.

Linuxilla löytyy tasan samat ongelmat mitä windowsilla, mutta asiaa vaikeuttaa entisestään kaiken hajanaisuus. Jos joskus tulisikin palvelu joka osaisi tehdä tämän kaltaisia asioita, olisi vasta myös 10 erillaista toteutusta samalla asialle ja kehittäjät ei tiedä mitä käyttää.

En todellakaan ole sanomassa, että mobiilikäyttöjärjestelmät olisivat parasta mitä maailmasta löytyy, mutta minusta se on suunta, minne pitäisi olla menossa. Toivottavasti tulevaisuudessa tulee käyttöjärjestelmiä, joita ihan oikeasti olisi mukava käyttää ja joilla asioita saa suoraviivaisesti tehtyä.

27.7.2009 Juippi muuttaa. Ja se unohtunut Suomipelit

Jos joku ei osoitteen uudelleen ohjausta hoksannut, niin Juippi-blogi on siirtynyt paremmille Kapsi:n palvelimille. Parempaa siitä tekee muunmuassa mod_rewrite-tuki, jonka ansiosta URLit on nyt huomattavasti nätimmät aikeisempaan verraten. Luullakseni kuitenkin vanhat linkit pitäisi edelleen toimia, joskin ne vain uudelleenohjaavat uusiin osoitteisiin.

Ja sitten valitettavaan uutiseen, sillä unohdin täysin seurata Suomipelit.com:a kilpailujen varalta, koska ‘keskityin’ niin täydellisesti kivi-sakset-paperi tuotoksen tekemiseen. Nyt, kun viimein huomasin Suomipelit.com:n kilpailun, onkin enää vain kaksi viikkoa aikaa tehdä peli. No itseasiassa sekään ei olisi aivan mahdottoman suuri este, mutta mahdottomaksi tekee sen, että olen itse loppu kilpailun ajan lähes tietokoneen ulottumattomissa.