Multiplayer networking with an open source library : implementation plan for HactEngine
Ylönen, Johannes (2016)
Ylönen, Johannes
Turun ammattikorkeakoulu
2016
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2016060612117
https://urn.fi/URN:NBN:fi:amk-2016060612117
Tiivistelmä
Opinnäytetyön päätavoite oli vertailla avoimen lähdekoodin verkko-ohjelmointikirjastoja ja suunnitella kirjaston integraatio HactEngineen. HactEngine on Indium Games -yrityksen kehittämä, monella eri alustalla toimiva pelimoottori. Työ kirjoitettiin tutkimuksena varsinaista toetutusta varten, joka on osa Tekesin rahoittamaa HactEngine 1.0 -projektia.
Työssä esitellään tärkeimpiä teknologioita, jotka ovat tärkeä perusta verkko-ohjelmoinnille. Niitä tutkittiin erityisesti moninpelikehityksen näkökulmasta. Tärkeimpiä ovat asiakas-palvelin- ja vertaisverkkotopologiat, ne määrittelevät, miten viestejä lähetetään pelaajien välillä.
HactEnginen näkökulmasta integrointiin liittyy ohjelmointikieli C++, jolla pelimoottori on kirjoitettu, sekä skirptikieli Lua, jota käytetään pelien ohjelmointiin. Pakettijärjestelmän avulla voidaan lisätä tuki eri kirjastoille. Yksittäinen paketti tarvitsee SWIG-ohjelmistokehitystyökalulla C++‑kielellä kirjoitetusta koodista generoidun rajapinnan, jota käytetään skriptikielen avulla.
Integroitava kirjasto valittiin vertailemalla neljää erilaista avoimen lähdekoodin kirjastoa, joista kaksi ensimmäistä, ENet ja RakNet, on suunniteltu moninpelien tarpeisiin. Toiset kaksi, Boost.Asio ja POCO, on tarkoitettu yleisesti kaikkeen verkko-ohjelmointiin. Ne valittiin, jotta saataisiin erilainen näkökulma kehitystyöhön. Kirjastoksi valittiin RakNet, koska sillä on eniten ominaisuuksia moninpelien kehitykseen ja muilla kirjastoilla kehittäminen olisi ollut liian työlästä.
Tärkeimpänä tuloksena saatiin suunnitelma integraatiosta. Asiakas- ja palvelin-esimerkkikoodeissa esitellään, miltä asiakasrajapinta voisi näyttää ja mitä ominaisuuksia palvelin tarvitsee. Opinnäytetyöhön löydettiin hyviä kirjalähteitä moninpelien kehitykseen, sekä se antaa erilaisia näkökulmia, miten kirjaston integraatio kannattaa tehdä ja minkälaisilla valmiilla ominaisuuksilla voi helpottaa pelinkehittäjien työtä.
Työssä esitellään tärkeimpiä teknologioita, jotka ovat tärkeä perusta verkko-ohjelmoinnille. Niitä tutkittiin erityisesti moninpelikehityksen näkökulmasta. Tärkeimpiä ovat asiakas-palvelin- ja vertaisverkkotopologiat, ne määrittelevät, miten viestejä lähetetään pelaajien välillä.
HactEnginen näkökulmasta integrointiin liittyy ohjelmointikieli C++, jolla pelimoottori on kirjoitettu, sekä skirptikieli Lua, jota käytetään pelien ohjelmointiin. Pakettijärjestelmän avulla voidaan lisätä tuki eri kirjastoille. Yksittäinen paketti tarvitsee SWIG-ohjelmistokehitystyökalulla C++‑kielellä kirjoitetusta koodista generoidun rajapinnan, jota käytetään skriptikielen avulla.
Integroitava kirjasto valittiin vertailemalla neljää erilaista avoimen lähdekoodin kirjastoa, joista kaksi ensimmäistä, ENet ja RakNet, on suunniteltu moninpelien tarpeisiin. Toiset kaksi, Boost.Asio ja POCO, on tarkoitettu yleisesti kaikkeen verkko-ohjelmointiin. Ne valittiin, jotta saataisiin erilainen näkökulma kehitystyöhön. Kirjastoksi valittiin RakNet, koska sillä on eniten ominaisuuksia moninpelien kehitykseen ja muilla kirjastoilla kehittäminen olisi ollut liian työlästä.
Tärkeimpänä tuloksena saatiin suunnitelma integraatiosta. Asiakas- ja palvelin-esimerkkikoodeissa esitellään, miltä asiakasrajapinta voisi näyttää ja mitä ominaisuuksia palvelin tarvitsee. Opinnäytetyöhön löydettiin hyviä kirjalähteitä moninpelien kehitykseen, sekä se antaa erilaisia näkökulmia, miten kirjaston integraatio kannattaa tehdä ja minkälaisilla valmiilla ominaisuuksilla voi helpottaa pelinkehittäjien työtä.