Suorituskykyisen palvelinrungon suunnittelu ja toteutus suuren pelaajamäärän verkkomoninpeliin

No Thumbnail Available

URL

Journal Title

Journal ISSN

Volume Title

Helsinki University of Technology | Diplomityö
Checking the digitized thesis and permission for publishing
Instructions for the author

Date

2008

Major/Subject

Ohjelmistotekniikka

Mcode

T-106

Degree programme

Tietotekniikan tutkinto-ohjelma

Language

fi

Pages

80

Series

Abstract

Tässä diplomityössä tarkastellaan suorituskykyisen Java-pohjaisen palvelinrungon suunnittelua ja toteutusta suuren pelaajamäärän verkkomoninpeliin. Työssä perehdytään yleisimpiin kuljetuskerroksen protokolliin sekä verkkosiirräntä-, samanaikaisuus- ja synkronointitekniikoihin ja arvioidaan niiden soveltuvuutta palvelinrungon toteutukseen. Arvioiden pohjalta toteutetaan palvelinrunko, joka tarjoaa tehokkaat palvelut viestien samanaikaiseen vastaanottamiseen, käsittelyyn ja lähettämiseen. Työssä esiteltävän palvelinrungon korkea suorituskyky perustuu yksisäikeisen kanavoidun estämättömän verkkosiirrännän ja säievarantopohjaisen tehtävien käsittelyn yhdistämiseen. Pelikohtaisten tehtävien käsittely synkronoidaan käyttäen uudentyyppisistä varattavista luku-kirjoitus-lukoista muodostettua puumaista lukitushierarkiaa. Tämä mahdollistaa tehtävien samanaikaisen käsittelyn oikeassa suoritusjärjestyksessä erittäin pienin estävyyksin. Konseptin toimivuus osoitetaan integroimalla suuren pelaajamäärän mäkihyppypelin pelilogiikka palvelinrungon yhteyteen ja kuormittamalla palvelintoteutusta asiakassovellussimulaattorin luomalla keinotekoisella kuormalla. Työssä havaitaan, että geneerisellä Java-pohjaisella palvelinrungolla pystytään mahdollistamaan pelilogiikan suorituskykyinen käsittely sekä samalla yksinkertaistamaan verkkomoninpelipalvelinten toteutusta huomattavasti. Sovelluskohtaisen ohjelmakoodin synkronointi jää kuitenkin edelleen vaativaksi ja virhealttiiksi tehtäväksi.

Description

Supervisor

Saikkonen, Heikki

Thesis advisor

Saikkonen, Heikki

Keywords

servers, palvelimet, computer games, tietokonepelit, network input/output, verkkosiirräntä, concurrency, samanaikaisuus, synchronization, synkronointi

Other note

Citation