Ero sivun ”Portaali:Peliohjelmointi Linuxilla” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (Rogue Engine)
 
(74 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
[[Kuva:Mari0portal.png|300px|thumb||Kaksiulotteinen peli - Mari0, joka on teteutettu Löve 2D-pelimoottorilla.]]
Tämän sivun tarkoitus on toimia lähtöpaikkana kaikille, jotka haluavat opetella peliohjelmointia Linux-ympäristössä. Monesti peliohjelmointiin liittyvät ohjeet ovat pelkkiä linkkilistauksia. Peliohjelmointi Linuxilla ilman tarkempaa tietoa on hankalaa. Tähän olisi tarkoitus luoda hyvä sivu, jossa kerrotaan mitä mitäkin ohjelma tekee ja mitä eri kirjastot tekevät. Tässä artikkelissa pyritään antamaan mahdollisimman yleispäteviä suosituksia, joiden pohjalta oman peli projektin ohjelmointi olisi helpompaa. Aloitetaan!  
Tämän sivun tarkoitus on toimia lähtöpaikkana kaikille, jotka haluavat opetella peliohjelmointia Linux-ympäristössä. Monesti peliohjelmointiin liittyvät ohjeet ovat pelkkiä linkkilistauksia. Peliohjelmointi Linuxilla ilman tarkempaa tietoa on hankalaa. Tähän olisi tarkoitus luoda hyvä sivu, jossa kerrotaan mitä mitäkin ohjelma tekee ja mitä eri kirjastot tekevät. Tässä artikkelissa pyritään antamaan mahdollisimman yleispäteviä suosituksia, joiden pohjalta oman peli projektin ohjelmointi olisi helpompaa. Aloitetaan!  


==Millainen on Linux peliohjelmoijan näkökulmasta?==
==Millainen on Linux peliohjelmoijan näkökulmasta?==
[[Kuva:Unknown-Horizons.png|250px|thumb||Isometrinen peli - Unknown Horizons]]
Tiedon etsiminen voi aluksi tuntua vaikealta, mutta tämän sivun on tarkoitus olisi helpottaa sen löytämistä.
Aluksi vaikeahko, mutta tämän sivun on tarkoitus helpottaa sitä.


Mitä taitoja tarvitsen visuaalisen pelin luomiseksi?
Mitä taitoja tarvitsen visuaalisen pelin luomiseksi?


Erilaisia ohjelmia mitä voidaan tarvita pelinteossa.
* Suunnittelu
* Suunnittelu
* Ohjelmointikielen opettelu
** [https://battletech.rpg.hu/dynmech/gamename.php Hahmon nimi ja sukupuu generaattori]
* [[Portaali:Ohjelmistokehitys|Ohjelmointiympäristö]]: Ohjelmia mm: [[Eclipse]]
** [http://twinery.org/ Twine] Muokkain, jolla voi luoda interaktiivisia ja epälineaarisia tarinoita.
* [[Kuvankäsittely]]: Ohjelmia mm: [[GIMP]]
** [https://www.yworks.com/products/yed/download#download yEd] on tehokas työpöytäsovellus, jonka avulla voidaan luoda nopeasti ja tehokkaasti laadukkaita kaavioita.
* [[Musiikinteko Linuxilla|Ääni]]
** [https://github.com/YarnSpinnerTool/YarnEditor Yarn Editor] Työkalu vuorovaikutteisen vuoropuhelun kirjoittamiseen peleissä
* [[CAD-ohjelmat#Mallinnus|Mallinnus]]: Ohjelmia mm: [[Blender]]
* Ohjelmointikielen opettelu tai valmis peliohjelmoitiympäristö: [[Unreal Engine]], [[Unity3D|Unity]]
* [[Lokalisointi]]
* [[Portaali:Ohjelmistokehitys|Ohjelmointiympäristö]]: [[NetBeans]], [[Code::Blocks]], [[Eclipse]], [[jMonkeyEngine]], [[Godot]]
* [[Kuvankäsittely]]ohjelmia, mm. [[GIMP]], [[AwesomeBump]],  [[Material Maker]]
* Pikselinkäsittelyohjelmia, mm. [[Aseprite]]
* [[Musiikinteko Linuxilla|Ääni]]: [[Audacity]]
* [[CAD-ohjelmat#Mallinnus|Mallinnus]]ohjelmia. mm. [[Blender]], [[MakeHuman]], [[Tinkercad]]
* [[Lokalisointi]]: [[Poedit]]


==Pelisuunnittelu==
==Pelisuunnittelu==
Kuinka pelin voi suunnitella? Piirtääkö ja hahmottelee peli-idean paperille vai käyttääkö siihen suunniteltuja ohjelmia. On pelin tekijästä kiinni, mitä ohjelmia tai tapoja haluaa käyttää.
Kuinka pelin voi suunnitella? Piirtääkö ja hahmottelee peli-idean paperille vai käyttääkö siihen suunniteltuja ohjelmia. On pelin tekijästä kiinni, mitä ohjelmia tai tapoja haluaa käyttää.
Pelimoottorit tarjoavat valtavat edut pelikehittäjille. Tärkein niiden tarjoama toiminto on tietokonepelissä käytettävien ydintoiminto kirjasto. Nämä kirjastot sisältävät reaaliaikaisen 2D- tai 3D-renderointimoottorin grafiikalle, fysiikkamoottorin törmäystunnistuksella, hahmoanimaatiojärjestelmän, kohtauskaaviot, äänen, tekoälyn, ketjutuksen, verkon, syötteen, lokalisoinnin tuen, virheenkorjaustyökalut, integroinnin eri kielten kanssa ja suorituskyvyn seuranta- ja optimointityökalut.
Pelimoottoreilla on ratkaiseva rooli tietokonepelien nopeassa luomisessa ja kehittämisessä. Koska ne tarjoavat kokoelman visuaalisia kehittämistyökaluja ja ne esitellään usein integroidussa kehitysympäristössä ja näin ne nopeuttavat huomattavasti pelien kehitystä. Pelimoottoreita kutsutaan ''pelien väliohjelmiksi'', koska ne tarjoavat joustavan ja uudelleenkäytettävän ohjelmistoalustan.
Pelimoottoreita ei välttämättä kuitenkaan käytetä pelien luomiseen. Vaan niitä käytetään monissa erilaisissa projekteissa, kuten koulutusohjelmistoissa, interaktiivisessa taiteessa ja tieteellisessä visualisoinnissa.
Saadaksemme käsityksen käytettävissä olevien ohjelmistojen laadusta olemme koonneet luetteloa Linux-pelimoottoreista.


==Ohjelmointikielen valinta==
==Ohjelmointikielen valinta==
===Python ja Lua===
===Python ja Lua===
[[Python]] ja [[Lua]] ovat korkeamman tason skriptauskieliä, joita voidaan käyttää peliohjelmoinnissa mm. lisäominaisuuksien tuottamiseen. Niillä voidaan tuottaa myös koko peli niin haluttaessa. Skriptauskielen syntaksi on ohjelmakohtainen ja ohjelman toiminnot ovat ennalta määritellyt. Python ja Lua ovat tulkattavia kieliä. Aiheeseen liittyvänä esimerkkinä Word of Warcraft käyttää lisäosissaan Luaa skriptauskielenä. Luaa voi käyttää esimerkiksi peleissä, joissa tarvitaan automatisointia. Esimerkiksi [[Löve]]-pelimoottori, jota ohjelmoidaan Lua-skripti kieltä käyttäen.
[[Python]] ja [[Lua]] ovat korkeamman tason skriptauskieliä, joita voidaan käyttää peliohjelmoinnissa mm. lisäominaisuuksien tuottamiseen. Niillä voidaan tuottaa myös koko peli niin haluttaessa. Skriptauskielen syntaksi on ohjelmakohtainen ja ohjelman toiminnot ovat ennalta määritellyt. Python ja Lua ovat tulkattavia kieliä. Aiheeseen liittyvänä esimerkkinä World of Warcraft käyttää lisäosissaan Luaa skriptauskielenä. Luaa voi käyttää esimerkiksi peleissä, joissa tarvitaan automatisointia. Esimerkiksi [[Löve]]-pelimoottori, jota ohjelmoidaan Lua-skripti kieltä käyttäen.


===Java===
===Java===
[[Kuva:simple-Java-engine.png|300px|thumb||Kolmiulotteinen Javalla ja LWJGL2-kirjastolla toteutettu yksinkertainen peli.]]
[[Kuva:simple-Java-engine.png|300px|thumb||Kolmiulotteinen Javalla ja LWJGL2-kirjastolla toteutettu yksinkertainen esimerkki pelimoottori.]]
[[Java]] on suosittu alustariippumaton ohjelmointikieli, joka käy myös pelinkehitykseen. Javaa voi opiskella helposti esimerkiksi Helsingin Yliopiston Mooc-verkkokurssilla tai Youtubesta löytyvillä opetusvideoilla.
[[Java]] on suosittu alustariippumaton ohjelmointikieli, joka käy myös pelinkehitykseen. Javaa voi opiskella helposti esimerkiksi Helsingin Yliopiston MOOC-verkkokurssilla [http://mooc.fi] tai Youtubesta löytyvillä opetusvideoilla.


===C++===
===C++===
[[C++]], [[SDL]]:n ja [[openGL]]:n opiskelusta löytyy Youtubesta todella hyviä opetusvideoita. Videoita voi hakea hakusanalla <tt>C++, SDL and openGL</tt> tai käydä <tt>thecplusplusguy</tt> nimisen henkilön kanavalla.
[[C++]], [[SDL]]:n ja [[OpenGL]]:n opiskelusta löytyy Youtubesta todella hyviä opetusvideoita. Videoita voi hakea hakusanalla <tt>C++, SDL and openGL</tt> tai käydä <tt>thecplusplusguy</tt> nimisen henkilön kanavalla.


===Pascal===
===Pascal===
Rivi 34: Rivi 46:


===Mono===
===Mono===
[[Mono]] on avoimen lähdekoodin toteutus Microsoftin kehittämästä .NET-arkkitehtuurista. Sitä käytetään nykyään enemmän suljetun lähdekoodin peleissä. Esimerkiksi Unity Technologiesin kehittämä monialustainen pelimoottori [[Unity 3D]] käyttää Monoa monissa Linux pelien toteutuksissaan. [[Richard Stallman]] ja [[Free Software Foundation]] ovat useita kertoja varoitelleet Monon käytön olevan vaarallista Microsoftin hakemien patenttien vuoksi. Free Software Foundation suosittelee ettei vapaata ohjelmistoa rakenneta Monon tai C#:n varaan. Huomattuja ongelmia  Monolla ja Unity 3D:llä tehdyissä peleissä on myös miten muistia käsitellään (memory limit 3.5gb). Unity3D on vain 32-bittinen ja se voi vain käyttää 3.5gt muistia. Tähän on tulossa kuitenkin muutos, sillä Unity 3D:stä on kehitteillä Linuxille natiivi versio, josta on jo saatavana kehitysversio.
[[Mono]] on avoimen lähdekoodin toteutus Microsoftin kehittämästä .NET-arkkitehtuurista. Sitä käytetään nykyään enemmän suljetun lähdekoodin peleissä. Esimerkiksi Unity Technologiesin kehittämä monialustainen pelimoottori [[Unity 3D]] käyttää Monoa monissa Linux-pelien toteutuksissaan. [[Richard Stallman]] ja [[Free Software Foundation]] ovat useita kertoja varoitelleet Monon käytön olevan vaarallista Microsoftin hakemien patenttien vuoksi. Free Software Foundation suosittelee ettei vapaata ohjelmistoa rakenneta Monon tai C#:n varaan. Huomattuja ongelmia  Monolla ja Unity 3D:llä tehdyissä peleissä on myös miten muistia käsitellään (memory limit 3.5gb).  


==Mikä on 2D-peli?==
==Mikä on 2D-peli?==
2D-peli on kuvattu kaksiulotteisena kuvana. Kaksiulotteiset pelit on kuvattu monesti sivusta tai ylhäältä. Esimerkkejä kaksiulotteisista peleistä ovat [[Mari0]] ja [[The Mana World]]. Isometriset pelit kuuluvat myös kaksiulotteisiin peleihin. Ne on kuvattu yläviistosta. Isometrinen peli on esimerkiksi [[Unknown Horizons]].
2D-peli on kuvattu kaksiulotteisena kuvana pikseleita kuvasta muuttamalla. Kaksiulotteiset pelit on kuvattu edestä tai ylhäältä. Esimerkkejä kaksiulotteisista peleistä ovat mm. [[Mari0]], joka kuvaa edestä päin kuvattua kaksiulotteista laatoista koostuvaa peliä tai [[The Mana World]], jonka kuvakulma on kuvattu ylhäältä. Isometriset pelit kuuluvat myös kaksiulotteisiin peleihin. Ne on kuvattu yläviistosta. Isometrinen peli on esimerkiksi [[Unknown Horizons]]. Poikkeuksia tästä on myös esimerkiksi [http://store.steampowered.com/app/224760/FEZ/ FEZ], jossa liikutaan kaksiulotteisilla tasoilla ja ympäristöä voi kääntää kolmiulotteisesti. Pelit koostuvat pääosin laatoista, joita voi olla erikokoisia ja muotoisia.
[[Kuva:Unknown-Horizons.png|250px|thumb|Right|Esimerkki isometrisestä pelistä - Unknown Horizons]]
[[Kuva:Mari0portal.png|300px|thumb|Left|Esimerkki kaksiulotteisesta pelistä nimeltä Mari0. Peli on toteutettu [[Lua]]-skripti kieltä osaavalla Löve 2D-pelimoottorilla.]]
 


===Kaksiulotteisia pelinkehitystyökaluja===
===Kaksiulotteisia pelinkehitystyökaluja===
[[Kuva:Alchera.png|250px|thumb|Mokoi Gaming Alchera on graafinen 2D-pelikehitystyökalu.]]
* [[Solar2D]] on avoimen lähdekoodin [[Lua]]-pohjainen 2D-pelimoottori.
'''Mokoi Gaming Alchera'''
* [[Godot Engine]] on 2D- ja 3D-pelimoottori.
 
* [[Mokoi Gaming Alchera]] [http://sourceforge.net/projects/mokoi/] on graafinen kaksiulotteisten pelien kehitystyökalu, joka sisältää [[SDL|SDL:n]] päälle toteutetut grafiikka-, ääni ja verkkokirjastot.  
[[Mokoi Gaming Alchera]] on graafinen kaksiulotteisten pelien kehitystyökalu, joka sisältää [[SDL|SDL:n]] päälle toteutetut grafiikka-, ääni ja verkkokirjastot. [http://sourceforge.net/projects/mokoi/]
* [[GameEditor]] on graafinen 2D-pelikehitystyökalu.
 
* [[o.h.r.RPG.c.e]] on NES/SNES-tyylinen 2D-pelikehitystyökalu ja roolipelimoottori.
'''GameEditor'''
 
[[GameEditor]] on graafinen 2D-pelikehitystyökalu. [http://game-editor.com]
 
'''o.h.r.RPG.c.e'''
 
[[o.h.r.RPG.c.e]] on NES/SNES-tyylinen 2D-pelikehitystyökalu ja roolipelimoottori. [http://rpg.hamsterrepublic.com/ohrrpgce/Main_Page]


===Kaksiulotteisia pelimoottoreita===
===Kaksiulotteisia pelimoottoreita===


'''Löve'''
* [[Löve]] on 2D-pelimoottori, jota ohjelmoidaan tulkattavan [[Lua]]-kielen avulla. Peli voidaan ohjelmoida pelkkää tekstimuokkainta käyttäen. Ohjelmakoodi suoritetaan komentoriviä käyttäen. Ohjelman koodi on helppolukuista ja sen oppii nopeasti. Löve-pelimoottorilla voi myös tehdä 3D-pelejä, tekniikkaa kutsutaan raycastingiksi [http://www.youtube.com/watch?v=rXwtO4uSosc]. Lövella ohjelmoituja pelejä ovat mm. [[Mari0]] ja [http://store.steampowered.com/app/323850 Move or Die].
* [[Fife]] on isometrinen 2D-pelimoottori, jota ohjelmoidaan tulkattavan Python-kielen avulla. Fife:llä ohjelmoituja pelejä ovat mm. [[Unknown Horizons]].
* [[Flare]] on isometrinen roolipelimoottori, josta ainakin on julkaistu peli nimeltä [https://flarerpg.org/index.php/mods/flare-empyrean/ The Empyrean Campaign].


[[Löve]] on 2D-pelimoottori, jota ohjelmoidaan tulkattavan [[Lua]]-kielen avulla. Peli voidaan ohjelmoida pelkkää tekstimuokkainta käyttäen. Ohjelmakoodi suoritetaan komentoriviä käyttäen. Ohjelman koodi on helppolukuista ja sen oppii nopeasti. Löve-pelimoottorilla voi myös tehdä 3D-pelejä, tekniikkaa kutsutaan raycastingiksi [http://www.youtube.com/watch?v=rXwtO4uSosc]. Lövella ohjelmoituja pelejä ovat mm. [[Mari0]] ja [http://store.steampowered.com/app/323850 Move or Die].
===Karttamuokkaimia===
* [[Tiled]] on 2D-karttamuokkain, jolla voi luoda ortogonaalisia, isometrisiä ja kuusikulmaisia laatoista koostuvia 2D-karttoja peleihin.


'''FIFE'''
===Grafiikka===
 
* [[Aseprite]] on avoimen lähdekoodin 2D-pikseligrafiikkaohjelma, jolla voit luoda animoituja spritejä ja pikseligrafiikkaa.
* [[Fife]] on isometrinen 2D-pelimoottori, jota ohjelmoidaan tulkattavan Python-kielen avulla. [http://www.fifengine.de/] Fife:llä ohjelmoituja pelejä ovat mm. [[Unknown Horizons]].
* [[Pixelator]] on pieni ja älykäs ohjelmisto, joka muuntaa kuvat pikselitaide spriteiksi tai pikselikansikuviksi.


==Mikä on 3D-peli?==
==Mikä on 3D-peli?==
[[Kuva:Tremulous - human base goons.jpg|250px|thumb|Kolmiulotteinen peli.]]
[[Kuva:Tremulous - human base goons.jpg|250px|thumb|Esimerkki kolmiulotteisesta Tremulous pelistä.]]
3D-pelit kuvataan kolmiulotteisena.  
3D-pelit kuvataan kolmiulotteisena.  


Rivi 71: Rivi 82:
* [[Platinum Arts Sandbox Game Maker]] on avoimen lähdekoodin kaksi- ja kolmiulotteisten pelien suunnittelu- ja hiekkalaatikko-ohjelma.
* [[Platinum Arts Sandbox Game Maker]] on avoimen lähdekoodin kaksi- ja kolmiulotteisten pelien suunnittelu- ja hiekkalaatikko-ohjelma.


====Kaupalliset ohjelmistot====
====Mallinnus====
* [[Axis Game Factory]] on Axis Game Factory LLC:n ammattitason luomis- ja karttamuokkain Unity 3D:lle.
* [[Blender]] on monipuolinen 3D-mallinnusohjelma, josta löytyy myös animointimahdollisuus.
* [[Unity3D]] on Unity Technologin kehittämä suljetun lähdekoodin ammattitason pelimoottori ja muokkain.  
* [[Bforartists]] on [[Blender]]istä haarautunut 3D-mallinnusohjelma.
* [[CryEngine]] on saksalaisen Crytekin julkaisema suljetun lähdekoodin pelimoottori, joka on saatavana esimerkiksi [[Valve]]n [[Steam]] [http://store.steampowered.com/app/220980/] -jakelualustasta edulliseen kuukausihintaan.
* [[Neobarok]] on 3D-mallinnus- ja veistosovellus.
* [[MakeHuman]] on erittäin helppokäyttöinen 3D-hahmomallinnusohjelma.
* [[Dust3D]] on eläinhahmojen 3D-mallinnusohjelma.
* [[ngPlant]] on 3D-mallinnusohjelma, jolla voi mallintaa esimerkiksi kasveja ja puita.
* [[Arbaro]] on Javalla ohjelmoitu avoimen lähdekoodin kasvien ja puiden 3D-mallinnusohjelmisto.
 
Lisää mallinnusohjelmia löydät CAD-ohjelmia esittelevästä [[CAD-ohjelmat|artikkelista]] ja [[:Luokka:3D-mallinnusohjelmat|3D-mallinnusohjelmat luokasta]].
 
====Maastogeneraattorit====
* [[TerraForge3D]] on avoimen lähdekoodin proseduraalinen maastogeneraattori ja teksturointityökalu.
 
====Grafiikka ja tekstuurit====
* [[GIMP]] on yleisimmin Linuxissa käytetty yleisin kuvankäsittelyohjelma.
* [[AwesomeBump]] on tekstuurikartoitus muokkain.
* [[Material Maker]] on avoimen lähdekoodin prosessuaalinen tekstuuri luontityökalu, joka perustuu [[Godot]]-moottoriin.
Lisää ohjelmia löydät kuvankäsittely [[:Luokka:Kuvankäsittelyohjelmat|luokasta]].


===Kolmiulotteisia pelimoottoreita===
===Kolmiulotteisia pelimoottoreita===
* [[Crystal Space]]
* [[Crystal Space]]
* [[Irrlicht Engine]]  on joustava 3D-grafiikkamoottori ja kirjasto, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
* [[Irrlicht Engine]]  on joustava 3D-grafiikkamoottori ja kirjasto, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
* [[jMonkeyEngine]] on Javalla ja OpenGL:llä toteutettu avoimen lähdekoodin 3D-pelimoottori.
* [[jMonkeyEngine]] on Javalla ja OpenGL:llä toteutettu avoimen lähdekoodin 3D-pelimoottori ja muokkain.
* [[Lightfeather 3D]]
* [[Lightfeather 3D]]
* [[OGRE]] on joustava 3D-grafiikkamoottori ja kehys, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
* [[OGRE]] on joustava 3D-grafiikkamoottori ja muokkain, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
* [[Panda3D]] on 3D-grafiikkamoottori, jota ohjelmoidaan C++ ja Python-kielen avulla.
* [[Panda3D]] on 3D-grafiikkamoottori, jota ohjelmoidaan C++ ja Python-kielen avulla.
* [[Godot Engine]] on 2D- ja 3D-pelimoottori.
* [[Banshee 3D]] on 3D-pelimoottori ja muokkain. Ohjelma on vielä kehityksen alla.
* [https://rogueengine.io/ Rogue Engine] on ilmainen, suljetun lähdekoodin 3D-pelimoottori ja muokkain. Seon saatavissa [[AppImage]] -pakettina Linuxille.
====Ja kaupallisia ohjelmistoja====
* [[Axis Game Factory]] on Axis Game Factory LLC:n ammattitason luomis- ja karttamuokkain Unity 3D:lle.
* [[CryEngine]] on saksalaisen Crytekin julkaisema suljetun lähdekoodin pelimoottori, joka on saatavana esimerkiksi [[Valve]]n [[Steam]] [http://store.steampowered.com/app/220980/] -jakelualustasta edulliseen kuukausihintaan.
* [[Unity3D]] on Unity Technologin kehittämä osittain avoimen lähdekoodin ammattitason pelimoottori ja muokkain.
* [[Unreal Engine]] on osittain avoimen lähdekoodin ammattitason pelimoottori ja muokkain.


==Fysiikkamoottorit ja kirjastot==
==Fysiikkamoottorit ja kirjastot==
* [[Spring]] on 3D-fysiikkamoottori.
* [[Spring]] on 3D-fysiikkamoottori.
* [[Open Dynamics Engine]] [http://ode.org/] on avoimen lähdekoodin fysiikkakirjasto.
* [[Open Dynamics Engine]] on avoimen lähdekoodin fysiikkakirjasto.
* [[Chipmunk Physics]] [http://chipmunk-physics.net/] on fysiikkamoottori ja kirjasto, jota käytetään 2D-peleissä.
* [[Chipmunk Physics]] [http://chipmunk-physics.net/] on fysiikkamoottori ja kirjasto, jota käytetään 2D-peleissä.
* [[Bullet]] [http://bulletphysics.org/wordpress/] on fysiikkamoottori ja kirjasto, jota käytetään 3D-peleissä.
* [[Bullet]] on fysiikkamoottori ja kirjasto, jota käytetään 3D-peleissä.
* [[Newton Game Dynamics]] [http://newtondynamics.com/forum/newton.php] on fysiikkamoottori.
* [[Newton Game Dynamics]] [http://newtondynamics.com/forum/newton.php] on fysiikkamoottori.
* [[assimp]] [http://assimp.sourceforge.net] open asset import library
* [[Assimp]] eli Open asset import library
* [[SwinGame]] on pääasissa .Net-ohjelmistoille, Delphille ja FreePascalille kehitetty 2D-pelien tekemiseen tarkoitettu ohjelmakirjasto.
* [[SwinGame]] on pääasissa .Net-ohjelmistoille, Delphille ja FreePascalille kehitetty 2D-pelien tekemiseen tarkoitettu ohjelmakirjasto.
* [http://sol.gfxile.net/soloud/index.html SoLoud] on helppo käyttöinen, ilmainen ja siirrettävä c/c++ äänimoottori ja kirjasto peleille.
* [http://sol.gfxile.net/soloud/index.html SoLoud] on helppokäyttöinen, ilmainen ja siirrettävä C/C++-äänimoottori ja kirjasto peleille.


===Java pelikirjastot===
===Java pelikirjastot===
* [https://www.lwjgl.org/ LWJGL] 3 on kevyt [[Java]] pelikirjasto, joka tukee [[OpenGL]], [[OpenCL]] ja [[OpenAL]] kirjastoja.
* [https://www.lwjgl.org/ LWJGL] 3 on kevyt [[Java]] pelikirjasto, joka tukee [[OpenGL]], [[OpenCL]] ja [[OpenAL]] kirjastoja.
* [http://legacy.lwjgl.org/ LWJGL] 2 on kevyt [[Java]] pelikirjasto, joka tukee [[OpenGL]], [[OpenCL]] ja [[OpenAL]] kirjastoja.
* [http://legacy.lwjgl.org/ LWJGL] 2 on kevyt [[Java]] pelikirjasto, joka tukee [[OpenGL]], [[OpenCL]] ja [[OpenAL]] kirjastoja.
* [http://slick.ninjacave.com/slick-util/ Slick-Util] on pieni kirjasto, jolla voi ladata erilaisia ​​kuva-, ääni- ja fonttimuotoiluja LWJGL-kirjaston käyttöön.
* [http://slick.ninjacave.com/slick-util/ Slick-Util] on pieni jar-muotoinen kirjasto, jolla voi ladata erilaisia ​​kuva-, ääni- ja fonttimuotoiluja LWJGL-kirjaston käyttöön.


==Moduulit==
==Python moduulit==
* [[pyGame]] on avoimen lähdekoodin [[Python]]-ohjelmointikieleen tehty peliohjelmointimoduuli. Se sisältää [[SDL|SDL:n]] päälle toteutetut grafiikka- ja äänikirjastot.
* [[pyGame]] on avoimen lähdekoodin [[Python]]-ohjelmointikieleen tehty peliohjelmointimoduuli. Se sisältää [[SDL|SDL:n]] päälle toteutetut grafiikka- ja äänikirjastot.


==Suomenkielistä kirjallisuutta==
==Suomenkielistä kirjallisuutta==
* Ville Vuorela - Pelin tekijän käsikirja, ''BTJ-Kustannus 2007 (ISBN 978-951-692-661-5)''
* Tony Manninen: Pelisuunnittelijan käsikirja – ideasta eteenpäin, ''Kustannus Oy Rajalla (ISBN 978-952-5271-68-3)''
* Tony Manninen - Pelisuunnittelijan käsikirja, ideasta eteenpäin, ''Kustannus Oy Rajalla (ISBN 978-952-5271-68-3)''
* Ville Vuorela: Pelintekijän käsikirja, ''BTJ-Kustannus 2007 (ISBN 978-951-692-661-5)''


==Englanninkielistä kirjallisuutta==
==Englanninkielistä kirjallisuutta==
* Jesse Schell - The Art of Game Design: A book of lenses
* Flint Dille and John Zuur Platten: The Ultimate Guide to Video Game Writing and Design ''(ISBN 1-58065-066-X)''
* Adam Lake - Game Programming Gems 8
* Arnie Katz and Laurie Yates: Inside Electronic Game Design ''(ISBN 1-55958-669-9)''
* Flint Dille and John Zuur Platten - The Ultimate Guide to Video Game Writing and Design ''(ISBN: 1-58065-066-X)''
* Adam Lake: Game Programming Gems 8
* Marc Saltzman - Game Design Secrets of the Sages ''(ISBN: 1-56686-904-8)''
* Patrick O'Luanaigh: Game Design Complete ''(ISBN 1-933097-00-0)''
* Patrick O'Luanaigh - Game Design Complete ''(ISBN: 1-933097-00-0)''
* Arnie Katz and Laurie Yates - Inside Electronic Game Design ''(ISBN: 1-55958-669-9)''
* [http://www.pixelprospector.com/indie-resources/#inspiration-and-game-development PixelProspector’s Indie Resources] A nifty collection of resources for Indie Game Developers
* [http://www.pixelprospector.com/indie-resources/#inspiration-and-game-development PixelProspector’s Indie Resources] A nifty collection of resources for Indie Game Developers
* Marc Saltzman: Game Design Secrets of the Sages ''(ISBN 1-56686-904-8)''
* Jesse Schell: The Art of Game Design: A book of lenses


== Katso myös ==
== Katso myös ==
Rivi 132: Rivi 167:
Tätä sivua pyritään laajentamaan ajan kanssa. Tällä hetkellä työtä tekee lähinnä lahtis, joten apu on tarpeen. Sivusto saattaa näyttää aluksi listalta, mutta yritetään laajentaa tekstejä. Lopussa näkyvä Peliohjelmointiin liittyvät artikkelit on oivallinen listaus, jonka avulla pääset kätevästi tutustumaan wikin tarjoamaan tietoon.
Tätä sivua pyritään laajentamaan ajan kanssa. Tällä hetkellä työtä tekee lähinnä lahtis, joten apu on tarpeen. Sivusto saattaa näyttää aluksi listalta, mutta yritetään laajentaa tekstejä. Lopussa näkyvä Peliohjelmointiin liittyvät artikkelit on oivallinen listaus, jonka avulla pääset kätevästi tutustumaan wikin tarjoamaan tietoon.


{{Malline:Pelinteko}}
{{Pelinteko}}


[[Luokka: Pelikehitys]]
[[Luokka: Pelikehitys]]
[[Luokka: Portaalit]]
[[Luokka: Portaalit]]

Nykyinen versio 31. maaliskuuta 2022 kello 02.00

Tämän sivun tarkoitus on toimia lähtöpaikkana kaikille, jotka haluavat opetella peliohjelmointia Linux-ympäristössä. Monesti peliohjelmointiin liittyvät ohjeet ovat pelkkiä linkkilistauksia. Peliohjelmointi Linuxilla ilman tarkempaa tietoa on hankalaa. Tähän olisi tarkoitus luoda hyvä sivu, jossa kerrotaan mitä mitäkin ohjelma tekee ja mitä eri kirjastot tekevät. Tässä artikkelissa pyritään antamaan mahdollisimman yleispäteviä suosituksia, joiden pohjalta oman peli projektin ohjelmointi olisi helpompaa. Aloitetaan!

Millainen on Linux peliohjelmoijan näkökulmasta?[muokkaa]

Tiedon etsiminen voi aluksi tuntua vaikealta, mutta tämän sivun on tarkoitus olisi helpottaa sen löytämistä.

Mitä taitoja tarvitsen visuaalisen pelin luomiseksi?

Erilaisia ohjelmia mitä voidaan tarvita pelinteossa.

Pelisuunnittelu[muokkaa]

Kuinka pelin voi suunnitella? Piirtääkö ja hahmottelee peli-idean paperille vai käyttääkö siihen suunniteltuja ohjelmia. On pelin tekijästä kiinni, mitä ohjelmia tai tapoja haluaa käyttää.

Pelimoottorit tarjoavat valtavat edut pelikehittäjille. Tärkein niiden tarjoama toiminto on tietokonepelissä käytettävien ydintoiminto kirjasto. Nämä kirjastot sisältävät reaaliaikaisen 2D- tai 3D-renderointimoottorin grafiikalle, fysiikkamoottorin törmäystunnistuksella, hahmoanimaatiojärjestelmän, kohtauskaaviot, äänen, tekoälyn, ketjutuksen, verkon, syötteen, lokalisoinnin tuen, virheenkorjaustyökalut, integroinnin eri kielten kanssa ja suorituskyvyn seuranta- ja optimointityökalut.

Pelimoottoreilla on ratkaiseva rooli tietokonepelien nopeassa luomisessa ja kehittämisessä. Koska ne tarjoavat kokoelman visuaalisia kehittämistyökaluja ja ne esitellään usein integroidussa kehitysympäristössä ja näin ne nopeuttavat huomattavasti pelien kehitystä. Pelimoottoreita kutsutaan pelien väliohjelmiksi, koska ne tarjoavat joustavan ja uudelleenkäytettävän ohjelmistoalustan.

Pelimoottoreita ei välttämättä kuitenkaan käytetä pelien luomiseen. Vaan niitä käytetään monissa erilaisissa projekteissa, kuten koulutusohjelmistoissa, interaktiivisessa taiteessa ja tieteellisessä visualisoinnissa.

Saadaksemme käsityksen käytettävissä olevien ohjelmistojen laadusta olemme koonneet luetteloa Linux-pelimoottoreista.

Ohjelmointikielen valinta[muokkaa]

Python ja Lua[muokkaa]

Python ja Lua ovat korkeamman tason skriptauskieliä, joita voidaan käyttää peliohjelmoinnissa mm. lisäominaisuuksien tuottamiseen. Niillä voidaan tuottaa myös koko peli niin haluttaessa. Skriptauskielen syntaksi on ohjelmakohtainen ja ohjelman toiminnot ovat ennalta määritellyt. Python ja Lua ovat tulkattavia kieliä. Aiheeseen liittyvänä esimerkkinä World of Warcraft käyttää lisäosissaan Luaa skriptauskielenä. Luaa voi käyttää esimerkiksi peleissä, joissa tarvitaan automatisointia. Esimerkiksi Löve-pelimoottori, jota ohjelmoidaan Lua-skripti kieltä käyttäen.

Java[muokkaa]

Kolmiulotteinen Javalla ja LWJGL2-kirjastolla toteutettu yksinkertainen esimerkki pelimoottori.

Java on suosittu alustariippumaton ohjelmointikieli, joka käy myös pelinkehitykseen. Javaa voi opiskella helposti esimerkiksi Helsingin Yliopiston MOOC-verkkokurssilla [1] tai Youtubesta löytyvillä opetusvideoilla.

C++[muokkaa]

C++, SDL:n ja OpenGL:n opiskelusta löytyy Youtubesta todella hyviä opetusvideoita. Videoita voi hakea hakusanalla C++, SDL and openGL tai käydä thecplusplusguy nimisen henkilön kanavalla.

Pascal[muokkaa]

Tarjolla perinteinen tekstieditori ja komentorivipohjainen FreePascal tai graafiseen käyttöympäristöön pohjautuva Lazarus. 3D-pelimoottoreiksi löytyy mm. nxPascal ja Castle Game Engine.

Mono[muokkaa]

Mono on avoimen lähdekoodin toteutus Microsoftin kehittämästä .NET-arkkitehtuurista. Sitä käytetään nykyään enemmän suljetun lähdekoodin peleissä. Esimerkiksi Unity Technologiesin kehittämä monialustainen pelimoottori Unity 3D käyttää Monoa monissa Linux-pelien toteutuksissaan. Richard Stallman ja Free Software Foundation ovat useita kertoja varoitelleet Monon käytön olevan vaarallista Microsoftin hakemien patenttien vuoksi. Free Software Foundation suosittelee ettei vapaata ohjelmistoa rakenneta Monon tai C#:n varaan. Huomattuja ongelmia Monolla ja Unity 3D:llä tehdyissä peleissä on myös miten muistia käsitellään (memory limit 3.5gb).

Mikä on 2D-peli?[muokkaa]

2D-peli on kuvattu kaksiulotteisena kuvana pikseleita kuvasta muuttamalla. Kaksiulotteiset pelit on kuvattu edestä tai ylhäältä. Esimerkkejä kaksiulotteisista peleistä ovat mm. Mari0, joka kuvaa edestä päin kuvattua kaksiulotteista laatoista koostuvaa peliä tai The Mana World, jonka kuvakulma on kuvattu ylhäältä. Isometriset pelit kuuluvat myös kaksiulotteisiin peleihin. Ne on kuvattu yläviistosta. Isometrinen peli on esimerkiksi Unknown Horizons. Poikkeuksia tästä on myös esimerkiksi FEZ, jossa liikutaan kaksiulotteisilla tasoilla ja ympäristöä voi kääntää kolmiulotteisesti. Pelit koostuvat pääosin laatoista, joita voi olla erikokoisia ja muotoisia.

Esimerkki isometrisestä pelistä - Unknown Horizons
Esimerkki kaksiulotteisesta pelistä nimeltä Mari0. Peli on toteutettu Lua-skripti kieltä osaavalla Löve 2D-pelimoottorilla.


Kaksiulotteisia pelinkehitystyökaluja[muokkaa]

  • Solar2D on avoimen lähdekoodin Lua-pohjainen 2D-pelimoottori.
  • Godot Engine on 2D- ja 3D-pelimoottori.
  • Mokoi Gaming Alchera [2] on graafinen kaksiulotteisten pelien kehitystyökalu, joka sisältää SDL:n päälle toteutetut grafiikka-, ääni ja verkkokirjastot.
  • GameEditor on graafinen 2D-pelikehitystyökalu.
  • o.h.r.RPG.c.e on NES/SNES-tyylinen 2D-pelikehitystyökalu ja roolipelimoottori.

Kaksiulotteisia pelimoottoreita[muokkaa]

  • Löve on 2D-pelimoottori, jota ohjelmoidaan tulkattavan Lua-kielen avulla. Peli voidaan ohjelmoida pelkkää tekstimuokkainta käyttäen. Ohjelmakoodi suoritetaan komentoriviä käyttäen. Ohjelman koodi on helppolukuista ja sen oppii nopeasti. Löve-pelimoottorilla voi myös tehdä 3D-pelejä, tekniikkaa kutsutaan raycastingiksi [3]. Lövella ohjelmoituja pelejä ovat mm. Mari0 ja Move or Die.
  • Fife on isometrinen 2D-pelimoottori, jota ohjelmoidaan tulkattavan Python-kielen avulla. Fife:llä ohjelmoituja pelejä ovat mm. Unknown Horizons.
  • Flare on isometrinen roolipelimoottori, josta ainakin on julkaistu peli nimeltä The Empyrean Campaign.

Karttamuokkaimia[muokkaa]

  • Tiled on 2D-karttamuokkain, jolla voi luoda ortogonaalisia, isometrisiä ja kuusikulmaisia laatoista koostuvia 2D-karttoja peleihin.

Grafiikka[muokkaa]

  • Aseprite on avoimen lähdekoodin 2D-pikseligrafiikkaohjelma, jolla voit luoda animoituja spritejä ja pikseligrafiikkaa.
  • Pixelator on pieni ja älykäs ohjelmisto, joka muuntaa kuvat pikselitaide spriteiksi tai pikselikansikuviksi.

Mikä on 3D-peli?[muokkaa]

Esimerkki kolmiulotteisesta Tremulous pelistä.

3D-pelit kuvataan kolmiulotteisena.

Kolmiulotteisia pelinkehitystyökaluja[muokkaa]

Mallinnus[muokkaa]

  • Blender on monipuolinen 3D-mallinnusohjelma, josta löytyy myös animointimahdollisuus.
  • Bforartists on Blenderistä haarautunut 3D-mallinnusohjelma.
  • Neobarok on 3D-mallinnus- ja veistosovellus.
  • MakeHuman on erittäin helppokäyttöinen 3D-hahmomallinnusohjelma.
  • Dust3D on eläinhahmojen 3D-mallinnusohjelma.
  • ngPlant on 3D-mallinnusohjelma, jolla voi mallintaa esimerkiksi kasveja ja puita.
  • Arbaro on Javalla ohjelmoitu avoimen lähdekoodin kasvien ja puiden 3D-mallinnusohjelmisto.

Lisää mallinnusohjelmia löydät CAD-ohjelmia esittelevästä artikkelista ja 3D-mallinnusohjelmat luokasta.

Maastogeneraattorit[muokkaa]

  • TerraForge3D on avoimen lähdekoodin proseduraalinen maastogeneraattori ja teksturointityökalu.

Grafiikka ja tekstuurit[muokkaa]

  • GIMP on yleisimmin Linuxissa käytetty yleisin kuvankäsittelyohjelma.
  • AwesomeBump on tekstuurikartoitus muokkain.
  • Material Maker on avoimen lähdekoodin prosessuaalinen tekstuuri luontityökalu, joka perustuu Godot-moottoriin.

Lisää ohjelmia löydät kuvankäsittely luokasta.

Kolmiulotteisia pelimoottoreita[muokkaa]

  • Crystal Space
  • Irrlicht Engine on joustava 3D-grafiikkamoottori ja kirjasto, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
  • jMonkeyEngine on Javalla ja OpenGL:llä toteutettu avoimen lähdekoodin 3D-pelimoottori ja muokkain.
  • Lightfeather 3D
  • OGRE on joustava 3D-grafiikkamoottori ja muokkain, joka antaa kehittäjien tuottaa sovelluksia hyödyntäen laitteistokiihdytettyä 3D-grafiikkaa OpenGL:n avulla.
  • Panda3D on 3D-grafiikkamoottori, jota ohjelmoidaan C++ ja Python-kielen avulla.
  • Godot Engine on 2D- ja 3D-pelimoottori.
  • Banshee 3D on 3D-pelimoottori ja muokkain. Ohjelma on vielä kehityksen alla.
  • Rogue Engine on ilmainen, suljetun lähdekoodin 3D-pelimoottori ja muokkain. Seon saatavissa AppImage -pakettina Linuxille.

Ja kaupallisia ohjelmistoja[muokkaa]

  • Axis Game Factory on Axis Game Factory LLC:n ammattitason luomis- ja karttamuokkain Unity 3D:lle.
  • CryEngine on saksalaisen Crytekin julkaisema suljetun lähdekoodin pelimoottori, joka on saatavana esimerkiksi Valven Steam [4] -jakelualustasta edulliseen kuukausihintaan.
  • Unity3D on Unity Technologin kehittämä osittain avoimen lähdekoodin ammattitason pelimoottori ja muokkain.
  • Unreal Engine on osittain avoimen lähdekoodin ammattitason pelimoottori ja muokkain.

Fysiikkamoottorit ja kirjastot[muokkaa]

  • Spring on 3D-fysiikkamoottori.
  • Open Dynamics Engine on avoimen lähdekoodin fysiikkakirjasto.
  • Chipmunk Physics [5] on fysiikkamoottori ja kirjasto, jota käytetään 2D-peleissä.
  • Bullet on fysiikkamoottori ja kirjasto, jota käytetään 3D-peleissä.
  • Newton Game Dynamics [6] on fysiikkamoottori.
  • Assimp eli Open asset import library
  • SwinGame on pääasissa .Net-ohjelmistoille, Delphille ja FreePascalille kehitetty 2D-pelien tekemiseen tarkoitettu ohjelmakirjasto.
  • SoLoud on helppokäyttöinen, ilmainen ja siirrettävä C/C++-äänimoottori ja kirjasto peleille.

Java pelikirjastot[muokkaa]

Python moduulit[muokkaa]

  • pyGame on avoimen lähdekoodin Python-ohjelmointikieleen tehty peliohjelmointimoduuli. Se sisältää SDL:n päälle toteutetut grafiikka- ja äänikirjastot.

Suomenkielistä kirjallisuutta[muokkaa]

  • Tony Manninen: Pelisuunnittelijan käsikirja – ideasta eteenpäin, Kustannus Oy Rajalla (ISBN 978-952-5271-68-3)
  • Ville Vuorela: Pelintekijän käsikirja, BTJ-Kustannus 2007 (ISBN 978-951-692-661-5)

Englanninkielistä kirjallisuutta[muokkaa]

  • Flint Dille and John Zuur Platten: The Ultimate Guide to Video Game Writing and Design (ISBN 1-58065-066-X)
  • Arnie Katz and Laurie Yates: Inside Electronic Game Design (ISBN 1-55958-669-9)
  • Adam Lake: Game Programming Gems 8
  • Patrick O'Luanaigh: Game Design Complete (ISBN 1-933097-00-0)
  • PixelProspector’s Indie Resources A nifty collection of resources for Indie Game Developers
  • Marc Saltzman: Game Design Secrets of the Sages (ISBN 1-56686-904-8)
  • Jesse Schell: The Art of Game Design: A book of lenses

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]

Sivu on työn alla[muokkaa]

Tätä sivua pyritään laajentamaan ajan kanssa. Tällä hetkellä työtä tekee lähinnä lahtis, joten apu on tarpeen. Sivusto saattaa näyttää aluksi listalta, mutta yritetään laajentaa tekstejä. Lopussa näkyvä Peliohjelmointiin liittyvät artikkelit on oivallinen listaus, jonka avulla pääset kätevästi tutustumaan wikin tarjoamaan tietoon.

v  k  m
Peliohjelmointiin liittyvät artikkelit
 Yleiset  Peliohjelmointi Linuxilla | Musiikki ja äänet | Kuvankäsittely | Mallinnus | Lokalisointi
 2D 
 Pelimoottorit  Solar2D | Defold | Fife | LÖVE
  -Karttamuokkaimet  Tiled | OGMO Editor
 3D 
 Avoimet  Banshee 3D | Castle Game Engine | DarkPlaces | Defold | Godot Engine | Grit engine | Irrlicht Engine | id Tech (Quake) | ioquake3 | jMonkeyEngine | Lightfeather 3D | The Mirror | OGRE | O3DE | Panda3D | Range Engine | Serious | UPBGE | QFusion
 Suljetut  Axis Game Factory | CryEngine | Source | Unity3D | Unreal Engine
 Keskeytyneet  Crystal Space
  kuvankäsittely tekstuurikartoitus mallinnus 
 Kuvankäsittely  Gimp
  -Pikseligrafiikka  Aseprite | Pixelator
 Mallinnus  Blender | UPBGE | Bforartists | MakeHuman | Neobarok | ngPlant | ArbaroDust3D
  -Tekstuurikartoitus  AwesomeBump | Material Maker | Ptex
  -Tekstuurien luonti  ArmorLab
  -Pintakuviomaalaus  ArmorPaint
 Maastogeneraattorit  TerraForge3D
 Ohjelmointikielet 
  -Käännettävät  C | C++
  -Tulkattavat  Java | Python | Lua
  Ohjelmointimoduulit  pygame
  -Kirjastot  Assimp | OpenGL | Vulkan | SDL