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

Linux.fista
Siirry navigaatioon Siirry hakuun
Rivi 20: Rivi 20:
==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.
[[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.


===Java===
===Java===

Versio 11. heinäkuuta 2016 kello 19.24

Kaksiulotteinen peli - Mari0

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?

Isometrinen peli - Unknown Horizons

Aluksi vaikeahko, mutta tämän sivun on tarkoitus helpottaa sitä.

Mitä taitoja tarvitsen visuaalisen pelin luomiseksi?

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ä 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.

Java

Kolmiulotteinen Javalla ja LWJGL2-kirjastolla toteutettu yksinkertainen peli.

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.

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). 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.

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.

Kaksiulotteisia pelinkehitystyökaluja

Mokoi Gaming Alchera on graafinen 2D-pelikehitystyökalu.

Mokoi Gaming Alchera

Mokoi Gaming Alchera on graafinen kaksiulotteisten pelien kehitystyökalu, joka sisältää SDL:n päälle toteutetut grafiikka-, ääni ja verkkokirjastot. [1]

GameEditor

GameEditor on graafinen 2D-pelikehitystyökalu. [2]

o.h.r.RPG.c.e

o.h.r.RPG.c.e on NES/SNES-tyylinen 2D-pelikehitystyökalu ja roolipelimoottori. [3]

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 [4]. Lövella ohjelmoituja pelejä ovat mm. Mari0 ja Move or Die.

FIFE

  • Fife on isometrinen 2D-pelimoottori, jota ohjelmoidaan tulkattavan Python-kielen avulla. [5] Fife:llä ohjelmoituja pelejä ovat mm. Unknown Horizons.

Mikä on 3D-peli?

Kolmiulotteinen peli.

3D-pelit kuvataan kolmiulotteisena.

Kolmiulotteisia pelinkehitystyökaluja

Kaupalliset ohjelmistot

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

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.
  • Lightfeather 3D
  • OGRE on joustava 3D-grafiikkamoottori ja kehys, 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.

Fysiikkamoottorit ja kirjastot

  • Spring on 3D-fysiikkamoottori.
  • Open Dynamics Engine [7] on avoimen lähdekoodin fysiikkakirjasto.
  • Chipmunk Physics [8] on fysiikkamoottori ja kirjasto, jota käytetään 2D-peleissä.
  • Bullet [9] on fysiikkamoottori ja kirjasto, jota käytetään 3D-peleissä.
  • Newton Game Dynamics [10] on fysiikkamoottori.
  • assimp [11] open asset import library
  • SwinGame on pääasissa .Net-ohjelmistoille, Delphille ja FreePascalille kehitetty 2D-pelien tekemiseen tarkoitettu ohjelmakirjasto.
  • SoLoud on helppo käyttöinen, ilmainen ja siirrettävä c/c++ äänimoottori ja kirjasto peleille.

Java pelikirjastot

Moduulit

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

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)

Englanninkielistä kirjallisuutta

  • Jesse Schell - The Art of Game Design: A book of lenses
  • Adam Lake - Game Programming Gems 8
  • Flint Dille and John Zuur Platten - The Ultimate Guide to Video Game Writing and Design (ISBN: 1-58065-066-X)
  • Marc Saltzman - Game Design Secrets of the Sages (ISBN: 1-56686-904-8)
  • 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)
  • PixelProspector’s Indie Resources A nifty collection of resources for Indie Game Developers

Katso myös

Aiheesta muualla

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.

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