T-106.1210 Ohjelmoinnin peruskurssi, osa 1

Kierros 8, tehtävä 3

Taso ja pistearvo:C 200
Lyhyesti:Laaditaan oma tekstiseikkailupeli.
Mitä opitaan:Itsenäistä ohjelman suunnittelua plus mitä vaan mistä itse haluatte oppia lisää tai mitä pelissänne tarvitsette.
Toteuttamisen vapaus:Erittäin korkea. Sen lisäksi, että tässä saa itse päättää metodien toteutuksen ja suunnitella ohjelman rakenteen, voitte myös itse vaikuttaa jopa siihen, minkämoisen pelin yleensäkään teette.
Realistisuus:Korkea. Tässä tehtävässä pääsee sekä suunnittelemaan että toteuttamaan ja testaamaan.
Haastavuus:Haastava. Oman ohjelman suunnittelu on aloittelijalle haastavaa vaikka tässä onkin "apupyöriksi" tarjottu pohja, jonka päälle seikkailupelin voi rakentaa.
Työläys:Oman pelin suunnitteleminen ja toteutus on aikaavievää ja tämä onkin koko kurssin työläin tehtävä. Aikaa kannattaa varata ehdottomasti vähintään 10h, mielummin vaikka 15h.

Tehtävänanto

Laatikaa Adventure-projektin pohjalta oma tekstiseikkailupeli. Siis: unohtakaa se metsä, kaukosäätimet, paristot ja muut annetun pelimaailman osat ja luokaa kokonaan uusi tekstiseikkailu. Uuden pelin aiheena voi olla ihan mitä vaan. Luovuutta kehiin! Tässä joitain ideoita suunnittelun pohjaksi, mutta oma idea on aina vähintään yhtä hyvä kuin listasta poimittu.

Voitte käyttää pelin kielenä englantia tai suomea.

Tarkempia vaatimuksia

Pelissä pitää olla:

Käyttäkää annettua Adventure-projektia pelin pohjana. Päädytte varmasti muokkaamaan osaa annetuista luokista; erityisesti luokka Adventure täytyy remontoida perinpohjaisesti tai korvata jollain toisella luokalla.

Huom: on toivottavaa, että laatimanne peli toimii yhteen molempien annettujen käyttöliittymävaihtoehtojen kanssa. Välttäkää annettujen käyttöliittymien muokkaamista. (Jos on perusteltu syy muokata käyttöliittymää, niin se on sallittua, mutta siinä tapauksessa liittäkää projektiin tekstitiedosto UI_CHANGES.TXT, jossa selostatte muutokset ja niiden syyt.)

Kaikenlaiset lisäykset peliin ovat tervetulleita: uudet suunnat joihin voi mennä, uudet kulkuvälineet, pelaajahahmon erilaiset ominaisuudet ja kyvyt, esineiden painot jotka rajoittavat pelaajan mahdollisuuksia kantaa tavaraa, monisanaiset komennot, jne. jne.

Pitäkää hauskaa.

Huom.

Huomatkaa jo tehtävän kuvauksessa annettu huomatus työläydestä. Kannattaa siis rajata työmääräänsä kurssin vaatimuksiin sopivaksi ja työskennellä niin että toteuttaa mahdollisesti uusia keksimiään toimintoja yhden kerrallaan valmiiksi. Tällöin työstä on palautettavissa valmis versio vaikka kaikkea keksimäänsä ei saisikaan toteutettua. Viime vuonna ilmoitettujen tuntien mediaani oli tehtävänannon rajoissa, mutta usea opiskelija oli käyttänyt työhön yli 20h mikä menee sitten jo reippaasti oman kiinnostuksen puolelle.

Kannattaa myös suunnitella vähän etukäteen mitä ja miten asioita aikoo tehdä ennenkuin ryntää muuttamaan koodia. Tällä säästyy tunti jos toinenkin. Varmuuskopioista / versionhallinnasta (kts. screencastit) voi myös olla arvaamatonta iloa.

Palautus ja arvostelu

Tässä tehtävässä tulee palauttaa koko projekti Rubyriciin yhtenä zip-pakettina. Ohjeet projektin pakkaamisesta zipiksi löytyvät kurssin Eclipse-oppaasta. Laita paketin nimeen lähettäjien opiskelijanumerot.

Tästä Rubyriciin

Paina tätä laatikkoa päästäksesi Rubyric-palautusjärjestelmään. Valitse oikeanpuoleinen login-vaihtoehto(Weblogin), joka käyttää samaa login-järjestelmää kuin OODI ja Noppa.

Palauttaessa kysytään aluksi ryhmän jäseniä. Mikäli teit tehtävän yksin, jätä toinen ryhmän jäsen tyhjäksi.

