Real-time Multiplayer Software Architecture
Vilmi, Olli (2020)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202003133404
https://urn.fi/URN:NBN:fi:amk-202003133404
Tiivistelmä
Projektin tavoitteena oli tutkia reaaliaikaisen moninpelin ohjelmoimista, jotta olisi mahdollista ymmärtää yleiset vaatimukset, ongelmat sekä ratkaisut. Lopputuloksena ohjelmisto suunniteltiin sekä toteutettiin kaksiulotteista tasohyppelypeliä varten.
Pelimoottoriksi valittiin LÖVE2D ja sen ohessa ohjelmointikielenä toimi Lua, mutta mikä vaan sopiva ohjelmointikieli tai pelimoottori olisi voitu valita. Suunnitteluvaiheessa tärkeä tavoite oli riippumattomuus työvälineistä.
Serverimalli, pelitilan päivittäminen, kaistanleveys sekä viive olivat kriittisiä aiheita, joita käsiteltiin suunnitteluprosessin aikana. Viestintäprotokollaa muokattiin tarpeiden mukaan toteuttamaan vaatimukset mahdollisimman yksinkertaisilla ratkaisuilla.
Kokemuksia ja ongelmia kehityksen aikana näytetään esimerkkeinä. Jotta olisi mahdollista estää tietopakettien katoamista aiheuttamatta lisää viivettä, ominaisuuksia TCP:stä toteutettiin UDP-pohjaiseen viestintäprotokollaan. Kaistanleveyden käyttöä vähennettiin rajaamalla maailman päivitykset pelkästään pelaajalle näkyvään alueeseen.
Pelimoottoriksi valittiin LÖVE2D ja sen ohessa ohjelmointikielenä toimi Lua, mutta mikä vaan sopiva ohjelmointikieli tai pelimoottori olisi voitu valita. Suunnitteluvaiheessa tärkeä tavoite oli riippumattomuus työvälineistä.
Serverimalli, pelitilan päivittäminen, kaistanleveys sekä viive olivat kriittisiä aiheita, joita käsiteltiin suunnitteluprosessin aikana. Viestintäprotokollaa muokattiin tarpeiden mukaan toteuttamaan vaatimukset mahdollisimman yksinkertaisilla ratkaisuilla.
Kokemuksia ja ongelmia kehityksen aikana näytetään esimerkkeinä. Jotta olisi mahdollista estää tietopakettien katoamista aiheuttamatta lisää viivettä, ominaisuuksia TCP:stä toteutettiin UDP-pohjaiseen viestintäprotokollaan. Kaistanleveyden käyttöä vähennettiin rajaamalla maailman päivitykset pelkästään pelaajalle näkyvään alueeseen.