Multi-player tactical role playing game with a Java server and an Android client
Tuominen, Marko (2012)
Tuominen, Marko
2012
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2012-12-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201212121370
https://urn.fi/URN:NBN:fi:tty-201212121370
Tiivistelmä
Tietokone- ja konsoliroolipeleissä pelaaja tavallisesti ohjaa yhtä tai useampaa hahmoa. Hahmot tavallisesti keräävät kokemusta taistelemalla vihollisia vastaan. Kokemuksen kautta hahmon ominaisuudet vahvistuvat ja se saa käyttöönsä uusia kykyjä. Peleissä voi myös kerätä esineitä, kuten aseita ja varusteita.
Taktisissa roolipeleissä on myös nämä ominaisuudet, sekä taktisia elementtejä kuten liikkuminen laajemmalla taistelukentällä. Roolipeleissä juoni on tavallisesti tärkeällä sijalla, samoin kuin pelimaailman tutkiminen. Myös taktisissa roolipeleissä juoni on tärkeä, mutta tutkimista on useimmiten vain vähän. Ne eivät yleensä sisällä myöskään moninpeliä.
Työn tarkoituksena on toteuttaa aiemmin suunniteltu Mupe Force -peli: taktinen roolipeli, jonka pääpaino on moninpelillä. Moninpeli toteutetaan välittämällä pelaajien asiakaslaitteiden kommunikointi palvelimen kautta. Lisäksi palvelin tallentaa rekisteröityneiden pelaajien tiedot. Asiakkaat eivät kommunikoi toistensa kanssa suoraan.
Ennen työn aloittamista oli päätetty, että pelin palvelinohjelmisto toteutettaisiin Javalla ja asiakasohjelmisto Androidilla. Tietojen tallennukseen oli päätetty käyttää MySQL-tietokantaa ja JDBC:tä. Asiakkaiden ja palvelimen väliseen kommunikointiin käytettävää teknologiaa ei päätetty etukäteen, vaan se valittiin työn aikana tehtyjen tutkimusten perusteella.
Valittu yhteysteknologia on Apache MINA, jolla toteutettiin kommunikointi sekä palvelin- että asiakaspäässä. Viestinvälitykseen käytetty protokolla on TCP, ja viestit välitetään JSON-formaatissa. Asiakkaan palvelimelle lähettämiin kutsuihin käytetään JSON-RPC -protokollaa. Työssä tutkittiin myös useampia Java-pohjaisia JSON-RPC -toteutuksia, joista käyttöön valittiin jabsorb. Sitä käytetään muuhunkin JSON-viestien käsittelyyn, koska Java API ei sisällä JSON-tukea.
Aikomus oli käyttää JSON-RPC:tä tai vastaavaa protokollaa mahdollistamaan asiakkaan metodien kutsuminen palvelimelta. Tämä todettiin kuitenkin liian monimutkaiseksi. Aiottu käyttötarkoitus, pelin tapahtuminen välittäminen asiakkaalle, toteutettiin JSON-pohjaisella skriptillä. JSON-skriptiin suunniteltiin pelin tarkoituksiin sopiva syntaksi. Tapahtumat koodataan skriptiksi palvelimella, ja puretaan asiakkaalla animaatioiksi ja paikallista tietoa muokkaaviksi käskyiksi. In computer and console role playing games, the player usually controls one or more characters. The characters usually earn experience by fighting enemies. Experience causes a character's attributes to increase and enables it to learn new abilities. The games also include collecting items, such as weapons or armor.
These properties also exist in tactical role playing games, which also include tactical gameplay, such as movement on a larger battlefield. Plot and exploration of the game world are important aspects of role playing games. Plot is also important in tactical role playing games, but they usually include little exploration. They also do not usually include multi-player play.
The intent in this thesis was to implement a previously designed game named Mupe Force. It is a tactical role playing game, whose main attribute is multi-player play. To facilitate multi-player properties, communications between client devices are transmitted through a server. In addition, the server saves the data of registered players. Clients do not communicate directly with each other.
It was decided in advance that the server software would be implemented with Java, and the client software with Android. It was also decided to use a MySQL database and JDBC for persisting data. The technology for communications between clients and the server was not decided in advance, but chosen based on research during the project.
The selected communications technology is Apache MINA, which was used to implement communications both on the server and on the client. The protocol for transmitting messages is TCP, and messages are delivered in JSON format. JSON-RPC is used for requests from a client to the server. Several Java-based implementations of JSON-RPC were researched, and jabsorb was selected for use. It is also used for other handling of JSON messages, because the Java API does not include JSON support.
The intent was to use JSON-RPC or a similar protocol to enable calling a client's methods from the server. This was found out to be too complex. The intended use, delivering game events to the client, was implemented with a JSON-based script. A syntax suitable for the game's purposes was designed for the JSON script. Events are encoded into a script on the server, and decoded on the client into animations as well as commands that modify local data.
Taktisissa roolipeleissä on myös nämä ominaisuudet, sekä taktisia elementtejä kuten liikkuminen laajemmalla taistelukentällä. Roolipeleissä juoni on tavallisesti tärkeällä sijalla, samoin kuin pelimaailman tutkiminen. Myös taktisissa roolipeleissä juoni on tärkeä, mutta tutkimista on useimmiten vain vähän. Ne eivät yleensä sisällä myöskään moninpeliä.
Työn tarkoituksena on toteuttaa aiemmin suunniteltu Mupe Force -peli: taktinen roolipeli, jonka pääpaino on moninpelillä. Moninpeli toteutetaan välittämällä pelaajien asiakaslaitteiden kommunikointi palvelimen kautta. Lisäksi palvelin tallentaa rekisteröityneiden pelaajien tiedot. Asiakkaat eivät kommunikoi toistensa kanssa suoraan.
Ennen työn aloittamista oli päätetty, että pelin palvelinohjelmisto toteutettaisiin Javalla ja asiakasohjelmisto Androidilla. Tietojen tallennukseen oli päätetty käyttää MySQL-tietokantaa ja JDBC:tä. Asiakkaiden ja palvelimen väliseen kommunikointiin käytettävää teknologiaa ei päätetty etukäteen, vaan se valittiin työn aikana tehtyjen tutkimusten perusteella.
Valittu yhteysteknologia on Apache MINA, jolla toteutettiin kommunikointi sekä palvelin- että asiakaspäässä. Viestinvälitykseen käytetty protokolla on TCP, ja viestit välitetään JSON-formaatissa. Asiakkaan palvelimelle lähettämiin kutsuihin käytetään JSON-RPC -protokollaa. Työssä tutkittiin myös useampia Java-pohjaisia JSON-RPC -toteutuksia, joista käyttöön valittiin jabsorb. Sitä käytetään muuhunkin JSON-viestien käsittelyyn, koska Java API ei sisällä JSON-tukea.
Aikomus oli käyttää JSON-RPC:tä tai vastaavaa protokollaa mahdollistamaan asiakkaan metodien kutsuminen palvelimelta. Tämä todettiin kuitenkin liian monimutkaiseksi. Aiottu käyttötarkoitus, pelin tapahtuminen välittäminen asiakkaalle, toteutettiin JSON-pohjaisella skriptillä. JSON-skriptiin suunniteltiin pelin tarkoituksiin sopiva syntaksi. Tapahtumat koodataan skriptiksi palvelimella, ja puretaan asiakkaalla animaatioiksi ja paikallista tietoa muokkaaviksi käskyiksi.
These properties also exist in tactical role playing games, which also include tactical gameplay, such as movement on a larger battlefield. Plot and exploration of the game world are important aspects of role playing games. Plot is also important in tactical role playing games, but they usually include little exploration. They also do not usually include multi-player play.
The intent in this thesis was to implement a previously designed game named Mupe Force. It is a tactical role playing game, whose main attribute is multi-player play. To facilitate multi-player properties, communications between client devices are transmitted through a server. In addition, the server saves the data of registered players. Clients do not communicate directly with each other.
It was decided in advance that the server software would be implemented with Java, and the client software with Android. It was also decided to use a MySQL database and JDBC for persisting data. The technology for communications between clients and the server was not decided in advance, but chosen based on research during the project.
The selected communications technology is Apache MINA, which was used to implement communications both on the server and on the client. The protocol for transmitting messages is TCP, and messages are delivered in JSON format. JSON-RPC is used for requests from a client to the server. Several Java-based implementations of JSON-RPC were researched, and jabsorb was selected for use. It is also used for other handling of JSON messages, because the Java API does not include JSON support.
The intent was to use JSON-RPC or a similar protocol to enable calling a client's methods from the server. This was found out to be too complex. The intended use, delivering game events to the client, was implemented with a JSON-based script. A syntax suitable for the game's purposes was designed for the JSON script. Events are encoded into a script on the server, and decoded on the client into animations as well as commands that modify local data.