Pelien tekeminen osana matematiikan opetusta

Kirjoittaja: 

Jussi Kasurinen, TkT, tutkija, tietokirjailija, Lappeenrannan teknillinen yliopisto

 

Kuva: Antti Knutas, © Lappeenrannan teknillinen yliopisto

 
 
 
  Jussi Kasurinen
  TkT, tutkija,
  tietokirjailija,
  Lappeenrannan
  teknillinen yliopisto
Kirjoitus pohjautuu Jussi Kasurisen kokemuksiin ohjelmointi- ja peliopetuksesta Lappeenrannan teknillisellä yliopistolla sekä lähialueen muissa oppilaitoksissa esikouluista lukioihin. Kasurisella on kymmenen vuoden opetuskokemus tietotekniikan eri osa-alueilta, sekä useita tietotekniikan opetuksesta ja pelien kehityksestä kirjoitettuja tieteellisiä artikkeleita.

 

 

Ohjelmoinnin lisääminen osaksi matematiikan opetusta muuttaa opetusohjelmaa, ja vaatii opettajalta uudenlaista osaamista sekä uusia kykyjä tietokoneiden parissa. Selvää on lähinnä se, että pelialaa pidetään tällä hetkellä tietotekniikan uudelleen muodikkaaksi tehneenä trendinä. Mutta, mitä peliohjelmointi oikeastaan on, ja mitä siitä pitäisi tietää ennen opetussuunnitelman lukkoon lyömistä?

Ohjelmoinnin opettaminen on tehnyt paluun suomalaiseen koululaitokseen, ja tämän vuoksi useissa oppilaitoksissa varmasti mietitään keinoja opetuksen toteuttamiseen. Käytännössähän ohjelmointi jalkautetaan siten, että alakoulujen ryhmissä oppilaat työskentelevät graafisten työvälineiden ja ohjelmointipelien avulla, mutta yläkouluun ja lukioon siirryttäessä toiminta siirtyy enenevässä määrin oikeiden ohjelmointikielten pariin. Uuden peruskoulujen opintosuunnitelman mukaan yläkoulun lopulla oppilaan pitäisi osata käyttää kahta eri ohjelmointiympäristöä, joista toinen käyttää oikeaa ohjelmointikieltä.

Yliopistomaailmassa ohjelmoinnin opettamista ensimmäisen vuoden opiskelijoille on tutkittu jo kymmeniä vuosia, siitä hetkestä alkaen, kun tietotekniikan huomattiin kärsivän merkittävästä opiskelijakadosta. Mikä ikävämpää, kadon lisäksi oppimistulokset olivat heikkoja myös niiden keskuudessa, jotka alaa ylipäänsä päättivät ryhtyä opiskelemaan. Vaikka aihetta on tutkittu jo kauan, ei opetuksen viisasten kiveä ole vielä löydetty, joskin muutamasta asiasta ollaan yksimielisiä. Opetuksen ja tarjottujen tehtävien pitää olla motivoivia sekä sellaisia, että ne tarjoavat käytännöllistä osaamista, jota voi hyödyntää lähes sellaisenaan oikeissa hankkeissa. Parhaisiin tuloksiin päästään ainoastaan silloin, kun opiskelija kokee oppivansa jotain aidosti hyödyllistä ja uutta informaatiota.

On tietysti selvää, että yliopiston ensimmäisen vuoden opiskelija ei ole vertailtavissa suoraan lukiolaiseen, saatikka yläkoululaiseen. Varmaa on joka tapauksessa se, että pelien tekeminen ohjelmoinnin opettelemisen muotona on motivoiva ja käytännönläheinen tapa lähestyä asiaa. Ainakin motivoivampaa kuin tuijottaa tulkin syöteikkunaan ilmestyviä numeroita tai kirjaimia ilman mitään muuta virikettä. Monesti kuitenkin unohdetaan, että pelien tekeminen on oikeasti hyvin vaativaa työtä, johon tarvitaan useita eri teknologioita; nyrkkisääntönä yksi 3–4 hengen tiimi tekee kaupallista mobiilipeliä 5–6 kuukautta. Miten tätä aihetta sitten opetetaan 12–16 viikon kurssina, jossa lähtötaso asetetaan lähelle nollaa ja jokaisen oppilaan olisi tarkoitus yrittämällä pärjätä kokonaisuuden kanssa?

Peleihin tarvittavat komponentit

