OHJ-2710 Peliohjelmointi 6 op - syksy 2013


Etusivu
Luennot
Harjoitustyö
Materiaalia

Harjoitustyö 2013

Harjoitustöiden satoa

2013:

2012:

2011:

(jos ryhmänne pelin voi laittaa tänne, ota yhteyttä timo.kellomaki@tut.fi tai Daemou@IRCnet)


Harjoitustyöt ohjaa ja tarkistaa tänä vuonna Timo Kellomäki, timo.kellomaki@tut.fi.

Pelianalyysiä varten on erilliset ohjeet.

Harjoitustyössä toteutetaan kokonainen peli 2-4 hengen ryhmissä. Työ on erittäin vapaamuotoinen ja samalla itsenäinen. Yhden hengen ryhmät hyväksytään poikkeuksina, mutta työtä arvosanojen eteen joutuu tekemään kahden edestä. Ryhmää voi etsiä luennoilta tai ohjaajan kautta.

Työssä saa käyttää vapaavalintaisia valmiita pelimoottoreita, kehyksiä ja kirjastoja. Myös valmiita resursseja, kuten 3d-malleja, grafiikkaa ja ääniä saa käyttää (tekijänoikeuksien ym. rajoissa). Tarkoitus ei kuitenkaan ole vain muokata valmista peliä (modi), vaan rakentaa pelin sisältö ja toiminnallisuus alusta asti itse. Toteutuksen tuleekin perustua vahvasti ohjelmointiin eikä pelkkään sisällöntuotantoon valmiilla työkaluilla. Ohjelmointi saa olla skriptikielipohjaista. Tarkoitus on, että kaikki ryhmäläiset osallistuvat koodaukseen.

Työ suoritetaan tekemällä neljä asiaa: ilmoittautuminen suunnitelmineen, prototyypin esittely luennolla, välipalautus ja lopullinen palautus.

