Pelimoottorin toteutus C++-kiewlkel
Paakkunainen, Ville (2022)
Paakkunainen, Ville
2022
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022060315106
https://urn.fi/URN:NBN:fi:amk-2022060315106
Tiivistelmä
Opinnäytetyössä perehdytään pelimoottorin rakentamiseen. Tavoitteena työssä oli määritellä, suunnitella ja rakentaa toiminnallinen pelimoottori, jonka avulla voidaan jatkokehitysvaiheessa rakentaa erilaisia pelejä. Toisena tavoitteena oli oppiminen pelinkehityksen mahdollisuuksista ilman jonkin ulkoisen tahon tarjoamaa valmista pelimoottoria. Pelimoottori rajattiin tukemaan vain 2D-pelinkehitystä.
Työ toteutettiin C++-ohjelmointikielellä. Kieli valittiin sen prosessoinnin nopeuden sekä tekijän osaamisen perusteella. Työssä vältettiin ulkoisten ohjelmistokehyksien käyttämistä, mutta päädyttiin kuitenkin käyttämään SDL Simple DirectMedia Layer -kirjastoa kehityksen nopeuttamiseksi. SDL-kirjasto soveltui hyvin C++-kehitykseen. Kirjastoa käytetään työssä lähinnä median esitykseen, eli kuvan piirtämiseen ja äänentoistoon.
Työn suunnitteluun käytettiin paljon aikaa. Jo varhaisessa vaiheessa tuli ymmärrys, että moniosainen ja koodirivimäärältään suuri projekti täytyy jäsennellä hyvin, jotta kehitys on sujuvaa. Näin ollen arkkitehtuurisen ratkaisun löytämiseen käytettiin paljon aikaa. Työssä päädyttiin käyttämään pääarkkitehtuurina viestiväyläjärjestelmää, joka välittää muiden järjestelmien viestejä toisillensa. Tämä mahdollisti sen, että järjestelmät, kuten ikkunanhallintajärjestelmä, äänijärjestelmä tai syötejärjestelmä, olivat irrallisia. Järjestelmien välille ei edes voitu aiheuttaa riippuvuuksia, koska järjestelmät eivät tienneet toistensa olemassaolosta. Täten järjestelmiä voitiin kehittää eriaikaisesti ja ohjelmakoodin rakenne saatiin pidettyä selkeänä.
Lopputuloksena työssä saatiin 2D-pelejä pyörittävä pelimoottori. Pelimoottori ei sisällä yhtä monta ominaisuutta kuin kaupalliset ratkaisut, mutta sisältää riittävät toiminnallisuudet monimuotoisten 2D-pelien toteutukseen.
Työ toteutettiin C++-ohjelmointikielellä. Kieli valittiin sen prosessoinnin nopeuden sekä tekijän osaamisen perusteella. Työssä vältettiin ulkoisten ohjelmistokehyksien käyttämistä, mutta päädyttiin kuitenkin käyttämään SDL Simple DirectMedia Layer -kirjastoa kehityksen nopeuttamiseksi. SDL-kirjasto soveltui hyvin C++-kehitykseen. Kirjastoa käytetään työssä lähinnä median esitykseen, eli kuvan piirtämiseen ja äänentoistoon.
Työn suunnitteluun käytettiin paljon aikaa. Jo varhaisessa vaiheessa tuli ymmärrys, että moniosainen ja koodirivimäärältään suuri projekti täytyy jäsennellä hyvin, jotta kehitys on sujuvaa. Näin ollen arkkitehtuurisen ratkaisun löytämiseen käytettiin paljon aikaa. Työssä päädyttiin käyttämään pääarkkitehtuurina viestiväyläjärjestelmää, joka välittää muiden järjestelmien viestejä toisillensa. Tämä mahdollisti sen, että järjestelmät, kuten ikkunanhallintajärjestelmä, äänijärjestelmä tai syötejärjestelmä, olivat irrallisia. Järjestelmien välille ei edes voitu aiheuttaa riippuvuuksia, koska järjestelmät eivät tienneet toistensa olemassaolosta. Täten järjestelmiä voitiin kehittää eriaikaisesti ja ohjelmakoodin rakenne saatiin pidettyä selkeänä.
Lopputuloksena työssä saatiin 2D-pelejä pyörittävä pelimoottori. Pelimoottori ei sisällä yhtä monta ominaisuutta kuin kaupalliset ratkaisut, mutta sisältää riittävät toiminnallisuudet monimuotoisten 2D-pelien toteutukseen.
