Videopelituotanto Godot-pelimoottorilla ja avoimen lähdekoodin ohjelmistolla
Uusimäki, Joona (2025)
Uusimäki, Joona
2025
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-2025121938661
https://urn.fi/URN:NBN:fi:amk-2025121938661
Tiivistelmä
Opinnäytetyön tavoitteena oltiin toteuttamassa ja dokumentoimassa kaksiulotteisen seikkailupelin tuottamisprosessi suunnitelmasta valmiiksi peliksi, käyttäen mahdollisimman moneen työtehtävään ilmaisia ja avoimen lähdekoodin sovelluksia. Toteutetun pelin toimintojen tulisi oltava toimivia ja laadukkaita. Pelissä tulisi olla opinnäytetyön lopuksi ydintoimintoina nelinsuuntainen liikkuminen, perus taistelumekaniikat ja yksinkertaiset tehtävät.
Opinnäytetyön taustalla haluttiin kokeilla mihin valitulla Godot-moottorilla ja avoimen lähdekoodin sovelluksilla pystyy pelituotannossa. Taustakokemusta osasta sovelluksista löytyi jo ennen opinnäytetyön aloittamista. Opinnäytetyön avulla yritettiin todistaa, että pelituotanto on mahdollista toteuttaa kustannustehokkaasti ilmaisten ja avoimen lähdekoodin ohjelmien avulla, mikä on merkittävää itsenäisille ja pienille pelikehittäjille.
Opinnäytetyön keskeinen pelinkehittäminen koostui yhdistelmästä pelilogiikan ohjelmointia, kaksiulotteisten sprite-grafiikoiden piirtämistä ja animoimista, sekä kaikkien mainittujen osioiden tutkimista, toteuttamista ja niiden yhdistämistä kokonaisuudeksi pelimoottorissa. Grafiikan piirtäminen ja animointi toteutettiin LibreSprite-piirtosovelluksella. Pelin logiikan ohjelmointi toteutettiin C#-ohjelmointikielellä.
Projektin toteutuksessa kohdattiin useita pieniä ja yksi suuri haaste, mitkä venyttivät kehitysaikaa. Suurimmat haasteet kohdattiin grafiikan tekemisessä ja pelimoottorissa käyneen ohjelmistovirheen takia. Grafiikan luomisesta luultiin sen olevan nopeampaa ja helpompaa mitä se lopulta oli. Opinnäytetyön lopuksi saatiin aikaan pelattava kaksiulotteinen peli, mihin saatiin pelaajalle kahdeksansuuntainen liikkuminen, lyöminen ja lyömisen esto. Peliin saatiin lisättyä yksi vihollistyyppi ja yksi päävihollinen. Peliin rakennettiin päävalikko, jossa ohjeet pelaamiseen, kaksi karttaa, missä löytyy vihollisia ja päävihollinen ja pieni aloitusalue, missä pelaaja voi kokeilla pelin kontrolleja. Pelistä jouduttiin karsimaan suunnitelmassa laadittuja toimintoja ajan puutteen takia. Pelin kehityksessä jäätiin laadullisesti suunnitelman pohjalta heikoksi, koska aikaa ei jäänyt pelin hienosäätöä varten. The aim of this thesis was to implement and document the production process of a two-dimensional adventure game from plan to finished game, using free and open source applications for as many tasks as possible. The functions of the implemented game should be functional and of high quality. At the and of the thesis, the game should have four-way movement, basic combat mechanics and simple tasks as core functions.
The background of the thesis was to test what the selected Godot engine and open source applications could do in game production. There was some prior experience with some of the applications and tools that would be used in the thesis. The thesis tried to prove that game production can be implemented cost-effectively using free and open source software, which is significant for independent and small game developers. The core game development of the thesis consisted of a combination of game programming, drawing and animating two-dimensional sprite graphics, and researching, implementing and combining all the parts in the game engine. Drawing and animating the graphics was done with LibreSprite drawing application. Programming the game logic was done in the C# programming language.
Several small and one large challenge were encountered during the project implementation, which extended the development time. The biggest challenges were due to a software error in the game engine and creation of the graphics. Creating graphics was thought to be faster and easier than it actually was. At the end of the thesis, a playable two-dimensional game was created, which had eight-way movement for the player as well as hitting and blocking attacks. One enemy type and one boss enemy were added to the game. The game was built with a main menu with instructions for playing, two maps with enemies and a boss enemy, and a small starting area where the player can try out the game’s controls. Some of the features that were planned in the planning phase had to be cut from the game due to lack of time. The game’s development was poor in terms of quality compared to what was planned, as there was no time for refining the game.
Opinnäytetyön taustalla haluttiin kokeilla mihin valitulla Godot-moottorilla ja avoimen lähdekoodin sovelluksilla pystyy pelituotannossa. Taustakokemusta osasta sovelluksista löytyi jo ennen opinnäytetyön aloittamista. Opinnäytetyön avulla yritettiin todistaa, että pelituotanto on mahdollista toteuttaa kustannustehokkaasti ilmaisten ja avoimen lähdekoodin ohjelmien avulla, mikä on merkittävää itsenäisille ja pienille pelikehittäjille.
Opinnäytetyön keskeinen pelinkehittäminen koostui yhdistelmästä pelilogiikan ohjelmointia, kaksiulotteisten sprite-grafiikoiden piirtämistä ja animoimista, sekä kaikkien mainittujen osioiden tutkimista, toteuttamista ja niiden yhdistämistä kokonaisuudeksi pelimoottorissa. Grafiikan piirtäminen ja animointi toteutettiin LibreSprite-piirtosovelluksella. Pelin logiikan ohjelmointi toteutettiin C#-ohjelmointikielellä.
Projektin toteutuksessa kohdattiin useita pieniä ja yksi suuri haaste, mitkä venyttivät kehitysaikaa. Suurimmat haasteet kohdattiin grafiikan tekemisessä ja pelimoottorissa käyneen ohjelmistovirheen takia. Grafiikan luomisesta luultiin sen olevan nopeampaa ja helpompaa mitä se lopulta oli. Opinnäytetyön lopuksi saatiin aikaan pelattava kaksiulotteinen peli, mihin saatiin pelaajalle kahdeksansuuntainen liikkuminen, lyöminen ja lyömisen esto. Peliin saatiin lisättyä yksi vihollistyyppi ja yksi päävihollinen. Peliin rakennettiin päävalikko, jossa ohjeet pelaamiseen, kaksi karttaa, missä löytyy vihollisia ja päävihollinen ja pieni aloitusalue, missä pelaaja voi kokeilla pelin kontrolleja. Pelistä jouduttiin karsimaan suunnitelmassa laadittuja toimintoja ajan puutteen takia. Pelin kehityksessä jäätiin laadullisesti suunnitelman pohjalta heikoksi, koska aikaa ei jäänyt pelin hienosäätöä varten.
The background of the thesis was to test what the selected Godot engine and open source applications could do in game production. There was some prior experience with some of the applications and tools that would be used in the thesis. The thesis tried to prove that game production can be implemented cost-effectively using free and open source software, which is significant for independent and small game developers. The core game development of the thesis consisted of a combination of game programming, drawing and animating two-dimensional sprite graphics, and researching, implementing and combining all the parts in the game engine. Drawing and animating the graphics was done with LibreSprite drawing application. Programming the game logic was done in the C# programming language.
Several small and one large challenge were encountered during the project implementation, which extended the development time. The biggest challenges were due to a software error in the game engine and creation of the graphics. Creating graphics was thought to be faster and easier than it actually was. At the end of the thesis, a playable two-dimensional game was created, which had eight-way movement for the player as well as hitting and blocking attacks. One enemy type and one boss enemy were added to the game. The game was built with a main menu with instructions for playing, two maps with enemies and a boss enemy, and a small starting area where the player can try out the game’s controls. Some of the features that were planned in the planning phase had to be cut from the game due to lack of time. The game’s development was poor in terms of quality compared to what was planned, as there was no time for refining the game.
