Suunnittelumallien käyttö peleissä
Misukka, Andrei (2019)
Misukka, Andrei
2019
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2019060113972
https://urn.fi/URN:NBN:fi:amk-2019060113972
Tiivistelmä
Insinöörityössä tutkittiin yleensä ohjelmistotuotannossa käytettävien suunnittelumallien käyttömahdollisuuksia peleissä. Tarkoituksena oli tutkia suunnittelumalleja yleisesti, mutta myös erityisesti pelien näkökulmasta.
Suunnittelumallit ovat erityisesti ohjelmistotuotannossa käytettäviä, yleisesti tiedettyihin ohjelmakoodin suunnitteluun liittyviin ongelmiin kehitettyjä, abstrakteja malleja.
Tutkimuksessa oli tarkoituksena selvittää, voiko suunnittelumalleilla saavuttaa merkittävää hyötyä pelien kehityksessä. Työssä käytettiin Unity-pelimoottorilla tuotettua avoimen lähdekoodin peliä, jonka koodirakennetta paikoin muokattiin käyttäen eri suunnittelumalleja. Tuloksia arvioitiin seuraavasti: koodin luettavuus ja uudelleen muokkaamisen helppous sekä muistinhallinnan ja suorituskyvyn parantuminen. Saatuja tuloksia analysoitiin kriittisesti ja arvioitiin sen mukaan, kuinka paljon suunnittelumalli käytännössä ongelmaa helpotti.
Insinöörityön tuloksena apuna käytettyyn peliin saatiin lopulta toteutettua kolme eri suunnittelumallia. Käytetyt mallit olivat Komento, Strategia ja Oliovarasto. Kaikki kolme mallia ratkaisevat hyvin erilaisia ongelmia. Kaksi käytetyistä malleista luokitellaan käyttäytymismalleihin ja kolmas erityisesti peleissä käytettäväksi.
Projektin tulokset olivat yleisesti odotettuja. Verrattuna alkuperäisen pelin ohjelmakoodiin voitiin todeta käytettyjen mallien lisäävän koodin luettavuutta ja helpottavan uusien ominaisuuksien lisäämistä. Suorituskykyä ja muistinhallintaa pystyttiin parantamaan merkittävästi vain vähemmän tehokkailla tietokoneilla.
Projektista saadut kokemukset näyttivät suunnittelumallien käytön sopivan myös peleihin. Olemassa olevan koodin muokkaus vastaamaan mallin rakennetta ei kuitenkaan aina ilmene merkittävänä hyötynä, vaan saattaa aiheuttaa tarpeetonta monimutkaisuutta. Projektin kulku osoitti, että aluksi tulisi perusteellisesti selvittää suunnittelumallilla saavutettavaa etua.
The purpose of this final year project was to research and collect data about the feasibility of design patterns in game developing. The goals were to determine how the design patterns are used in games and game engines, in addition with how the design patterns could help the building of the code architecture of a game.
The design patterns are described as abstract blueprints for solving commonly occurring design problems inside the code. The usage of design patterns is focused on software development, but the research was done with focus on games. The researching consisted of studying the Unity game engine and an open source game produced by it. Furthermore, the game’s own code was refactored for implementation of three different design patterns. The effects and consequences of the refactoring were critically evaluated by inspecting the changes for the code’s readability, reusability, memory management and performance.
As a result, Unity was concluded to have considerable amount of design patterns used all around the engine. Many of them were found to be related to games specifically. The three implemented patterns yielded results that were mostly expected: both readability and reusability increased. However, the change in memory management and performance remained lower than first estimated.
In conclusion, the design patterns are widely used in games and some patterns even focus on increasing the performance. Moreover, they can have positive impact on the code architecture of a game, but for the usage there needs to be a careful measure of the advantages and disadvantages.
Suunnittelumallit ovat erityisesti ohjelmistotuotannossa käytettäviä, yleisesti tiedettyihin ohjelmakoodin suunnitteluun liittyviin ongelmiin kehitettyjä, abstrakteja malleja.
Tutkimuksessa oli tarkoituksena selvittää, voiko suunnittelumalleilla saavuttaa merkittävää hyötyä pelien kehityksessä. Työssä käytettiin Unity-pelimoottorilla tuotettua avoimen lähdekoodin peliä, jonka koodirakennetta paikoin muokattiin käyttäen eri suunnittelumalleja. Tuloksia arvioitiin seuraavasti: koodin luettavuus ja uudelleen muokkaamisen helppous sekä muistinhallinnan ja suorituskyvyn parantuminen. Saatuja tuloksia analysoitiin kriittisesti ja arvioitiin sen mukaan, kuinka paljon suunnittelumalli käytännössä ongelmaa helpotti.
Insinöörityön tuloksena apuna käytettyyn peliin saatiin lopulta toteutettua kolme eri suunnittelumallia. Käytetyt mallit olivat Komento, Strategia ja Oliovarasto. Kaikki kolme mallia ratkaisevat hyvin erilaisia ongelmia. Kaksi käytetyistä malleista luokitellaan käyttäytymismalleihin ja kolmas erityisesti peleissä käytettäväksi.
Projektin tulokset olivat yleisesti odotettuja. Verrattuna alkuperäisen pelin ohjelmakoodiin voitiin todeta käytettyjen mallien lisäävän koodin luettavuutta ja helpottavan uusien ominaisuuksien lisäämistä. Suorituskykyä ja muistinhallintaa pystyttiin parantamaan merkittävästi vain vähemmän tehokkailla tietokoneilla.
Projektista saadut kokemukset näyttivät suunnittelumallien käytön sopivan myös peleihin. Olemassa olevan koodin muokkaus vastaamaan mallin rakennetta ei kuitenkaan aina ilmene merkittävänä hyötynä, vaan saattaa aiheuttaa tarpeetonta monimutkaisuutta. Projektin kulku osoitti, että aluksi tulisi perusteellisesti selvittää suunnittelumallilla saavutettavaa etua.
The purpose of this final year project was to research and collect data about the feasibility of design patterns in game developing. The goals were to determine how the design patterns are used in games and game engines, in addition with how the design patterns could help the building of the code architecture of a game.
The design patterns are described as abstract blueprints for solving commonly occurring design problems inside the code. The usage of design patterns is focused on software development, but the research was done with focus on games. The researching consisted of studying the Unity game engine and an open source game produced by it. Furthermore, the game’s own code was refactored for implementation of three different design patterns. The effects and consequences of the refactoring were critically evaluated by inspecting the changes for the code’s readability, reusability, memory management and performance.
As a result, Unity was concluded to have considerable amount of design patterns used all around the engine. Many of them were found to be related to games specifically. The three implemented patterns yielded results that were mostly expected: both readability and reusability increased. However, the change in memory management and performance remained lower than first estimated.
In conclusion, the design patterns are widely used in games and some patterns even focus on increasing the performance. Moreover, they can have positive impact on the code architecture of a game, but for the usage there needs to be a careful measure of the advantages and disadvantages.