Peliohjelmointia Kumpulassa kesällä 2011

Tietojenkäsittelytieteen laitoksella toimintaansa aloitteleva Linkki-klubi järjesti kaksi peliohjelmointileiriä kesä- ja heinäkuun vaihteessa. Ensimmäinen leiri (27.6.-1.7.) oli suunnattu 10-12-vuotiaille ja toinen leiri (4.-8.7.) 13-16-vuotiaille. Leirien aikana osallistujat tutustuivat tietokonepelien ohjelmointiin.

Toisin kuin usein kuulee, tietokonepelien pelaaminen ei ole puhdasta ajanhukkaa. Esimerkiksi LUMA-sanomat on nostanut tietokonepelejä esiin niiden luomien oppimismahdollisuuksien takia. Uutisissa ovat olleet muun muassa Minecraft ja Fate of the World -pelit. Minecraftia on tutkittu avoimena oppimisympäristönä sen pelimaailman vapauden takia – pelissä voi tutkia, rakentaa ja toimia melko rajoittamattomasti, minkä lisäksi pelimaailma mahdollistaa yhteistoiminnan muiden pelaajien kanssa. Fate of the World taas tutustuttaa pelaajia ilmastonmuutokseen ja antaa mahdollisuuden kokeilla erilaisia skenaarioita energianlähteiden käyttöön liittyen. Osa tietokonepeleistä perustuu joukkueiden ja ryhmien toimintaan, ja harjoittaa sitä kautta tärkeitä ryhmädynamiikkaan liittyviä taitoja. Tietokonepelien hyödyt on huomattu myös yritysmaailmassa. Esimerkiksi IBM on erittäin kiinnostunut online-roolipeleissä käytetyistä johtamiskäytänteistä ja johtajuuden kehittämisestä eri maailmankolkkiin hajautetuissa työyhteisöissä (1).

Pelaamisessa ja ohjelmoinnissa on isoja eroja. Pelaaja näkee usein vain pelin kehittäjien viimeisimmän tuotoksen, joka on käynyt läpi jopa satojen päivien kehitysprosessin. Suurimpia hittipelejä on kehittämässä kymmeniä ihmisiä samaan aikaan. Heistä jokainen luo peliin uutta toiminnallisuutta ja sisältöä – peliä kehittävässä tiimissä jokaiselle tekijälle on oma paikkansa. Pelien luominen, kuten ohjelmointikin, vaatii paljon harjoittelua ja ideoiden testaamista ja läpikäyntiä. Hyvänä esimerkkinä harjoittelun tärkeydestä voi käyttää John Carmackin antamaa vastausta kun anonyymi Internet-käyttäjä kysyi apua pelien tekemisessä kehittymiseen: “When he was young, John Romero made a game for every letter of the alphabet. That was wise.” (2).

Ohjelmoinnissa on useita ulottuvuuksia. Puhtaan ohjelmointikielen syntaksin tuottamisen lisäksi ohjelmoidessa suunnitellaan ohjelmien loogista rakennetta, pohditaan pelimaailmassa esiintyvien esineiden syy-seuraus-suhteita, ideoidaan toiminnallisuutta ja yleistetään opittua tietoa yksittäisiä tapauksia yleisempiin tapauksiin. Esimerkkien yleistäminen muihin ongelmiin ei ole helppoa tietojenkäsittelytieteen laitoksen opiskelijoillekaan. Olikin erityisen mahtavaa nähdä miten peliohjelmointileirin osallistujat punnersivat eteenpäin uudessa ympäristössä.

Pelien luomisessa vaaditaan ohjelmoinnin lisäksi sisältöä, esimerkiksi pelin tavoite, grafiikka ja musiikki. Leirin lähtökohtana oli se, että jokaisella on oma osa-alue jossa he loistavat sekä osa-alueita joissa he voivat kehittyä. Oleellista oppimisessa ja kehittymisessä on tarjottu tuki, tsemppaus ja usko. Nuoret tekevät huikeita asioita kun heihin uskotaan ja heitä tuetaan heidän matkassa eteenpäin – annetaan heille aikaa ja kuunnellaan heitä.

Kesäleirin ohjelmointikieleksi oli valittu python, jolle on olemassa pelien tekemistä helpottava pygame-kirjasto. Pygame tarjoaa valmiita välineitä hiiren ja näppäimistön tapahtumien käsittelyyn, ruudulle piirtämiseen tarvittaviin perustoimintoihin ja äänten soittamiseen. Leirille ei vaadittu aiempaa ohjelmointikokemusta, tietokoneen käynnistystaito riitti alkuun pääsemiseen. Ohjaajat huomasivat nopeasti, että leiriläisten tietokoneen peruskäyttötaidot olivat erinomaisella tasolla.

Osallistujat toivat omaa lahjakkuuttaan esiin eri osa-alueilla. Osa panosti enemmän grafiikkaan, toinen ideoihin sekä toiminnallisuuteen ja kolmas toteutuksen yksityiskohtiin. Oli huikeaa nähdä miten eräs osallistuja keksi käyttää pelissä oman sukulaisensa säveltämää musiikkia – toinen taas skannasi käsin piirtämänsä kuvan pelin taustakuvaksi.

Yhtenä leirin salaisista teemoista oli matematiikka ja sen käyttäminen. Pelimaailmoja luodessa tutustuttiin ja syvennyttiin muun muassa koordinaatistoon ja erilaisiin laskuoperaatioihin. Jokainen osallistuja teki huomaamattaan kaksiulotteisessa koordinaatistossa tapahtuvia siirtymiä. Ohjelmointi ja pelien tekeminen mahdollistaa kokeilevan matematiikan. Esimerkiksi pinnan päälle pääseminen vaatii sen, että osataan laskea pinnan ja hahmon törmäyskohta. Mahtavia tilanteita leirille loivat sekä tarkoitetut että tarkoittamattomat pohdintaa herättävät “oho”-tilanteet: “Miten se pelihahmo nyt tuonne pääsi?”.

