PHZ:n Mikael Lehtonen: Modulaarinen ohjelmointi ja pelikehitys – Case: Siege Castles

Mikael Lehtonen

Modulaarinen ohjelmointi helpottaa integrointia, jatkokehitystä ja testausta. PHZ:n pelikehittäjä Mikael Lehtonen sovelsi ohjelmointitapaa kehittäessään PHZ Game Studion Siege Castles -peliä.

PHZ Game Studion kehittämässä Siege Castles -pelissä on ideana rakentaa oma linna ja vallata toisten pelaajien rakentamia linnoja. Pelissä kerätään aseita ja taistelujoukkoja, joiden avulla hyökätään toisen pelaajan linnaan.

Alun perin pelin jalkaväliyksiköt koostuivat vain miekkataisteilijoista. Peliin haluttiin enemmän pelattavaa ja jalkaväkityyppeihin enemmän valinnanvaraa. Jalkaväkiyksiköitä päätettiin monipuolistaa lisäämällä keihäs- ja jousipyssytaistelijoita.

Modulaarinen ohjelmointi helpottaa integrointia, jatkokehitystä ja testausta

Lähdin kehittämään uusia jalkaväkiyksiköitä soveltamalla modulaarista ohjelmointia.

Modulaarisessa ohjelmoinnissa jokainen toiminto toteutetaan omana moduulinaan. Kukin moduuli toimii mahdollisimman itsenäisesti, ja moduulien väliset riippuvuudet ovat niin löyhiä kuin mahdollista.

Suosin tätä ohjelmointitapaa, koska se helpottaa integrointia ja jatkokehitystä. Myös testaus yksinkertaistuu.

Eri moduulien toiminnot ja muuttujat eivät ole riippuvaisia toisistaan

Siege Castles -pelissä toteutin kunkin jalkaväkiyksikkötyypin omana moduulinaan, sillä keihäs- ja jousipyssytyypeillä on omat erityisominaisuutensa verrattuna tavalliseen jalkaväkeen. Esimerkiksi jousipyssytyyppi ampuu nuolia, mikä on tässä pelissä poikkeava tapa aiheuttaa vahinkoa.

Jousipyssytyyppimoduulissa on määritelty, miten jousipyssytyyppi ampuu nuolia. Nuolet lentävät mahdollisimman suoraan, ja niihin vaikuttavat tavalliset fyysiset voimat, kuten maan vetovoima ja tuuli.

Nuolet ovat fysiikkasimulaatiossa mukana olevia projektiileja – vaikkakin hyvin pieniä ja kevyitä sellaisia verrattuna piiritysaseiden projektiileihin. Niin ikään nuolet tekevät vahinkoa joukkoihin fysiikkaprojektiilipohjaisesti.

Nuolissa on kuitenkin eroja linnan aseiden projektiileihin. Esimerkiksi kohdatessaan oman puoleisen jalkaväen yksikön mitään ei tapahdu. Jalkaväen nuolet eivät osu omiin jalkaväen yksiköihin.

Jousipyssytyypeillä on monia erityisiä muuttujia, kuten nuolen lähtönopeus, massa ja vahinkokerroin jalkaväkeä vastaan. 

Kun eri yksikkötyypit ovat omia moduuleitansa, niiden toiminnot ja muuttujat eivät ole riippuvaisia toisistaan ja ne on helppo integroida peliin.

Katso täältä PHZ Full Stackin avoimet IT-alan työpaikat

PHZ:n Mikael Lehtonen: “Intohimo peleihin ei ole laantunut vielä parinkymmenen vuoden jälkeenkään”

Innostuin peleistä jo tarhaikäisenä, kun pelasin kavereiden kanssa Amigalla, C64:llä ja NES:llä Pelien koodaaminen itse alkoi kiinnostaa 10-vuotiaana, kun sain ensimmäisen oman tietokoneen.

Koulutukseltani olen pelinkehitykseen erikoistunut ohjelmistotekniikan insinööri. Viime vuodet olen työskennellyt mobiilipelialalla.

Millainen olet pelinkehittäjänä?

Olen pelikehittäjänä intohimoinen ja periksiantamaton; pyrin aina löytämään ratkaisun. Vaikka olen tehnyt pelejä jo parikymmentä vuotta, intohimoni peleihin ei ole laantunut.

Erityisvahvuuteni on Unity-osaaminen. Olen tehnyt sillä töitä koko peliurani ajan. Muita erityisen hyvin hallitsemiani teknologioita ovat esimerkiksi C++, Java ja Python.

Seuraavaksi haluan vahvistaa osaamistani toisesta suuresta pelimoottorista, Unreal Enginestä.