Testaamista

Peli alkaa olla mekaniikaltaan kunnossa. Vielä puuttuvat viimeistellyt grafiikat, valikot ja highscorelistat. Arvon kahden scoreboard- palvelun, Cocos Liven ja Scoreloopin, välillä. Äänien lisääminen CocosDenshionin avulla oli hyvin helppoa.

Testaaminen on loppusuoralla. Pahimmat bugit on löydetty ja korjattu mutta vielä pitäisi määritellä kaikki pelissä käytettävät kuviot. On tärkeää että piirrettävät kuviot ovat mahdollisimman erilaisia. Silloin eleentunnistusalgoritmi ei tunnista pelaajan piirtämiä väärin.

Piirsin kymmeniä erilaisia kuvioita testausta varten ja lisäsin kuviot peliin. Sitten aloin kirjaamaan ylös mitkä kuviot ohjelma tunnistaa väärin. Määrä putosi nopeasti alle kymmeneen, ja jäi lopulta kuuteen. Se ei ole tarpeeksi, joten joudun lisäämään uusia kuvioita.

Testatessa kuvioita huomasin kaksi asiaa joita en osannut huomioida tarpeeksi hyvin:

1. Hiiren kursorilla piirretyt kuviot saattavat tunnistua huonosti simulaattorissa mutta voivat toimia hyvin sormella piirrettynä, ja myös toisin päin. Siispä kaikki testaaminen pitää tehdä itse laitteella.

2. Vasen- ja oikeakätiset piirtää kuviot hieman eri tavalla. Ero korostuu nopeasti piirrettäessä. Tästä seuraa se, että joidenkin kuvioiden piirtäminen on erityisen vaikeaa vasen- tai oikeakätisille. Pitäisi siis löytää mahdollisimman hyvin kummallekin ryhmälle sopivia kuvioita.

Kuva

Developer-lisenssi ja peli-idean toteutusta

Ostin iPhone Developer -lisenssin pari päivää sitten. Hinta, n. 80 euroa, oli opiskelijalle aika suolainen, mutta tarvitsen lisenssiä joka tapauksessa gradun liittyvää navigointiohjelmaa varten.

Koska voin nyt julkaista tekemiäni ohjelmia, aloitin tekemään yksinkertaista peliä jonka voin sitten julkaista App Storessa. Pelin tavoitteena on piirtää ruudulle ilmestyviä kuvioita mahdollisimman nopeasti ja tarkasti. Luonnollisesti kuvioiden ilmestymistahti kasvaa koko ajan.

YouTube-video pelistä siinä tilassa kuin se nyt on kertoo enemmän kuin tuhat sanaa:

</object>

Vielä pitäisi tehdä ainakin seuraavat asiat peliin:
- etsiä ja korjata mahdolliset muistivuodot
- piirtää kaikki grafiikat uusiksi
- toteuttaa highscore-sivu
- nopeuttaa peliä (ruudunpäivitys hidastuu jos ruudulla on tuhansia partikkeleita)

Ehkä peli olisi ensi viikolla valmis.

ps. onko kenelläkään ideaa pelin nimeksi?

Pelin suunnittelua

Cocos2d osoittautui helppokäyttöiseksi ja tehokkaaksi välineeksi 2d-grafiikan manipulointiin. Vaikka mitä tekisi, ja koodaisi miten huonosti, pysyy ruudun päivitysnopeus 60 framessa sekunnissa. Tähän mennessä ainoaksi hankaluudeksi Cocos2d:n kanssa on tullut frameworkin tapa jäsennellä kerroksia (layer) sisältäviin kohtauksiin (scene). MVC-malliin tottuneena Cocos2d:n tapa sekoittaa näkymä, malli ja ohjain samaan kohtaukseen aiheutti hieman ylimääräistä suunnittelua muttei kuitenkaan osoittautunut ylipääsemättömäksi ongelmaksi.

 

Ajattelin toteuttaa yksinkertaisen reaaliaikaisen strategiapelin iPhonelle. Ennen suunnittelua olisi hyvä miettiä mitä pelin pitää olla, ja mitä ei. Pelin pitäisi olla ainakin seuraavia:

 

Helposti ohjattava. Monet iPhonen strategiapelit on liian monimutkaisia - tehtäviä asioita on yhtä paljon kuin pöytätietokoneversiossa ja kaikki pitäisi suorittaa vain sormea käyttämällä. Red Alertin parin pikselin kokoisia yksiköitä oli melkein mahdoton ohjailla. Kiihtyvyyssensori on houkutteleva tapa toteuttaa ohjaus, mutta se on melko hidas ja epätarkka ohjaustapa.

 

Yksinkertainen. iPhone-pelejä pelataan vähän aikaa kerralla, ja yleensä sellaisissa ympäristöissä joissa ei välttämättä voi keskittyä hyvin, esimerkiksi bussissa tai sitä odotellessa. Pelin pitäisi olla sellainen että sitä voi pelata lyhyen pätkän kerrallaan. Innostuin Settlers-pelistä sen ilmestyessä iPhonelle, mutta petyin peliin syvästi sen monimutkaisuuden takia. Kun ruudulla oli liikaa tavaraa, muuttui pelaaminen liian vaikeaksi. 

 

Visuaalisesti yksinkertainen. En ole kovin kummoinen taiteilija :)

 

Nopeatempoinen. Tylsää peliä ei kukaan jaksa pelata, varsinkaan kännykällä.

 

Erilainen. RTS-pelit muistuttavat toisiaan, ja oman pelin pitäisi erottua joukosta.

eka iPhone-ohjelma

Olen viime päivinä tutustunut iPhone-ohjelmointiin. Yksi syy kiinnostukseeni on graduni jota varten joudun kirjoittamaan yksinkertaisen iPhone-ohjelman. Tein kokeilumielessä kiihtyvyyssensoria ja kosketusnäyttöä hyödyntävän Pong-pelin, mutta valitettavasti ohjelmia ei voi siirtää puhelimeen ilman Applen developer-lisenssiä (joka maksaa $99).
Pongin tekeminen ei sinänsä ollut kummoinen homma. Pelin logiikka on hyvin yksinkertainen - pallo kimpoilee seinistä ja mailasta. Grafiikan piirto tapahtui Quartz 2d:llä, ja Quartz tarjosi myös sopivan metodin törmäyksen tarkastamiseen.

Screen_shot_2009-12-27_at_18

Pongin tekemisen jälkeen aloin etsiä parempaa tapaa grafiikan piirtämiseen kuin kaiken ruudulla näkyvän piirtäminen erikseen jokaisessa framessa. OpenGL:ää käyttämällä olisi saanut nopeaa piirtoa mutta sen käyttö sellaisenaan vaikutti turhan työläältä.

Ongelmaan löytyi ratkaisu: Cocos2d ( http://www.cocos2d-iphone.org/ ), kaksiulotteisen grafiikan piirtämisen tarkoitettu grafiikka-framework. Mukana tuli paljon hyviä esimerkkejä ja Cocos:n käyttö vaikutti nopean kokeilun perusteella melko yksinkertaisena. Cocos2d:ssä on sisäänrakennettuna kaksi fysiikkamoottoria, Chipmunk ja Box2d.

Koska grafiikan piirto ja manipulointi on helppoa Cocos2d:llä, ajattelin suunnitella ja tehdä yksinkertaisen pelin itse, alusta loppuun.