Techniques and Design Patterns in Game Engine Programming
Turkia, Teemu (2016)
Turkia, Teemu
Kymenlaakson ammattikorkeakoulu
2016
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201605137747
https://urn.fi/URN:NBN:fi:amk-201605137747
Tiivistelmä
Opinnäytetyön tavoitteena oli tutkia pelimoottorien päärakenteita sekä toimiviksi havaittujen ohjelmointitekniikoiden ja suunnittelumallien soveltamista niihin. Kehittäjillä on tänä päivänä mahdollisuus valita useista saatavilla olevista yleiskäyttöisistä pelimoottoreista mieleisensä, mutta pohjan rakentaminen pelille itse auttaa ymmärtämään pelimoottorien matalan tason rakenteita ja vapauttaa kehittäjäryhmän mahdollisista lisenssimaksuista.
Työssä käytettiin toteutuksellista lähestymistapaa, minkä seurauksena ohjelmoitiin yksinkertainen, mutta täysin toimiva pelimoottori. Toteutetun moottorin tuli sisältää tarvittavat ominaisuudet ollakseen käytettävissä videopelin pohjaksi. Päämääränä oli samalla tuottaa uudelleenkäytettävää ja helposti tulkittavaa ohjelmakoodia. Muita tavoitteita olivat oppimateriaalin tuottaminen, ohjelmointitaitojen kehittäminen ja uusien ratkaisujen löytäminen pelimoottorin rakenteiden luomisessa kohdattuihin ongelmiin.
Työ toteutettiin tutkimalla ja soveltamalla hyväksi havaittuja suunnittelumalleja ja ohjelmointitekniikoita erilaisten alijärjestelmien, rakenteiden ja aputyökalujen luomiseen, joista pelimoottori koostuu. Pelimoottorisuunnitteluun liittyviin ongelmiin kokeiltiin erilaisia ratkaisuja ja niiden hyödyt ja haitat punnittiin.
Suurin osa opinnäytetyön tavoitteista saavutettiin, tärkeimpänä perusominaisuuksilla varustetun toimivan pelimoottorin ohjelmoiminen. Havaittiin, että suositellut tekniikat eivät yleensä tarjoa valmiita ratkaisuja pelimoottoriohjelmoinnissa kohdattaviin ongelmiin, vaan niitä täytyy osata soveltaa oikeisiin kohteisiin. Tarjotut menetelmät ovat kuitenkin erittäin tehokkaita, jos ohjelmoija ymmärtää niiden hyödyt ja haitat.
Tämän dokumentin lukijalla oletetaan olevan ymmärrys C++:sta tai vastaavasta ohjelmointikielestä sekä pelimoottoreihin liittyvistä perusasioista. Suurin osa aihealueista ei käsittele C++-kieltä suoranaisesti, mutta termejä, kuten osoittimia, muistialueita ja malleja (template) käytetään tekstissä ilman erillisiä selityksiä.
Työssä käytettiin toteutuksellista lähestymistapaa, minkä seurauksena ohjelmoitiin yksinkertainen, mutta täysin toimiva pelimoottori. Toteutetun moottorin tuli sisältää tarvittavat ominaisuudet ollakseen käytettävissä videopelin pohjaksi. Päämääränä oli samalla tuottaa uudelleenkäytettävää ja helposti tulkittavaa ohjelmakoodia. Muita tavoitteita olivat oppimateriaalin tuottaminen, ohjelmointitaitojen kehittäminen ja uusien ratkaisujen löytäminen pelimoottorin rakenteiden luomisessa kohdattuihin ongelmiin.
Työ toteutettiin tutkimalla ja soveltamalla hyväksi havaittuja suunnittelumalleja ja ohjelmointitekniikoita erilaisten alijärjestelmien, rakenteiden ja aputyökalujen luomiseen, joista pelimoottori koostuu. Pelimoottorisuunnitteluun liittyviin ongelmiin kokeiltiin erilaisia ratkaisuja ja niiden hyödyt ja haitat punnittiin.
Suurin osa opinnäytetyön tavoitteista saavutettiin, tärkeimpänä perusominaisuuksilla varustetun toimivan pelimoottorin ohjelmoiminen. Havaittiin, että suositellut tekniikat eivät yleensä tarjoa valmiita ratkaisuja pelimoottoriohjelmoinnissa kohdattaviin ongelmiin, vaan niitä täytyy osata soveltaa oikeisiin kohteisiin. Tarjotut menetelmät ovat kuitenkin erittäin tehokkaita, jos ohjelmoija ymmärtää niiden hyödyt ja haitat.
Tämän dokumentin lukijalla oletetaan olevan ymmärrys C++:sta tai vastaavasta ohjelmointikielestä sekä pelimoottoreihin liittyvistä perusasioista. Suurin osa aihealueista ei käsittele C++-kieltä suoranaisesti, mutta termejä, kuten osoittimia, muistialueita ja malleja (template) käytetään tekstissä ilman erillisiä selityksiä.