Pelien tekemiseen liittyy aina neljä pääkomponenttia: grafiikka, animaatio, äänituotanto ja ohjelmointityö. Hieman paradoksaalisesti näistä komponenteista äänituotanto ja ohjelmointityö ovat kaksi helpointa osa-aluetta toteuttaa alkeiskurssilla. Ohjelmointityö on systemaattista järjestelmän rakentamista, jonka oikeaan suuntaan etenemistä on helppo seurata ja ohjata, ja yksinkertaisten ääniefektien tekemiseen ei oikeastaan tarvita muuta kuin mikrofoni ja mielikuvitusta. Lisäksi taustagrafiikkaa ja ääniefektejä löytyy Internetistä avoimeen sekä vapaaseen käyttöön tarkoitetuilla public domain- sekä creative commons-lisensseillä, jolloin niiden käyttäminen on pääsääntöisesti ilmaista. Pääkomponenteista ainoa, johon peliohjelmoinnin kurssin ei oikeastaan pitäisi mennä, on animaatioiden tekeminen. Kyseinen työ on aikaa vievää, vaatii taiteellista silmää sekä monesti perustuu laitteisiin ja ohjelmistoihin, jotka vaativat resursseja tai vähintään omaa, erillistä osaamista. Tämä taas näkyy suoraan kurssin suunnittelussa; opetusmateriaaleista on parempi löytyä kaikki tarvittavat animaatiot, koska niiden rakentaminen käsin ei ole triviaali lisätehtävä.

Helpoin tapa kiertää tämänkaltaiset ongelmat on valita jokin valmis pelimoottori ja toteuttaa kurssikokonaisuus tämän pelimoottorin tarjoamilla harjoittelumateriaaleilla. Pelimoottori on eräänlainen ohjelmointiympäristö, joka huolehtii siitä, että animaatiot, fysiikkamallit, äänet, hahmojen liikuttelu sekä oikeastaan kaikki muukin tapahtuu oikein, jolloin ohjelmointityö keskittyy teknisten komponenttien rakentamisen sijaan pelin toteuttamiseen. Valmiin pelimoottorin hyödyntäminen vastaa kutakuinkin samaa kuin teatterin päätös käyttää valmista näyttämöä. Teatteriryhmä voi aloittaa näytelmän työstämisen harjoittelemalla kohtauksia sekä tekemällä lavasteita, eikä kaivamalla perustuksia taikka kaatamalla puita jotka myöhemmin sahataan laudoiksi. Toisin kuin vaikkapa Scratch, Alice, Logo tai vaikkapa Legon ohjelmointityökalut, pelimoottori on työkalu, jolla tehdään pelejä, ei apuväline jolla opetetaan ohjelmointia.

Pelimoottoreita on useita ja niistä arvatenkin jokaisella on mahdollista opettaa pelien tekemistä. Käytännön kokemuksella moottoreista kuitenkin löytyy joitain yksilöitä, jotka soveltuvat opettamiseen paremmin kuin toiset. Esimerkiksi Unity (www.unity3D.com) on yksi varteenotettavista vaihtoehdoista: moottori on pelialalla hyvin suosittu ja paljon käytetty, ja sille on tarjolla videoluentoihin perustuvia alkeista aloittavia tutoriaaleja. Lisäksi pelimoottori on helposti saatavilla, sillä kyseinen työkalu on yksittäiselle oppilaalle sekä oppilaitokselle ilmainen. Unity tarjoaa myös valmiita materiaalipaketteja, joista esimerkkipelit on helppo rakentaa. Toinen vastaava työkalu, jossa on samoja ominaisuuksia, on vaikkapa GameMaker (www.yoyogames.com/studio).

 

Unity-pelimoottorin kehitysikkuna.

 

Muun oppimateriaalin merkitys

Tietenkään pelkkä työkaluvalinta ei ratkaise kaikkia tarpeita. Vaikka kaikki opetusmateriaali, työkalut ja pelin kokoamiseen tarvittavat komponentit saataisiin valmiina, tarvitaan vielä erikseen ohjelmointiosaamista oikealla ohjelmointikielellä. Tulevaisuudessa on toki todennäköistä, että ohjelmointitaidon opettaminen ei enää yläkoulun tai lukion pelintekokurssilla ole keskeinen asia. Ehkäpä vuonna 2026 oppilaat ovat opetelleet koodaamaan jollain sopivalla kielellä, kuten Pythonilla tai Rubyllä, muutamaa vuotta aikaisemmin. Tänä päivänä ongelmaksi kuitenkin muodostuu itse ohjelmointitaidon opetus, koska ilman ohjelmointityötä pelimoottoria ei saada tekemään juuri mitään. Tämän perus-ohjelmointityön opettamiseen on olemassa monia työkaluja ja apuvälineitä, kuten esimerkiksi suomalaiset Ville ja Viope, sekä ulkomaalaiset toimijat kuten vaikkapa CodeCademy (www.codecademy.com), joista ainakin viimeksi mainittu on jälleen kerran täysin ilmainen, mutta englanninkielinen oppimisympäristö.