On ollut mielenkiintoista huomata miten kasvatustieteestä tunnettua Piaget’n teoriaa lapsen kehityksestä voi soveltaa osittain myös ohjelmointitaidon kehitykseen. Piaget’n teoria olettaa että lapsen sosiaalinen, henkinen ja fyysinen kehitys etenee samaa tahtia, eikä lapsi voi olla yksittäisellä alueella huomattavasti muita alueita edellä. Formaalisten operaatioiden vaiheessa, joka oletettavasti ajoittuu suunnileen ikävuosille 11-12, opitaan abstraktiin symbolit sisältävään ajatteluun. Ohjelmoinnissa käytetään huomattavasti muuttujia eli symboleja, jotka tallentavat tietoa ohjelman tilan (esimerkiksi pelin etenemisen), ylläpitämiseen ja mallintamiseen. Nuorempien osallistujien leirillä ohjaajat neuvoivat osallistujia huomattavasti enemmän, ja osa tekijöistä haki selkeästi tukea esimerkeistä ja teki peliä mallia käyttäen. Oli huikeaa huomata että nuorimmillekin osallistujille (9v) muuttujien käyttö oli kutakuinkin sujuvaa harjoittelun jälkeen. Huomasimme uudelleen ja uudelleen että ohjelmointi on hyvä väline ongelmanratkaisutaidon ja abstraktin ajattelun harjoittamiseen – kun motivaatio tekemiseen tulee tekijältä.

Nuorempien leirin viimeisenä päivänä järjestettiin pelien esittelytilaisuus, jossa oli paikalla paljon sekä leiriläisten vanhempia että tietojenkäsittelytieteen henkilökuntaa. Tilaisuuteen osallistui hieman yli 50 henkilöä, ja jokainen pelileiriläinen sai ansaitsemansa aikansa parrasvaloissa sekä raikuvat aplodit. Leiri päätettiin perjantai-iltapäivällä rauhoittumishetkeen, jonka aikana osallistujat saivat myös diplomit peliohjelmointileirille osallistumisesta. Vanhempien leirillä perjantai päätettiin kevyemmin leiriporukan yhteisellä demotilaisuudella, jota ennen oltiin käyty kiinalaisessa syömässä.

Kahden viikon aikana tapahtui huikeita asioita, ja odotamme jo innolla ensi kesää! Linkki ja Tietojenkäsittelytieteen laitos järjestävät myös tulevana lukuvuotena lukion opettajille suunnatun peliohjelmointiin tutustuttavan täydennyskurssin, jonka tavoitteena on mahdollistaa peliohjelmointikurssin järjestäminen lukiossa. Lisätietoja leiristä syksymmällä LUMA:n sivuilta (3).

Ohjaajina leirillä toimivat: Emilia Hjelm, Antti Laaksonen, Pekka Mikkola ja Arto Vihavainen.

Teksti: Arto Vihavainen

Kuvat: Thomas Vikberg

(1) http://domino.watson.ibm.com/comm/www_innovate.nsf/pages/world.gio.gaming.html

(2) http://twitter.com/#!/ID_AA_Carmack/statuses/80755403104854016

(3) http://www.luma.fi

Luotu

27.07.2011 - 16:43

Linus Torvalds innosti alan opiskelijoita laitoksella

Laitoksen alumni, Helsingin yliopiston kunniatohtori, Suomen tunnetuin tietojenkäsittelytieteen edustaja maailmalla Linus Torvalds vieraili Kumpulan kampuksella 23. lokakuuta. Hän vastaili opiskelijoiden ja henkilökunnan kysymyksiin vapaamuotoisessa keskustelutilaisuudessa, jossa noin 300 läsnäolijaa tenttasivat häntä. Koska sana oli vapaa ja Torvalds painotti sitä, että kaikkea saa kysyä, kysymykset vaihtelivat laidasta laitaan

Professorista pääjohtajaksi

Suomen Akatemialla oli 16.12.2011 mielenkiintoista tiedotettavaa: ”Valtioneuvosto on nimittänyt professori, akateemisten asioiden vararehtori Heikki Mannilan Suomen Akatemian pääjohtajaksi. Virka täytetään ajalle 1.3.2012–28.2.2017.” Mutta kenestä oikein on kysymys?

Avointa maksutonta massiivista opiskelua

Ohjelmoinnin MOOC-logo

MOOC eli “massive open online course” tarkoittaa avointa verkkokurssia. Tietojenkäsittelytieteen laitoksen ensimmäinen MOOC lanseerattiin keväällä 2012. Nyt kenellä tahansa on mahdollisuus osallistua MOOCeihin joiden aihealueena on olio-ohjelmointi, peliohjelmointi sekä algoritmit.

Tutki, opeta ja harrasta sitä, mikä on kivaa

Laitoksen ja Aalto-yliopiston yhteiseen HeCSE-tutkijankoulutusohjelmaan on vastikään valittu uusia jatko-opiskelijoita. Yksi nousevista nuorista tutkijoistamme on Antti Laaksonen.

Antti on valmistunut maisteriksi keväällä 2011. Köykäisiä teollisuuteen tehtäviä Scrum-graduja työkseen lukevien mieltä varmaankin lämmittää, että tämä opiskelija kirjoitti gradunsa aivan tietojenkäsittelytieteen ydinalueelta, säännöllisten lausekkeiden minimoinnista. Aihe oli Antin itsensä valitsema, koska se oli ”kiinnostava ja sopivan haastava”.