Pelityyppiin tai sisältöön ei aseteta kurssin puolesta paljonkaan rajoituksia. Seuraavat ominaisuudet ovat kuitenkin vaadittuja:

  • Peli on graafinen (2- tai 3-ulotteinen)
  • Pelissä on interaktiota, eli pelaaja vaikuttaa pelitapahtumiin, jotka taas vaikuttavat pelaajan toimiin
  • Peli (tai merkittävä osa siitä on reaaliaikainen. Reaaliaika saa olla pysäytettävissä, mutta interaktio pelimaailman kanssa täytyy olla mahdollista myös reaaliaikatilassa.
  • Pelissä on itsenäisesti toimivia agentteja, jotka voivat olla hahmoja, esineitä, maailman osia jne. Toisin sanoen pelimaailmassa tapahtuu (yleensä) koko ajan jotain, vaikka pelaaja ei tekisikään mitään. Moninpeli riittää täyttämään vaatimuksen.

Lisäksi pelin täytyy osoittaa riittävää perehtymistä johonkin kurssin osa-alueista. Järkevä 3-ulotteinen grafiikka ja siihen liittyvä 3d-pelimaailma, jossa hahmot liikkuvat ja törmäilevät maastoon kelpaa jo sellaisenaan. 2d-pelissä muutamia esimerkkejä ovat fysiikkamoottorin järkevä käyttö, omaperäinen ja toimiva pelisuunnittelu, hyvä tekoäly tai järkevä proseduraalisen sisällön luominen. Lukuisia muitakin tapoja toteuttaa vaatimus on.

Jos rajanveto joko perusvaatimusten tai erityisen perehtymisen osalta on epäselvä, keskustele ohjaajan kanssa. Pelien erilaisuuden vuoksi tiukkoja rajoja on mahdotonta antaa, mutta asia selviää viimeistään välipalautuksen yhteydessä.

Myös toteutusympäristö on vapaa. Tarkistajan on kuitenkin pystyttävä testaamaan peliä itsenäisesti. Useimmat pelimoottorit vaativat työläitä asennuksia kääntyäkseen, joten kaikissa (useimmissa) alustavalinnoissa tarkistajan ei ole käytännöllistä kääntää peliä itse. Tällöin täytyy lähdekoodien lisäksi palauttaa Windows-binäärit mahdollisine asennusohjeineen. Yksi mahdollinen tapa on web-pohjainen peli. Joissakin tapauksissa (esim. mobiilipelit) ryhmä voi myös lainata tarkastajalle sopivaa laitetta testaamista varten.

Kurssin puolesta on aiemmin tarjottu mahdollisuus käyttää laitoksen koneita ja ohjelmia, mutta tästä on luovuttu, koska mahdollisuutta ei ole käytönnössä juuri koskaan käytetty. Yleensä käytetään siis ryhmän omia laitteita. Ilmaisia kehitysympäristöjä, pelimoottoreita ja kirjastoja löytyy lukuisia. Jos laitteet tai ohjelmat tuottavat ongelmia, ottakaa yhteys ohjaajaan.

Pelimoottorin tmv. ympäristön valintaan kannattaa käyttää aikaa heti alussa. Valintaan vaikuttavat itse pelin lisäksi mm. ryhmän taidot, kokemus ja käytettävissä oleva aika. Pelin voi tehdä käyttäen yksinkertaisia peruskirjastoja, kuten SDL, SFML tai PyGame, jolloin opettelua on vähemmän, mutta ryhmä joutuu toteuttamaan melko matalan tason perustoiminnallisuutta itse. Toisaalta varsinaiset pelimoottorit, kuten Crystal Space tai UDK, sisältävät runsaasti valmista toiminnallisuutta, mutta vaativat usein todella paljon aikaa alustan opetteluun. Yksi lista pelimoottoreista löytyy Wikipediasta. Viime vuosina suosittuja alustoja ovat olleet Unity3D, SDL ja SFML.

Koska työ ja käytettävä ympäristö ovat vapaamuotoisia, on kurssihenkilökunnan valitettavasti hankalaa antaa yksityiskohtaista teknistä apua työn käytännön ongelmissa. Internetin keskustelupalstoilta saa usein neuvoja monenlaisiin ongelmiin, mutta työn tarkastajaa saa toki myös vaivata kysymyksillä. Ottakaa erityisesti yhteyttä, jos ryhmä jää jumiin tai homma tuntuu liian haastavalta.

Vielä vihjeenä, että useimmat ryhmät ovat nähneet enemmän vaivaa kuin kurssi olisi vaatinut ja tehneet erittäin laadukasta työtä. Harjoitustöiden keskiarvosana on ollut varsin korkea (ja vaatimuksia on tänä vuonna vähän höllätty). Jos harjoitustyö tuntuu liian työläältä, ehkä ryhmänne on itse asettanut riman liian korkealle. Aika yksinkertainen pelin raakilekin riittää läpipääsyyn, eikä kolmoseenkaan loputtomia vaadita.

Ilmoittautuminen, esittely ja välipalautus

Harjoitustyöhön ilmoittaudutaan lähettämällä viimeistään 18.9. vähintään noin sivun mittainen kuvaus tehtävän pelin ideasta ja käytettävistä työkaluista osoitteeseen timo.kellomaki@tut.fi (esim. leipätekstinä tai pdf-liitteenä). Olennaista on mainita, minkä ominaisuuden on tarkoitus täyttää vaatimus "riittävästä perehtymisestä kurssin aiheisiin", eli mihin ryhmä erityisesti keskittyy. Kuvauksesta saa palautetta, joten jos haluaa ottaa kaiken irti, dokumenttiin voi pohdiskella enemmänkin työn haasteita, mutta pinnallinenkin kuvaus riittää. Mukaan myös ryhmään kuuluvien opiskelijoiden nimet ja opiskelijanumerot. Ilmoittautuneet saavat lisäksi ryhmänumeron. Tätä numeroa pyydetään käyttämään jatkossa kaikissa yhteydenotoissa ja palautuksissa.

Viimeisellä tai toiseksi viimeisellä luennolla esitellään ryhmän projektin tilaa muille läsnäolijoille. Rennon esityksen kesto on noin 5 minuuttia. Yhdenkin ryhmäläisen läsnäolo riittää. Ottakaa oma laitteisto mukaan, mikäli mahdollista. Tavoite on näyttää ainakin jotain ajettavaa ja kertoa muille projektin sujumisesta ja esimerkiksi kokemuksia valituista työkaluista. Jos kukaan ryhmäläisistä ei pääse paikalle kummallekaan luentokerralle, sopikaa tarkastajan kanssa korvaavasta suorituksesta (suunnitteludokumentti tms). Koska tilaisuus on melko varhain, mitään erityisempiä vaatimuksia projektin tilasta ei vielä tässä vaiheessa ole (jos ei ole ajettavaa näytettävää, kertokaa muuten kokemuksistanne tähän asti).

Välipalautuksen on tarkoitus olla jollakin asteella toimiva prototyyppi pelistä. Palautus tapahtuu sopimalla tapaaminen työn ohjaajan kanssa ja demonstroimalla ajankohtaan mennessä aikaansaatua raakiletta. Varaa ryhmälle aika seuraavan Doodle-linkin kautta viimeistään tapaamista edeltävänä päivänä klo 16:

Välipalautuksen ajanvaraus Doodlessa

Tapaamiset ovat huoneessa TE215 Ohjelmistotekniikan laitoksella. Riittää, jos ryhmästä yksi pääsee paikalle, mutta on tietysti sitä parempi, mitä useampi mukana on. Ottakaa mukaan oma peliä pyörittävä laite, jos mahdollista. Mikäli ei, ottakaa etukäteen yhteyttä työn ohjaajaan esim. Windows-binäärin toimittamiseksi. Jos mikään ajankohdista ei sovi kenellekään ryhmästä tai haluatte hoitaa homman jo aiemmilla viikoilla pois alta, ottakaa yhteyttä.

Läpipääsykriteerit eivät ole korkeat, mutta ryhmällä täytyy olla näyttää jotain ajettavaa, joka muistuttaa tehtävää peliä edes karkealla tasolla (esim. grafiikkaa ja ääniä ei tarvitse olla yhtään pakollista enempää). Tavoite on siis keskittyä tekemään olennaisimmat ominaisuudet ensin, jotta pelin konseptin toimivuutta pääsee kokeilemaan ja hiomaan ajoissa. Tämän palautuksen tarkoituksena on pakottaa jakamaan työ tasaisemmin syksyn ajalle ja ohjata pelien prototypointiin hyvin sopivaan iteratiiviseen kehitystapaan. Lisäksi ryhmä saa tietysti kommentteja pelin suunnasta ja sopivan tilaisuuden kysellä esimerkiksi arviointikriteereistä.

Työn palautus

Lopullinen harjoitustyö tulee palauttaa viimeistään 5.12.2013 kello 16:00. Perusteettomasta myöhästymisestä seuraa sakkoja seuraavasti: 0-1 vrk: -1 arvosana; 1-3 vrk: -2; 3-7 vrk: -3; yli viikon myöhässä olevat työt hylätään. Verkon katkeaminen, rikkinäisen linkin toimittaminen, levyrikko, pilvipalvelun käyttökatko tms. ei ole perusteltu syy. Ottakaa siis palautus varman päälle! Palautuksista saa kuittauksen, mutta juuri deadlinen alla voi olla viivettä.

Yleensä työt vievät enemmän tilaa kuin sähköpostilla on järkevää toimittaa, joten hyvä tapa palauttaa on laittaa paketti saataville verkkoon ja lähettää vain osoite. Palautuksen voi tehdä myös esim. muistitikulla huoneeseen TE215. Myös sähköpostin liitetiedostona tai web-osoitteen avulla saa kuitenkin palauttaa. Ohjaaja on paikalla työhuoneellaan ainakin 5.12.2013 klo 12:00-15:45 ja lisäksi sopimuksen mukaan.

Palautukseen tulee laittaa mukaan kaikki itse tehty materiaali (koodi ja resurssit) ja lisäksi sellaiset kirjastot, resurssit ym. jotka eivät ole helposti saatavilla www:stä. Ajatuksena on, että tarkastajan pitäisi pystyä halutessaan hakemaan käytetyt kirjastot ym. ja kääntämään peli toimitetun materiaalin pohjalta.

Palautuksen mukana on oltava dokumentti (esim. txt tai pdf), jossa on ryhmätunnus sekä lyhyet peliohjeet testaajalle (tai esim. huijauskoodit, joiden avulla vaikean pelin arviointi helpottuu). Lisäksi dokumentissa kerrotaan lyhyesti, mitkä osat pelistä ryhmä on itse toteuttanut (sekä koodin että resurssien, kuten grafiikan ja äänten osalta). Lisäksi kuvataan kaikki muualta saadut osat, kuten käytetyt ulkopuoliset komponentit ja valmiit resurssit. Näistä täytyy kertoa, mistä ne ovat peräisin ja miten niitä hyödynnetään pelissä. Dokumentti on myös sopiva paikka korostaa ryhmän mielestä tärkeimpiä saavutuksia, jotta tarkastaja osaa tutkia koodia erityisesti niiltä osin.

Lisäksi dokumentissa toivotaan harjoitustyön mitoittamista varten karkeaa arviota tehdystä työmäärästä. Työmäärä ei muuten vaikuta arvosanaan, mutta jos ryhmän työt ovat jakautuneet hyvin epätasaisesti, on reilua mainita eri jäsenten panoksista. Tällöin ryhmäläisten arvosanat voivat poiketa toisistaan. Tällöin ei tietysti pidä tuijottaa pelkkiä tunteja, jos vaikkapa joku ryhmäläisistä on alan veteraani ja suurin osa laadusta on pienistä tuntimääristä huolimatta hänen ansiotaan.

Arvostelu

Harjoitustyö arvostellaan asteikolla 0-5 (0,25 arvosanan tarkkuudella). Arvostelussa kiinnitetään huomiota muun muassa pelin laajuuteen, näyttävyyteen, tekniseen toteutukseen ja viihdyttävyyteen (toisin sanoen yleisesti laatuun). Ryhmän oma panos on oleellinen: jos pelimoottori tekee melkein kaiken valmiina ja on käytetty lähinnä valmiita resursseja, vaaditaan peliltä enemmän kuin alusta asti itse tehdyltä. Ryhmän koko otetaan myös huomioon.

Seuraavat arvosanarajat ovat ohjeellisia:

  • 0: Peli ei ole ehjä kokonaisuus. Pelaaminen on tuskallista tai hyvin hankalaa. Pakollisia vaatimuksia ei ole täytetty.
  • 1: Kuten yllä, mutta pelin tekemistä on selvästi yritetty tosissaan ja yksittäisiä asioita on tehty hyvin.
  • 2: Vaatimukset täyttyvät ja peli on pelattavissa, mutta siinä on selviä puutteita useilla osa-alueilla.
  • 3: Vaatimukset täyttyvät selvästi. Peli on ehjä kokonaisuus ja sen pelaaminen on viihdyttävää, tai siinä on selviä teknisiä ansioita.
  • 4: Kuten yllä, mutta pelaaminen on sekä viihdyttävää että peli on jollain tapaa teknisesti ansiokas.
  • 5: Tarkastajaa kiinnostaa pelata peliä muutenkin kuin palkan vuoksi. Lisäksi teknisiä ansioita useilla osa-alueilla.

Arvostelun kannalta kannattaa siis panostaa siihen, että tekee pelistä toimivan kokonaisuuden. Pelkkä loistava pohja tai teknologiademo, josta uupuu ajanpuutteen takia itse peli, ei tuota kolmosta parempaa arvosanaa! Projektiin voi suhtautua nopean, mutta oikeasti julkaisukelpoisen prototyypin tekemisenä.

Koska kyseessä on kuitenkin ohjelmointikurssi, arvostelussa kiinnitetään huomiota enemmän teknisiin kuin taiteellisiin ansioihin. Esim. grafiikan ja (mahdollisten) äänten on tärkeämpää olla toimivia, peliä tukevia ja kokonaisuuteen sopivia kuin kauniita ja hiottuja.

Pelien pelailutilaisuus

11.12.2013 kello 12:15-15:00 salissa TB207 pidetään vapaaehtoinen tilaisuus, jossa pelataan toisten ryhmien pelejä. Tilaisuudessa opiskelijat myös valitsevat parhaan harjoitustyön. Vähintään voittajapelin tekijä palkitaan ylimääräisellä numeron korotuksella kurssin kokonaisarvosanaan (kaikki osasuoritukset täytyy silti suorittaa hyväksytysti). Ryhmien täytyy pääosin toimittaa itse paikalle laitteisto, jolla peliä voi kokeilla. Työtä saa halutessaan parannella palautuksen ja tapahtuman välillä.

Lisäietoja

Kysymykset harjoitustyötä koskien voi lähettää osoitteeseen timo.kellomaki@tut.fi.