Opponointiraportti

Mikko Viljainen

 

Johdanto

Tämä on TIK-76.115 kurssiin Hayabusa -ryhmän työstä tehty opponointiraportti. Hayabusa ryhmän työ on palm ympäristössä toimiva roolipeli. Opponoinnin on tehnyt TeamAhman puolesta Mikko Viljainen ja Mickey Shroff.

 

Rajallisen ajan vuoksi ohjelman testauksessa keskityttiin virheiden löytämiseen ja ohjelman arviointiin järjestelmällisen testaamisen sijaan. Osa-alueina olivat käyttöohjeet, ylläpitäjän operaatiot ja pelailu.

 

Aiheeseen liittyvät dokumentit:

Opponointisuunnitelma

Testaus

Testaus toteutettiin suunnitelman mukaisesti. Varsinaisesta testauksesta ei tosin voida puhua koska suunnitelma on ylimalkainen ja keskityttiin vain virheiden löytämiseen, ei niitten eristämiseen tai toistettavuuteen. Yleisesti ohjelma toimi hyvin ja reagoi kunnolla älyttömiin syötteisiin ym. Testauksessa havaittiin kuitenkin joitakin puutteita joista seuraavassa:

 

  1. Grafiikan päivityksessä on pieniä ongelmia.
  2.  

     

  3. pelaaja joutui puun tilalle eikä pysty näin tekemään mitään.
  4.  

     

  5. pelaajan paikka ruudulla päivittyy aivan oudosti. Toisen emulaattorilta katsottuna pelaaja sijaitsee aivan jossain muualla kuin omalla emullaattorilla. Pelaajia ikään kuin olisi monistunut.
  6.  

     

  7. pelaaja liikkuu toisen ruudulla, mutta ei omalla.
  8.  

     

  9. suljettaessa käyttäjä sisällä ilmeni null pointer exception.
  10.  

    Virheet saatiin aikaiseksi pelailemalla ja toteuttamalla ylläpitäjän toimintoja kovalla tahdilla sekä loggautumalla sisälle ja ulos tiuhaan. Virheistä lisää liitteenä olevassa lokissa.

     

    Lisäksi alussa ilmeni useita häiriöitä, jotka johtuivat siitä, että emme olleet merkinneet jotain laatikkoa asetuksissa.

     

    Arviointi

    Seuraavassa ollaan arvioitu työn osia. Peli on vielä tässä vaiheessa varmasti karvalakkimalli ja antaa tästä syystä helposti selkeän ja yksinkertaisen vaikutelman sitä kenties lopullisesti olematta. Ohjelma selvisi myös hyvin virhetilanteista. Lokin raportointi ei kuitenkaan ole kovinkaan havainnollista.

    Käyttöohjeet

    Käyttöohjeet olivat lyhyitä ja selkeitä. Ohjelman käyttö sekä operaattorina että loppukäyttäjänä oli helppoa ohjeiden perusteella. Asennuskin oli dokumentoitu melko kattavasti, mutta siitä huolimatta saimme emulaattorin asennettua väärin aluksi. Sitä voisi näin ollen viellä selkeyttää.

    Ylläpitäjän operaatiot

    Operaatiot olivat selkeitä ja yksinkertaisia. Ylläpito oli helppoa ja ohjelma reagoi järjettömiinkin syötteisiin hallitusti. Ainoastaan yksi virhetilanne havaittiin, josta mainittiin jo aiemmin.

    Käyttöliittymä

    Käyttäjän operaatiota oli vähän ja ne toimivat hyvin ja olivat helppoja. Toimintojen sijoittelu oli myös hyvä. Grafiikka oli minimalistista, mutta toimivaa ja ihan hyvän näköistä. Kenties örkin hahmo oli hieman omituinen.

     

    Ohjelma alkoi toimia kuitenkin kuormitettuna hieman omituisesti. Tästä mainittiin jo aimmin tässä luvussa. Häiriö saattaa johtua myös emulaattorista. Se poistui sammuttamalla ja käynnistämällä serveri.

    Toiminta

    Peli toimi yleisesti hyvin. Hahmot kehittyivät ja kaikki sujui kuten piti. Ohjelma kuitenkin tahmasi aika ajoin ja grafiikan päivittymisessä oli ongelmia. Tämä saattaa johtua emulaattorista.

    Muita kommentteja

    Peli on ilmeisesti karvalakkiversio. Se on kovin simppeli eikä jaksanut testiryhmää kauaa kiinnostaa. Tilanne on varmasti toinen kun käyttäjälle annetaan lisää toimintoja, maailmaa laajennetaan ja lisätään käyttäjiä ja erilaisia hirviöitä.

     

    Liite 1: Loki

     

     

    Kaikki testaukset on tehty palm-emulaatorilla.

     

  11. Grafiikan päivityksessä on pieniä ongelmia.
  12. pelaaja joutui puun tilalle eikä pysty näin tekemään mitään.
  13. pelaajan paikka ruudulla päivittyy aivan oudosti. Toisen emulaattorilta katsottuna pelaaja sijaitsee aivan jossain muualla kuin omalla emullaattorilla. Pelaajia ikään kuin olisi monistunut.
  14. pelaaja liikkuu toisen ruudulla, mutta ei omalla.

 