Se millä kielellä kurssia opetetaan ei suoranaisesti ole merkityksellistä, mutta oppilaan motivaation kannalta on kriittistä valita opetuskieleksi jotain, joka toimii sellaisenaan myös pelimoottorin puolella. Esimerkiksi CodeCademyn Javascript-kurssi ja Unity-moottori täydentävät toisiaan, koska Unity käyttää Javascript-koodia pelien tekemiseen ja CodeCademy opettaa tulkitsemaan samaa ohjelmointikieltä myös muissa asiayhteyksissä. Tietysti opettajan näkökulmasta kielelle pitää löytyä oppimateriaalia ja työvälineitä oman osaamisen kehittämistä varten, jotta opetus ei ole pelkän ulkopuolisten luoman verkkomateriaalin varassa. Käytännössä kaikille oikeille ohjelmointikielille on saatavilla oppimateriaalia kuten itseopiskelukirjoja tai verkkokursseja, joten siinä mielessä opetettavan kielen valinta on triviaali ongelma.

Pelien tekemistä opettaessa perusohjelmointitaidon kartuttaminen voi osoittautua haastavaksi motivoinnin kannalta. Kaikki “kiva” tapahtuu pelimoottorin puolella, ja kalpea komentoja ja lähdekoodia sisältävä ruutu ei yksinkertaisesti pysty kilpailemaan opiskelijan mielenkiinnosta visuaalisemman työvälineen kanssa. Tämä on monesti myös se väärinkäsitys, johon pelien tekemisessä törmätään; oikeita pelejä ei voi tehdä koodaamatta, joten ohjelmointia on pakko opetella, jos haluaa tehdä mieleisiään pelejä. Tätä on hyvä painottaa opetuksessa; ohjelmointia oppimalla oikeastaan opetellaan kertomaan pelimoottorille, mitä pelin halutaan tekevän. Toinen tärkeä huomio on se, että sillä ei juuri ole väliä, mille päätelaitteelle pelejä tehdään. Pelien tekeminen on käytännössä aina PC-ohjelmointia, ja vasta kun peli alkaa olla siinä kunnossa, missä sitä voidaan testata, se viimeistellään päätelaitetta silmällä pitäen. Tämä tarkoittaa myös sitä, että opetus ei tarvitse mitään muita työvälineitä kuin luokallisen tietokoneita, joihin on asennettu kaikki tarvittavat ohjelmistot sekä Internet-yhteys verkosta saatavien resurssien hyödyntämistä varten. Se, halutaanko opettaa kännykkäpelien vai konsolipelien tekemistä tai tehdäänkö selaimessa toimivia 2D-tasohyppelyjä, on opettajan omasta halusta ja mielenkiinnosta kiinni; kaikki kehitys tapahtuu samalla raudalla, joskus jopa samalla pelimoottorilla. Toisin päin käännettynä tämä tarkoittaa myös sitä, että käyttökelvottomaksi jäävään opetustyökaluun sijoittamisen riski on minimaalinen, tietokoneen käyttämää ohjelmaa voi aina vaihtaa ja fyysisiä komponentteja ei tarvita.

 

Kuva: © Jussi Kasurinen

 

Luovuus osana tietotekniikan kurssia

Ohjelmointiajattelun kehittämisen lisäksi peliohjelmoinnissa korostuu myös toinen ominaisuus, luovuuden hyödyntäminen osana kurssin rakennetta. Peli sisältää aina neljä komponenttia; grafiikan, animaation, ohjelmointityön ja ääniefektit. Jos kurssi on tarkoitus toteuttaa ryhmätyönä, voivat taideaineisiin suuntautuneet opiskelijat esimerkiksi piirtää taustagrafiikkaa tai tehdä ääniefektejä, tai vaikkapa testata ja osallistua pelin suunnitteluun. Tämä mahdollistaa sen, että opiskelijat pääsevät hyödyntämään omia lahjojaan ja vahvuuksiaan paremmin kuin monilla muilla ohjelmointikursseilla. Luovien ominaisuuksien ja ohjelmointiosaamisen yhdistäminen toimii, koska pelintekeminen on luovaa työtä.

