Käänteinen debuggaus videopeleissä
Mannevaara, Olli (2019-12-10)
Käänteinen debuggaus videopeleissä
Mannevaara, Olli
(10.12.2019)
Julkaisu on tekijänoikeussäännösten alainen. Teosta voi lukea ja tulostaa henkilökohtaista käyttöä varten. Käyttö kaupallisiin tarkoituksiin on kielletty.
avoin
Julkaisun pysyvä osoite on:
https://urn.fi/URN:NBN:fi-fe2019121848812
https://urn.fi/URN:NBN:fi-fe2019121848812
Tiivistelmä
Videopelien laadunvarmistuksella on merkittävä vaikutus pelien menestymiseen. Kun videopeli julkaistaan, sitä seuraa myyntijakso, jonka menestymiseen vaikuttaa pelissä ilmenevät bugit. Bugien ilmeneminen on todennäköisempään, mitä useampi pelaa peliä. Koska pelinkehittäjien resurssit laadunvarmistuksessa ovat rajalliset, kaikkia bugeja ei voida löytää ennen julkaisua.
Moderneissa pelialustoissa pelien suoritukseen vaikuttaa laitteiston resursseja jakava käyttöjärjestelmä. Resurssien jako on edellytys sille, että sovelluksia voidaan suorittaa rinnakkain. Epävarmuus suorituksessa vaikuttaa sovelluksen logiikan ajoituksiin. Jos sovellukseen vaikuttavat epädeterministiset syötteet voidaan tallentaa ja toistaa tarvittaessa, voidaan sovelluksen debuggaamiseen käyttää käänteisenä debuggaamisena tunnettua tekniikkaa. Käänteinen debuggaaminen mahdollistaa prosessin, jossa sovellusta voidaan eteenpäin suorituksen lisäksi suorittaa myös taaksepäin.
Koska pelit perustuvat sekä reaaliaikaiseen suoritukseen että pelin ja pelaajan väliseen vuorovaikutukseen, pitää peleille toteutetun käänteisen debuggaamisen vaatimukset määrittää erikseen. Käänteinen debuggaaminen on mahdollista toteuttaa hallitsemalla allaolevaa pelialustaa, mutta pelien näkökulmasta tämä vaikuttaa liian merkittävästi alustan suorituskykyyn. Käänteinen debuggaus voidaan tehdä pelin ominaisuudeksi, jolloin sen käyttö on suorituskykyisempää kuin koko alustaa nauhoittavat ratkaisut.
Tässä diplomityössä tutkitaan mahdollisuutta toteuttaa käänteinen debuggaaminen osaksi peliä. Käänteisen debuggauksen yhteensopivuutta peleihin selvitetään perehtymällä ohjelmistotuotannossa käytettyihin ratkaisuihin. Havaittujen vaatimusten pohjalta valitaan toteutusmalli videopelien käänteiselle debuggaamiselle ja sitä käyttäen toteutetaan yksinkertainen videopeli. Siitä ilmenee, että käänteinen debuggaaminen on mahdollista toteuttaa. Toteutuksesta käy myös ilmi interaktiivisen käänteisen debuggaamisen haasteet. Quality assurance has a significant effect on the success of a video game. When a game is released, it is followed by a sales period which is affected by the bugs present in the video game. The more players there are, the more likely it is that bugs are noticed. Because of the limited resources in video game development, all bugs cannot be detected and fixed before the release.
In modern platforms, resources are divided at the operating system level. The splitting of resources adds non-determinism to the execution of the software. If non-determinism can be recorded and replayed, the software can be re-executed deterministically which leads to more powerful debugging techniques. Debugging based on deterministic re-execution is known as reverse debugging. With reverse debugging it is possible to step forwards as well as backwards in the execution of a software.
Because video games depend on real-time execution and the interaction of the player, implementing reverse debugging for video games has different requirements from conventional software. Reverse debugging can be implemented on a platform level, but it will affect game performance negatively. If reverse debugging is implemented as a feature for the game, it will perform better than platform-wide solutions.
This thesis studies the possibility to implement reverse debugging as a feature in a video game. The compatibility of existing reverse debugging solutions for video games are evaluated. Appropriate model for reverse debugging in video games is proposed and the proposal is validated through the creation of a video game. Reverse debugging is successfully implemented in the game and additional requirements for interactive reverse debugging are shown.
Moderneissa pelialustoissa pelien suoritukseen vaikuttaa laitteiston resursseja jakava käyttöjärjestelmä. Resurssien jako on edellytys sille, että sovelluksia voidaan suorittaa rinnakkain. Epävarmuus suorituksessa vaikuttaa sovelluksen logiikan ajoituksiin. Jos sovellukseen vaikuttavat epädeterministiset syötteet voidaan tallentaa ja toistaa tarvittaessa, voidaan sovelluksen debuggaamiseen käyttää käänteisenä debuggaamisena tunnettua tekniikkaa. Käänteinen debuggaaminen mahdollistaa prosessin, jossa sovellusta voidaan eteenpäin suorituksen lisäksi suorittaa myös taaksepäin.
Koska pelit perustuvat sekä reaaliaikaiseen suoritukseen että pelin ja pelaajan väliseen vuorovaikutukseen, pitää peleille toteutetun käänteisen debuggaamisen vaatimukset määrittää erikseen. Käänteinen debuggaaminen on mahdollista toteuttaa hallitsemalla allaolevaa pelialustaa, mutta pelien näkökulmasta tämä vaikuttaa liian merkittävästi alustan suorituskykyyn. Käänteinen debuggaus voidaan tehdä pelin ominaisuudeksi, jolloin sen käyttö on suorituskykyisempää kuin koko alustaa nauhoittavat ratkaisut.
Tässä diplomityössä tutkitaan mahdollisuutta toteuttaa käänteinen debuggaaminen osaksi peliä. Käänteisen debuggauksen yhteensopivuutta peleihin selvitetään perehtymällä ohjelmistotuotannossa käytettyihin ratkaisuihin. Havaittujen vaatimusten pohjalta valitaan toteutusmalli videopelien käänteiselle debuggaamiselle ja sitä käyttäen toteutetaan yksinkertainen videopeli. Siitä ilmenee, että käänteinen debuggaaminen on mahdollista toteuttaa. Toteutuksesta käy myös ilmi interaktiivisen käänteisen debuggaamisen haasteet.
In modern platforms, resources are divided at the operating system level. The splitting of resources adds non-determinism to the execution of the software. If non-determinism can be recorded and replayed, the software can be re-executed deterministically which leads to more powerful debugging techniques. Debugging based on deterministic re-execution is known as reverse debugging. With reverse debugging it is possible to step forwards as well as backwards in the execution of a software.
Because video games depend on real-time execution and the interaction of the player, implementing reverse debugging for video games has different requirements from conventional software. Reverse debugging can be implemented on a platform level, but it will affect game performance negatively. If reverse debugging is implemented as a feature for the game, it will perform better than platform-wide solutions.
This thesis studies the possibility to implement reverse debugging as a feature in a video game. The compatibility of existing reverse debugging solutions for video games are evaluated. Appropriate model for reverse debugging in video games is proposed and the proposal is validated through the creation of a video game. Reverse debugging is successfully implemented in the game and additional requirements for interactive reverse debugging are shown.