5 [opponent@monrovia bin]$ monrovia shutdown

Shutdown the server? y

Shutdown started.

java.lang.NullPointerException

at monrovia.server.platform.map.PlayerCreature.sendUpdate(PlayerCreature.java:111)

at monrovia.server.platform.map.PlayerCreature.exit(PlayerCreature.java:174)

at monrovia.server.core.PlayerDataImpl.exit(PlayerDataImpl.java:120)

at monrovia.server.core.Starter$1.run(Starter.java:84)

[opponent@monrovia bin]$ monrovia shutdown

Error: Connection refused

Do you want to try to start the server? yes

Starting...

[opponent@monrovia bin]$

 

Myöhemmin selvisi, että osa alla esiintyvät virheet johtuivat uudesta KVM:n asentamisesta.

 

1. Kun clientit ottivat yhteyden serveriin.

 

[opponent@monrovia bin]$ java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

 

2. Ohjausnappuloita ei välillä näkynyt. Nappulat tulivat kuitenkin näkyviin, kun panettiin PC:llä nappulaa.

 

3. Fire ant:t ovat kimpussa, vaikka niitä ei näy, peliviestien perusteella

 

4. Stats- nappia ei näy lainkaan.

 

5. Viesteissä ei aina ole välttämättä mitään järkeä. Esimerkiksi silloin, jos kaveri sanoo jotain, näkyvät vanhat myös vanhat viestit.

 

6. Client:n pelisessio jumiutui: tappelu tilanne, say, paineli joitain nappuloita. Hetken päästä, 2 min, kuitenkin alkoi taas toimimaan.

 

7. Stats –nappia painettiin

tämän jälekeen liikuttelua ja ok useasti

 

8. Pelaajaa poistettaessa:

 

 

Player to remove: Mikko

Remove player 'Mikko'? yes

Exception in thread "main" java.lang.NullPointerException

at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:245)

at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:220)

at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)

at monrovia.server.core.AppControlImpl_Stub.removePlayer(AppControlImpl_Stub.java:92)

at monrovia.server.control.MonroviaControl.removePlayer(MonroviaControl.java:118)

at monrovia.server.control.MonroviaControl.<init>(MonroviaControl.java:159)

at monrovia.server.control.MonroviaControl.main(MonroviaControl.java:232)

 

8. Pelisession aikaisista serverin ilmoituksista pieni katkelma:

 

[opponent@monrovia bin]$ java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.NullPointerException

at monrovia.server.platform.commands.Say.tryExecution(Say.java:32)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

Sun Apr 08 12:18:27 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:18:31 EEST 2001 ALERT: Error: Command for creature not in the map

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

Sun Apr 08 12:23:19 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:23:22 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:23:23 EEST 2001 ALERT: Error: Command for creature not in the map

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.ArrayIndexOutOfBoundsException

at monrovia.server.platform.MapArea.getGround(MapArea.java:82)

at monrovia.server.core.GameInterface.getGroundAt(GameInterface.java:45)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:42)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

java.lang.NullPointerException

at monrovia.server.platform.commands.Walk.tryExecution(Walk.java:22)

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:29)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

Sun Apr 08 12:29:19 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:21 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:26 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:30 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:32 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:34 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:40 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:49 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:55 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:57 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:29:59 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:01 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:02 EEST 2001 ALERT: Error: Command for creature not in the map

java.lang.NullPointerException

at monrovia.game.commands.GameWalk.tryExecution(GameWalk.java:30)

at monrovia.server.platform.MapArea.doCommands(MapArea.java:252)

at monrovia.server.platform.MapArea.doTurn(MapArea.java:358)

at monrovia.server.platform.MapArea.run(MapArea.java:375)

at java.lang.Thread.run(Thread.java:484)

Sun Apr 08 12:30:10 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:11 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:11 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:11 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:11 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:12 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:12 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:12 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:16 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:16 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:17 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:17 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:18 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:18 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:41 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:41 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:41 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:41 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:42 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:42 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:42 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:42 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:42 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:43 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:43 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:43 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:43 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:43 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:44 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:44 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:44 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:44 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:44 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:45 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:46 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:46 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:47 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:48 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:49 EEST 2001 ALERT: Error: Command for creature not in the map

Sun Apr 08 12:30:49 EEST 2001 ALERT: Error: Command for creature not in the map