Tästä esimerkkinä voidaan ottaa LUMA Saimaan yläkoulujen 9-luokkalaisille tarjoama peliohjelmoinnin kurssi, jossa varsinainen ohjelmointiosaaminen on etualalla, mutta kurssi sisältää myös luovaa työtä. Kurssilla on kahdeksan lähitapaamiskertaa yliopiston opettajan kanssa, ja väliviikoilla koulun oma opettaja ohjaa ryhmää tehtävien tekemisessä.

    Tapaamiskertojen sisältö on seuraava:

  1. Esittäytyminen; puhutaan lyhyesti kurssilla käytettävistä työkaluista, näytetään mistä ver-kosta asiat löytyvät, tehdään tarvittavat tunnukset.

  2. Teknologia ja ohjelmoinnin alkeet 1; Käydään läpi ohjelmoinnin perusrakenteita (muuttujat, valintarakenne, toisto jne.). Opetellaan ohjelmoinnin alkeita CodeCademyllä, tehdään Unity-moottorilla Roll-A-Ball-demoa verkkoluentojen ja opettajan ohjauksessa.

  3. Teknologia ja ohjelmoinnin alkeet 2

  4. Teknologia ja ohjelmoinnin alkeet 3

  5. Ääni ja grafiikka; Opetellaan kuinka peliin voidaan lisätä omaa grafiikkaa ja ääniefektejä sekä taustamusiikkia.

  6. Viimeistely ja verkkoon laittaminen; Opetellaan kuinka peliin voidaan lisätä aloitus- ja lope-tusruutuja, miten peli saadaan käännettyä tietokoneella tai selaimella toimivaksi.

  7. Oman pelin suunnittelu 1; Hyödyntäen aiemmin opeteltua, oppilaat suunnittelevat omaa peliä ja piirtävät/etsivät siihen konseptigrafiikkaa.

  8. Oman pelin suunnittelu 2; Loppusanat, pari sanaa siitä miten alaa voi opiskella muualla, yritysvieras mikäli kurssi muuten edennyt aikataulussa ja ilman ongelmia.

Oppilaat palauttavat kurssilla Unitylla tehdyn pelin, CodeCademy-kurssin ensimmäiset kaksi lukua sekä itsesuunnittelemansa pelin GDD:n (game design documentin, eräänlainen projektisuunnitelma). Kokemuksen perusteella tällä tapaa toteutetun kurssin ainoa oikea ongelma on siinä, että opettaja tarvitsee kertojen 2–5 välille valmiin “jatka tästä” -mallivastauksen tilanteisiin, missä opiskelija on jäänyt totaalisen jumiin rakentaessaan peruspeliä.

Tänään ja tulevaisuudessa

Pelien tekemisen osalta pitää myös harkita sitä, onko aiheen opettaminen lähtökohtaisesti oikea paikka käyttää resursseja. Tekesin selvityksen mukaan koko peliala työllisti Suomessa vuonna 2015 noin kaksi tuhatta henkeä hieman vajaassa kahdessa sadassa yrityksessä, tarkoittaen sitä, että koko peliteollisuus vastaa työpaikkatarjonnaltaan yhtä keskikokoista yliopistoa. Vaikka tähän lukuun ei tietenkään ole laskettu mukaan kuin oikeat työntekijät oikeissa yrityksissä pois lukien freelancerit ja esi-startupeissa puuhailevat, ei pelinkehitys varmastikaan ole se oppiala tietotekniikasta, johon kaikki resurssit tulisi keskittää. Peliohjelmointi ja pelinkehitys on erittäin oivallinen työväline kehittämään mielenkiintoa tietotekniikkaa ja ohjelmointialaa kohtaan, mutta mikään työkalu tai sisällöllinen valinta ei muuta sitä tosiseikkaa, että pelien tekeminen ei ole erityisen helppoa, eikä se välttämättä sovellu ensimmäiseksi, taikka ainakaan ainoaksi ohjelmointikurssiksi. Pelien tekeminen on kuitenkin se juttu, josta useat nuoret ovat kiinnostuneita ja joka varmasti yhdistelee luovuutta ja ohjelmointia paremmin kuin mikään aikaisempi tietotekniikan aihealue. Esimerkiksi robotteihin verrattuna pelit eivät sisällä hajoavia fyysisiä osia, eivät vaadi tilaa toimiakseen, eivätkä myöskään vaadi kallista kertasijoitusta komponentteihin ja rakennussarjoihin. Toisaalta taas pelien tekeminen on oikeaa ohjelmointia, eikä ohjelmoinninkaltaisilla komponenteilla pelaamista kuten vaikkapa Alice tai Scratch ovat.