Rubyric ei kuitenkaan arvostele tätä tehtävää. Sen tekevät järjestelmää käyttävät kurssin assistentit. Jos pelinne suurin piirtein täyttää yllä annetut vaatimukset, niin voitte olettaa saavanne ainakin puolet tehtävän pisteistä. Lisäpisteitä annetaan assarin harkinnan mukaan. Lisäpisteitä saa ohjelman teknisestä toteutuksesta, laadusta ja monimutkaisuudesta, mutta myös peliin ja pelimaailmaan liittyvistä kiinnostavista ja hauskoista yksityiskohdista ja ideoista. Pelin ei kuitenkaan tarvitse olla uskomattoman hauska viihdepläjäys, jotta voisi saada täydet pisteet. Siihen riittää laadukas, toimiva ohjelma, joka täyttää luetellut vaatimukset.

Huomatkaa, ettei pelin koko ole merkittävä arvosteluperuste. Vaikka lisäämällä peliin alueita voi toki saada aikaan kiinnostavamman pelin, ei pelkkä alueiden lisäily pisteiden toivossa kannata. Vastaavasti pieni peli, jossa on vain muutama hyvin toimiva alue voi hyvin saada täydet pisteet.

Koska peliänne tulee pelaamaan oikea ihmiskäyttäjä, älkää unohtako help-komentoa eikä walkthrough-tiedostoa. Pitäkää myös huoli siitä, että peli toimii ymmärrettävästi. Jos pelissä on bugi, jonka vuoksi "go north" komento taianomaisesti siirtääkin pelaajan toiselle puolelle pelimaailmaa dokumentoimattomalla tavalla, niin pelin pelaaminen ja arvioiminen on varsin tuskaisaa.

Yritämme julkaista tehtävän arvostelun viimeistään kaksi viikkoa deadlinen jälkeen.

Saatamme onnistua kehittämään pieniä palkintoja assarien suosikkipeleille...


Ennakoiva vastaus palautteeseen, jonka saamme teiltä ;-P

Tämä tehtävä on varsin erilainen kuin monet muut tämän kurssin tehtävät sikäli, että opiskelijoilla on tässä tehtävässä huomattavan suuri toteuttamisen vapaus. Tehtävä on rajattu suhteellisen vapaasti eikä tehtävän pointtina ole opetella mitään yhtä tiettyä ohjelmointitekniikkaa. Tehtävää ei arvostele kone vaan ihmiset.

Aiemman kokemuksen perusteella otaksumme, että monet teistä tulevat kokemaan tämän tehtävän hyvin kiinnostavaksi ja inspiroivaksi, yhdeksi kurssin parhaista tehtävistä. Osa teistä tulee kokemaan väljän tehtävänannon vapauttavana ja päästämään mielikuvituksen lentämään. Väljästä tehtävänannosta huolimatta monet teistä tulevat huomaamaan, että tehtävä opettaa paljon myös ohjelmoinnin teknisestä puolesta, sillä se pakottaa ajattelemaan ohjelmakokonaisuuden luokkien välisiä suhteita ja edellyttää ohjelman suunnittelua.

Luultavasti kuitenkin osa teistä tulee ärtymään tehtävänannon epämääräisyydestä ja ei-teknisyydestä. Kurssinhan pitäisi opettaa ohjelmointitekniikkaa. Gobliniin verrattuna suhteellisen hidas palaute assareilta harmittanee myös joitakin.

Eriävistä mielipiteistä huolimatta uskomme, että tämä tarjoaa jotain kiinnostavaa kenelle tahansa ohjelmoinnin perusteista kiinnostuneelle. Avoin tehtävänanto antaa mahdollisuuden valita, mitä itse haluatte tehdä ja oppia. Kannattaa koetella omia rajoja tavalla tai toisella. Voitte keskittyä tekemään hauskan pelin (samalla väistämättä oppien jotain ohjelmoinnista). Tai jos peliaihe ei inspiroi, voitte ottaa koko tehtävän koodausharjoitteena, tehdä pienen peruspelin (hällä väliä jos se on tylsä) ja opetella samalla käyttämään jotain ohjelmointitekniikkaa, joka on tuottanut vaikeuksia tai josta haluaisitte oppia lisää. (Sivuhuomio ohjelmointia ennestään osaaville kokeneille kurssilaisille: jos tämä kurssi ei tunnu riittävän haastavalta, voitte tämän tehtävän yhteydessä vaikkapa lukea jostain vähän edistyneemmästä ohjelmointiaiheesta -- esim. suunnittelumalleista (design patterns) -- ja koettaa hyödyntää sitä pelissä.)