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

Uusi sivusto!

TÄMÄ ON TIETOJENKÄSITTELYTIETEEN OSASTON VANHA SIVUSTO

Tietojenkäsittelytieteen osaston uudet sivut sijaitsevat www.helsinki.fi-palvelimella.

Osoite cs.helsinki.fi ohjautuu nyt uudelle palvelimelle. Tätä osoitetta voidaan edelleen käyttää osaston www-osoitteena. Vanha sivusto löytyy paikasta cs.helsinki.fi/pre2018.

 

Uusien professorien tervetuliaisluennot ke 29.11. klo 14 - 18

Tietojenkäsittelytieteen uudet professorit esittelevät tieteenalansa ja tutkimuksensa tärkeimmät kysymykset 20 minuutissa.
Luennot järjestetään päärakennuksessa keskiviikkona 29.11. klo 14.00 alkaen.

sali 6 uusi puoli, 3. krs

Matemaattis-luonnontieteellisen tiedekunnan dekaani Esko Ukkonen esittelee lyhyesti Pan Huin.

14.15 Pan Hui: MOBILE AUGMENTED REALITY: BLESSING OR CURSE?

Tietojenkäsittelytieteen laitos täyttää 50 vuotta

#uhcs50

Helsingin yliopiston tietojenkäsittelytieteen laitos täyttää tänä vuonna 50 vuotta. Juhlavuoden kunniaksi järjestetään torstaina 31.8.2017 klo 13-18 juhlaseminaari yliopiston päärakennuksen juhlasalissa (Unioninkatu 34).

uhcs50.cs.helsinki.fi