Kun uudistettu opetussuunnitelma astuu voimaan tämän vuoden syksyllä, alkaa siirtymäjakso, jonka päätteeksi ohjelmoinnin perusajatusten pitäisi olla jokaisen oppilaan hallussa. Pitkällä aikavälillä pelien tekeminen ei välttämättä ole se juttu, millä ohjelmoinnin alkeita tullaan opettamaan, mutta se varmasti on osa sitä kokonaisuutta, millä oppilas saadaan kiinnostumaan tietotekniikasta ja muista matemaattis-luonnontieteellisistä aineista.

Linkkejä

Esimerkki-opetusmateriaalia ja linkkejä, joilla päästä alkuun ohjelmointitaitojen kehittämisessä. Kts. myös Lappeenrannan teknillisen yliopiston pelialan tutkimusryhmän sivut http://www2.it.lut.fi/GRIP/.

En tunne ohjelmointikieliä, haluan opetella suomeksi:
Python 3-ohjelmointiopas: http://goo.gl/DSjG34
Python 3-kehitysympäristö: http://www.python.org

En tunne ohjelmointikieliä, haluan opetella englanniksi:
CodeCademyn 17 itseopiskelukurssia, erityisesti Javascript, Python ja Ruby: http://www.codecademy.com

Tunnen ohjelmointikieliä, tarvitsen peruskurssille materiaalia:
LUT Tietotekniikan “johdatus ohjelmointiin”-lukiokurssin kaikki materiaali: http://www2.it.lut.fi/courses/CT10A0001/

Tunnen ohjelmointikieliä, tarvitsen pelikurssille materiaalia:
Unity 3D ja Roll-A-Ball-tutoriaali: http://unity3d.com/learn/tutorials
LUT Tietotekniikan ja LUMA Saimaan “peliohjelmointi”-yläkoulukurssin kaikki materiaali: http://www2.it.lut.fi/courses/LUMA_Peliohjelmointi/
Alakoululaisille Scratch: https://scratch.mit.edu/


Kuva: © Jussi Kasurinen

 

 

[Julkaistu: Dimensio 3/2016]

Lisää eDimensiossa

Erään matematiikan vihaajan tunnustuksia , 2. helmikuu 2017 - 22:35
Dimensio 1/2017 , 26. tammikuu 2017 - 12:57
GeoGebra-täydennyskoulutuksia verkossa , 6. joulukuu 2016 - 16:28
Dimensio 6/2016 , 6. joulukuu 2016 - 16:20
GeoGebra tänään , 26. lokakuu 2016 - 20:22
MAOLin syyskoulutuspäivät Oulussa , 26. lokakuu 2016 - 19:59
Dimensio 5/2016 , 26. lokakuu 2016 - 19:30
Lukion tärkein ainevalinta? , 26. lokakuu 2016 - 18:41
Taide taittaa matematiikkaa – Osa 2(2) , 26. lokakuu 2016 - 13:42
Dimensio 4/2016 , 24. lokakuu 2016 - 16:34
Taide taittaa matematiikkaa – Osa 1(2) , 22. lokakuu 2016 - 12:42
Dimensio 3/2016 , 21. lokakuu 2016 - 21:37
Dimensio 2/2016 , 12. lokakuu 2016 - 19:51
Lukion tärkein ainevalinta? , 24. syyskuu 2016 - 9:00
Hattulan silloilta , 8. syyskuu 2016 - 22:58
Naiset ja teknologia tarvitsevat toisiaan , 8. syyskuu 2016 - 22:34
Lukion fysiikan OPS muutosten edessä , 8. syyskuu 2016 - 19:49
Taikatempuista motivaatiota opiskeluun , 25. elokuu 2016 - 20:31
Super-Ada innostaa IT-alalle , 4. helmikuu 2016 - 9:00
Dimensio 1/2016 , 30. tammikuu 2016 - 8:00
Dimensio 6/2015 , 2. joulukuu 2015 - 8:00
Minun MAOL:ini , 23. marraskuu 2015 - 9:00
Dimensio 5/2015 , 15. marraskuu 2015 - 9:00
Ylioppilastutkinto vuonna 203X , 29. elokuu 2015 - 9:00
Dimensio 4/2015 , 28. elokuu 2015 - 8:00
Dimensio 3/2015 , 6. toukokuu 2015 - 9:00
eDimensio palvelunestohyökkäyksen kohteena , 26. huhtikuu 2015 - 14:44