Portaali:Peliohjelmointi Linuxilla
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?
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.
- Suunnittelu
- Ohjelmointikielen opettelu
- Ohjelmointiympäristö ohjelmia mm: NetBeans, Eclipse, jMonkeyEngine
- Kuvankäsittelyohjelmia, mm. GIMP, AwesomeBump
- Pikselinkäsittelyohjelmia, mm. Aseprite
- Ääni
- Mallinnusohjelmia. mm. Blender, MakeHuman
- Lokalisointi
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ää.
Ohjelmointikielen valinta
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ä 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 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++
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
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
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?
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.
Kaksiulotteisia pelinkehitystyökaluja
- Corona 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.
Karttamuokkaimia
- Tiled on 2D-karttamuokkain, jolla voi luoda ortogonaalisia, isometrisiä ja kuusikulmaisia laatoista koostuvia 2D-karttoja peleihin.
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 [3]. Lövella ohjelmoituja pelejä ovat mm. Mari0 ja Move or Die.
FIFE
- Fife on isometrinen 2D-pelimoottori, jota ohjelmoidaan tulkattavan Python-kielen avulla. Fife:llä ohjelmoituja pelejä ovat mm. Unknown Horizons.
Mikä on 3D-peli?
3D-pelit kuvataan kolmiulotteisena.
Kolmiulotteisia pelinkehitystyökaluja
- Syntensity on avoimen lähdekoodin 3D-peli ja pelinkehitystyökalu.
- Platinum Arts Sandbox Game Maker on avoimen lähdekoodin kaksi- ja kolmiulotteisten pelien suunnittelu- ja hiekkalaatikko-ohjelma.
Mallinnus
- MakeHuman on erittäin helppokäyttöinen 3D-mallinnusohjelma, jolla voi mallintaa ja animoida hahmoja.
- Neobarok on 3D-mallinnus- ja veistosovellus.
- Blender on monipuolinen 3D-mallinnusohjelma, josta löytyy myös animointimahdollisuus.
- 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.
Grafiikka
- GIMP on yleisimmin Linuxissa käytetty kuvankäsittelyohjelma.
- Aseprite on avoimen lähdekoodin 2D-pikseligrafiikkaohjelma, jolla voit luoda animoituja spritejä ja pikseligrafiikkaa.
- AwesomeBump on tekstuurikartoitus muokkain.
Lisää ohjelmia löydät kuvankäsittely luokasta.
Kaupalliset ohjelmistot
- 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 pelimoottori ja muokkain
Kolmiulotteisia pelimoottoreita
- 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.
Fysiikkamoottorit ja kirjastot
- 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
Python moduulit
Suomenkielistä kirjallisuutta
- 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
- 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
Aiheesta muualla
- Pelitieto.net - Pelien peruskurssi
- Avoin ohjelmistokehitys - seminaari (hyviä pdf-tiedostoja aiheesta)
- sourceforge.net joka on maailman suurin avoimen lähdekoodin ohjelmistokehittäjien yhteisö.
- Indie Game Development Guide
Sivu on työn alla
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.