Ero sivun ”2D-peliohjelmoinnin aloitusopas Linuxille” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
tekstin järjestelyä loogisemmaksi
p )
 
(2 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 1: Rivi 1:
2D-tietokonepeli voi koostua monista eri komponenteista, jotka yhdessä luovat pelikokemuksen. Tässä ovat tärkeimmät tavat ja osat, joista tällainen peli tyypillisesti muodostuu:
2D-tietokonepeli koostuu useista komponenteista, jotka luovat yhdessä interaktiivisen kokemuksen. Tämä opas esittelee nämä osat ja esittelee suosituimmat avoimen lähdekoodin työkalut Linux-ympäristöön.


== 2D-Pelin rakenne – Mistä peli koostuu? ==
== 2D-Pelin rakenne – Mistä peli koostuu? ==
Pelin perusrakenne muodostuu komponenteista, jotka huolehtivat kaikesta visuaalisesta esityksestä sääntöjen toteuttamiseen.


=== Pelimoottori (Game Engine) ===
=== Pelimoottori (Game Engine) ===
Pelin ydin ja runko. Se tarjoaa työkalut ja kirjastot grafiikan piirtämiseen, fysiikan laskemiseen, äänen toistamiseen ja käyttöliittymän hallintaan.
Pelimoottori on pelin ydin ja runko. Se on kattava ohjelmistoalusta, joka tarjoaa työkalut ja kirjastot grafiikan piirtämiseen, fysiikan laskemiseen, äänen toistamiseen ja käyttöliittymän hallintaan.
* Esimerkkejä: [[Unity]], [[Godot]], [[GameMaker Studio]] tai oma räätälöity moottori.
* Esimerkkejä: Godot, Unity, GameMaker Studio.
 
2D-tietokonepeli voi koostua monista eri komponenteista, jotka yhdessä luovat pelikokemuksen. Tässä ovat tärkeimmät tavat ja osat, joista tällainen peli tyypillisesti muodostuu:
 


=== Pelilogiikka (Game Logic) ===  
=== Pelilogiikka (Game Logic) ===  
Säännöt, mekaniikat ja koodi, jotka määrittelevät, miten peli toimii.
Pelilogiikka sisältää säännöt, mekaniikat ja koodin, jotka määrittelevät, miten peli toimii ja miten pelin tilaa muutetaan.
* Pelin tila (Game State): Kuten nykyinen taso, pelaajan pistemäärä, hahmojen sijainnit ja elämä.
* Pelin tila (Game State): Kuten pelaajan sijainnit, pistemäärät ja elämä.
* Päivityssilmukka (Game Loop): Jatkuva silmukka, joka tyypillisesti suorittaa seuraavat vaiheet: syötteen käsittely, tilojen päivitys (fysiikka, tekoäly), ja grafiikan piirtäminen (renderöinti).
* Päivityssilmukka (Game Loop): Jatkuva prosessi tai silmukka, joka hoitaa järjestyksessä syötteen käsittelyn, tilojen päivityksen (fysiikka, tekoäly) ja grafiikan piirtämisen (renderöinti).


=== Grafiikka ja resurssit (Assets) ===
=== Grafiikka ja resurssit (Assets) ===
Rivi 22: Rivi 20:


==== Pikseligrafiikka (Visuaalinen tyyli) ====
==== Pikseligrafiikka (Visuaalinen tyyli) ====
Pikseligrafiikka (tai Pixel Art) on tyyppi grafiikkaresurssia, jota 2D-peli käyttää. Se liittyy siihen, miltä peli näyttää, ei siihen, miten se on koodattu tai miten se toimii.
Pikseligrafiikka (Pixel Art) on tyyli tai tekniikka, jota käytetään pelin grafiikkaresursseissa. Se liittyy siihen, miltä peli näyttää, ei siihen, miten se on koodattu tai miten se toimii.


===== Mitä pikseligrafiikka on? =====
===== Mitä pikseligrafiikka on? =====
Rivi 63: Rivi 61:
* Laatat ja kartat (Tiles and Tilemaps): Erityisesti tasohyppelypeleissä ja roolipeleissä (RPG) maailma rakennetaan usein pienistä neliönmuotoisista kuvista eli laatoista. Tilemap on taulukko tai verkko, joka kertoo, mihin mikäkin laatta sijoitetaan.
* Laatat ja kartat (Tiles and Tilemaps): Erityisesti tasohyppelypeleissä ja roolipeleissä (RPG) maailma rakennetaan usein pienistä neliönmuotoisista kuvista eli laatoista. Tilemap on taulukko tai verkko, joka kertoo, mihin mikäkin laatta sijoitetaan.
* Koordinaatisto: 2D-peli sijoittuu kaksiulotteiseen tilaan, jossa sijainnit määritellään (X, Y) -koordinaateilla.
* Koordinaatisto: 2D-peli sijoittuu kaksiulotteiseen tilaan, jossa sijainnit määritellään (X, Y) -koordinaateilla.
2D-tietokonepeli voi koostua monista eri komponenteista, jotka yhdessä luovat pelikokemuksen. Tässä ovat tärkeimmät tavat ja osat, joista tällainen peli tyypillisesti muodostuu:


=== Fysiikka ja törmäykset (Physics and Collision) ===
=== Fysiikka ja törmäykset (Physics and Collision) ===
* Törmäyksen tunnistus (Collision Detection): Määrittää, milloin kaksi peliobjektia (esim. pelaaja ja seinä) koskettavat toisiaan.
* Törmäyksen tunnistus (Collision Detection): Määrittää, milloin kaksi peliobjektia (esim. pelaaja ja seinä) koskettavat toisiaan.
* Törmäysvaste (Collision Response): Mitä tapahtuu törmäyksen jälkeen (esim. estetään liikkuminen, hahmo menettää elämää). Voi olla yksinkertaista laatikkomallia (AABB) tai tarkempia muotoja.
* Törmäysvaste (Collision Response): Mitä tapahtuu törmäyksen jälkeen (esim. liikkumisen esto tai vaurion aiheuttaminen).


=== Ääni ja musiikki (Audio and Music) ===
=== Ääni ja musiikki (Audio and Music) ===
* Taustamusiikki (BGM): Luomaan tunnelmaa.
* Taustamusiikki (BGM): Luomaan tunnelmaa.
* Ääniefektit (Sound Effects / SFX): Kuten hyppäämisen ääni, aseen laukaus, vihollisen kuolema.
* Ääniefektit (Sound Effects / SFX): Kuten hyppäämisen ääni, aseen laukaus tai vihollisen kuolema.


=== Syöte ja ohjaus (Input and Control) ===
=== Syöte ja ohjaus (Input and Control) ===
Rivi 86: Rivi 82:
|+  
|+  
|-
|-
! Ominaisuus !! Selitys
! Ominaisuus !! Pelimoottori (Engine) !! Pelikehys (Framework)
|-
|-
| Integroitu editori || Sisältää graafisen käyttöliittymän, jossa voit sijoittaa objekteja, säätää valaistusta, luoda animaatioita ja koota tasoja koodia kirjoittamatta.
| Perusidea || Kattava alusta (Kuin valmis talon runko). || Kirjastojen kokoelma (Kuin työkaluja ja raaka-aineita).
|-
|-
| Kattava toiminnallisuus || Sisältää valmiiksi renderöintimoottorin, fysiikkamoottorin, äänenhallinnan, käyttöliittymäjärjestelmän (UI) ja usein oman komentosarjakielen.
| Editori || Sisältää graafisen editorin (visuaalinen kehitys). || Ei sisällä editoria (Kaikki tehdään koodaamalla).
|-
|-
| Abstraktio || Abstrahoi suurimman osan matalan tason (low-level) koodauksesta. Sinun ei tarvitse tietää, miten grafiikkapiiri piirtää pikseleitä ruudulle.
| Fysiikka/U || Valmiina ja integroitu || Kehittäjän on rakennettava/integroitava itse.
|-
|-
| Kehityksen nopeus || Kehitysprosessi on yleensä nopeampi, koska suurin osa perustoiminnoista on valmiina.
| Kontrolli || Vähemmän (Sidottu moottorin arkkitehtuuriin). || Enemmän (Täysi matalan tason kontrolli koodiin).
|-
|-
| Esimerkkejä || [[Godot]], [[Unity3D|Unity]], [[Unreal Engine]], [[GameMaker Studio]].
| Esimerkkejä || [[Godot]], [[Unity3D|Unity]] || MonoGame, LÖVE, LibGDX
|}
|}
Pelimoottori on kuin valmis omakotitalon runko, jossa on jo putket, sähköt ja keittiön peruskalusteet asennettuna. Sinun tehtäväsi on sisustaa ja muokata sitä tarpeidesi mukaan.
Pelimoottori on kuin valmis omakotitalon runko, jossa on jo putket, sähköt ja keittiön peruskalusteet asennettuna. Sinun tehtäväsi on sisustaa ja muokata sitä tarpeidesi mukaan.
Rivi 103: Rivi 99:
=== Godot Engine (Suosituin) ===
=== Godot Engine (Suosituin) ===
[[Godot]] on tällä hetkellä selvästi suosituin ja käytetyin täysin avoimen lähdekoodin pelimoottori.
[[Godot]] on tällä hetkellä selvästi suosituin ja käytetyin täysin avoimen lähdekoodin pelimoottori.
* Pääkieli: GDScript (Python-tyyppinen), C#.
* Lisenssi: MIT-lisenssi (erittäin salliva, voit käyttää sitä kaupallisiin peleihin ilman maksuja).
* Lisenssi: MIT-lisenssi (erittäin salliva, voit käyttää sitä kaupallisiin peleihin ilman maksuja).
* 2D-vahvuudet: Godot on tunnettu erinomaisesta natiivista 2D-tuesta. Sillä on oma 2D-renderöinti, TileMap-editorit, integroitu editori ja sisäänrakennettu 2D-fysiikkamoottori, sekä helppo oppimiskäyrä.
* 2D-vahvuudet: Godot on tunnettu erinomaisesta natiivista 2D-tuesta. Sillä on oma 2D-renderöinti, TileMap-editorit, integroitu editori ja sisäänrakennettu 2D-fysiikkamoottori, sekä helppo oppimiskäyrä.
Rivi 111: Rivi 108:
[[Defold]] on erittäin tehokas, kevyt ja monialustainen pelimoottori. Vaikka sen kehitys alkoi suljetulla lähdekoodilla, se siirtyi myöhemmin täysin avoimeen lähdekoodiin ja on nykyään ruotsalaisen säätiön ylläpitämä.
[[Defold]] on erittäin tehokas, kevyt ja monialustainen pelimoottori. Vaikka sen kehitys alkoi suljetulla lähdekoodilla, se siirtyi myöhemmin täysin avoimeen lähdekoodiin ja on nykyään ruotsalaisen säätiön ylläpitämä.
* Pääkieli: Lua.
* Pääkieli: Lua.
* Vahvuudet: Soveltuu erinomaisesti mobiilipeleihin ja HTML5-peleihin. Se on tunnettu nopeasta suorituskyvystä ja kevyestä paketista. Se käyttää komponenttipohjaista arkkitehtuuria.
* Vahvuudet: Soveltuu erinomaisesti mobiilipeleihin ja HTML5-peleihin. Se on tunnettu nopeasta suorituskyvystä ja kevyestä paketista. Se käyttää komponenttipohjaista arkkitehtuuria.  
* Lisenssi: Käyttäjäystävällinen lisenssi, joka mahdollistaa kaupallisen käytön.
* Lisenssi: Käyttäjäystävällinen lisenssi, joka mahdollistaa kaupallisen käytön.


Rivi 129: Rivi 126:
! Ohjelma !! Pääkieli !! Soveltuu parhaiten
! Ohjelma !! Pääkieli !! Soveltuu parhaiten
|-
|-
| Defold || Lua || Kevyet, nopeat mobiili- ja HTML5-pelit.
| [[Defold]] || [[Lua]] || Kevyet, nopeat mobiili- ja HTML5-pelit.
|-
|-
| LÖVE || Lua || Koodausta ja matalan tason kontrollia arvostavat harrastelijat.
| [[LÖVE]] || [[Lua]] || Koodausta ja matalan tason kontrollia arvostavat harrastelijat.
|-
|-
| Ren'Py || Python || Visuaaliset novellit ja tarinapohjaiset pelit.
| [[Ren'Py]] || [[Python]] || Visuaaliset novellit ja tarinapohjaiset pelit.
|-
|-
| GDevelop || Visuaalinen (No-Code || Täydellinen aloittelijoille ja visuaaliseen ohjelmointiin.
| [[GDevelop]] || Visuaalinen (No-Code) || Täydellinen aloittelijoille ja visuaaliseen ohjelmointiin.
|}
|}


== Pelikehykset: Täysi Kontrolli Koodiin ==
== Pelikehykset: Täysi kontrolli koodiin ==
Pelikehys on kirjastojen kokoelma, joka tarjoaa joukon työkaluja ja funktioita tiettyjen tehtävien suorittamiseen (kuten grafiikan piirtämiseen ja syötteen käsittelyyn), mutta se ei sisällä valmista editoria tai kaikkia valmiita järjestelmiä.
Pelikehykset antavat kehittäjälle täyden vapauden ja edellyttävät kaikkien komponenttien (kuten fysiikan ja käyttöliittymän) koodaamista itse. Pelikehykset ovat siis kirjastojen kokoelma, joka tarjoaa joukon työkaluja ja funktioita tiettyjen tehtävien suorittamiseen (kuten grafiikan piirtämiseen ja syötteen käsittelyyn), mutta se ei sisällä valmista editoria tai kaikkia valmiita järjestelmiä.


{| class="wikitable"
{| class="wikitable"
Rivi 160: Rivi 157:
=== MonoGame / FNA (C#-kehittäjille) ===  
=== MonoGame / FNA (C#-kehittäjille) ===  
[[MonoGame]] ja [[FNA]] eivät ole varsinaisia pelimoottoreita, vaan pelikehyskirjastoja (frameworks). Ne ovat avoimen lähdekoodin toteutuksia Microsoftin vanhasta XNA-kehitysympäristöstä. Se Tarjoaa täyden kontrollin koodiin. Se on kevyt ja soveltuu hyvin retrotyylisiin ja yksinkertaisiin peleihin.
[[MonoGame]] ja [[FNA]] eivät ole varsinaisia pelimoottoreita, vaan pelikehyskirjastoja (frameworks). Ne ovat avoimen lähdekoodin toteutuksia Microsoftin vanhasta XNA-kehitysympäristöstä. Se Tarjoaa täyden kontrollin koodiin. Se on kevyt ja soveltuu hyvin retrotyylisiin ja yksinkertaisiin peleihin.
* Pääkieli: C#.
* Lisenssi: Microsoft Public License (Ms-PL) / MIT-lisenssi (FNA).
* Lisenssi: Microsoft Public License (Ms-PL) / MIT-lisenssi (FNA).
* Vahvuudet: Soveltuu erinomaisesti C#-kielellä koodaaville kehittäjille, jotka haluavat täyden kontrollin pelin toiminnasta. Se on valinta monille retrotyylisille peleille.
* Vahvuudet: Soveltuu erinomaisesti C#-kielellä koodaaville kehittäjille, jotka haluavat täyden kontrollin pelin toiminnasta. Se on valinta monille retrotyylisille peleille.
Rivi 166: Rivi 164:
===  LibGDX (Java-kehittäjille) ===  
===  LibGDX (Java-kehittäjille) ===  
[[LibGDX]] on Java-pohjainen, avoimen lähdekoodin kehyskirjasto, joka keskittyy monialustaisuuteen (Android, iOS, selain, työpöytä). Se on nopea ja tehokas, hyödyntää Java-ekosysteemiä. Vaatii enemmän koodausta.
[[LibGDX]] on Java-pohjainen, avoimen lähdekoodin kehyskirjasto, joka keskittyy monialustaisuuteen (Android, iOS, selain, työpöytä). Se on nopea ja tehokas, hyödyntää Java-ekosysteemiä. Vaatii enemmän koodausta.
* Pääkieli: [[Java]].
* Lisenssi: Apache 2.0 -lisenssi.
* Lisenssi: Apache 2.0 -lisenssi.
* Vahvuudet: Erittäin joustava ja kevyt, sopii kehittäjille, jotka ovat tottuneet Javaan ja haluavat luoda pelejä, jotka toimivat laajalla laitekirjolla. Vaatii hieman enemmän itse rakentamista kuin Godot.
* Vahvuudet: Erittäin joustava ja kevyt, sopii kehittäjille, jotka ovat tottuneet Javaan ja haluavat luoda pelejä, jotka toimivat laajalla laitekirjolla. Vaatii hieman enemmän itse rakentamista kuin Godot.
Rivi 171: Rivi 170:
=== LÖVE (2D Game Framework) ===
=== LÖVE (2D Game Framework) ===
[[LÖVE]] (tai Love2D) on erittäin suosittu valinta niille, jotka haluavat täyden kontrollin ja nauttivat koodaamisesta. Se ei ole täysi moottori vaan enemmänkin kehys.
[[LÖVE]] (tai Love2D) on erittäin suosittu valinta niille, jotka haluavat täyden kontrollin ja nauttivat koodaamisesta. Se ei ole täysi moottori vaan enemmänkin kehys.
* Pääkieli: Lua.
* Pääkieli: [[Lua]].
* Vahvuudet: Erittäin kevyt, nopea prototyyppien tekemiseen ja sopii aloittelijoille, jotka haluavat oppia ohjelmoimaan pelejä alusta asti. Se tarjoaa vain grafiikan, äänen ja syötteen toiminnot, ja käyttäjän on koodattava fysiikka ja pelilogiikka itse (tai integroitava siihen ulkoisia kirjastoja).
* Vahvuudet: Erittäin kevyt, nopea prototyyppien tekemiseen ja sopii aloittelijoille, jotka haluavat oppia ohjelmoimaan pelejä alusta asti. Se tarjoaa vain grafiikan, äänen ja syötteen toiminnot, ja käyttäjän on koodattava fysiikka ja pelilogiikka itse (tai integroitava siihen ulkoisia kirjastoja).


== Resurssien ja maailman luominen Linuxilla ==
== Resurssien ja maailman luominen Linuxilla ==
Pelin koostumus vaatii myös työkaluja resurssien luomiseen, ja myös näihin on erinomaisia avoimen lähdekoodin vaihtoehtoja:
Linux-kehitysympäristössä voidaan hyödyntää useita erinomaisia avoimen lähdekoodin työkaluja resurssien luomiseen:


{| class="wikitable sortable"
{| class="wikitable sortable"

Nykyinen versio 23. marraskuuta 2025 kello 20.55

2D-tietokonepeli koostuu useista komponenteista, jotka luovat yhdessä interaktiivisen kokemuksen. Tämä opas esittelee nämä osat ja esittelee suosituimmat avoimen lähdekoodin työkalut Linux-ympäristöön.

2D-Pelin rakenne – Mistä peli koostuu?

[muokkaa]

Pelin perusrakenne muodostuu komponenteista, jotka huolehtivat kaikesta visuaalisesta esityksestä sääntöjen toteuttamiseen.

Pelimoottori (Game Engine)

[muokkaa]

Pelimoottori on pelin ydin ja runko. Se on kattava ohjelmistoalusta, joka tarjoaa työkalut ja kirjastot grafiikan piirtämiseen, fysiikan laskemiseen, äänen toistamiseen ja käyttöliittymän hallintaan.

  • Esimerkkejä: Godot, Unity, GameMaker Studio.

Pelilogiikka (Game Logic)

[muokkaa]

Pelilogiikka sisältää säännöt, mekaniikat ja koodin, jotka määrittelevät, miten peli toimii ja miten pelin tilaa muutetaan.

  • Pelin tila (Game State): Kuten pelaajan sijainnit, pistemäärät ja elämä.
  • Päivityssilmukka (Game Loop): Jatkuva prosessi tai silmukka, joka hoitaa järjestyksessä syötteen käsittelyn, tilojen päivityksen (fysiikka, tekoäly) ja grafiikan piirtämisen (renderöinti).

Grafiikka ja resurssit (Assets)

[muokkaa]

Nämä ovat pelin visuaalisia ja äänellisiä elementtejä.

  • Sprites: 2D-kuvat, joita käytetään hahmojen, esineiden, vihollisten ja monien muiden pelin elementtien esittämiseen. Nämä voivat olla staattisia tai animoituja.
  • Taustat (Backgrounds): Kuvat tai laatoitukset (tiles), jotka muodostavat pelimaailman maiseman. Usein käytetään parallaksi-vieritystä (Parallax Scrolling) luomaan syvyysvaikutelmaa.
  • Käyttöliittymä (UI Assets): Valikot, painikkeet, elämäpalkit, pistenäytöt ja muut elementit, jotka mahdollistavat pelaajan vuorovaikutuksen pelin kanssa.

Pikseligrafiikka (Visuaalinen tyyli)

[muokkaa]

Pikseligrafiikka (Pixel Art) on tyyli tai tekniikka, jota käytetään pelin grafiikkaresursseissa. Se liittyy siihen, miltä peli näyttää, ei siihen, miten se on koodattu tai miten se toimii.

Mitä pikseligrafiikka on?
[muokkaa]

Pikseligrafiikka on digitaalisen taiteen muoto, jossa kuvan yksittäiset pikselit ovat selvästi erotettavissa ja niitä käsitellään tietoisesti manuaalisesti pienillä resoluutioilla.

Ominaisuus Pikseligrafiikka Muu 2D-Grafiikka (Esim. Vektorigrafiikka, Piirretty)
Koostumus Kuva muodostuu suurista, näkyvistä neliömäisistä pikseleistä. Kuva on usein piirretty korkeammalla resoluutiolla, jolloin reunat ovat pehmeitä (anti-aliasing).
Skaalaus Vaatii usein erityistä skaalausta (esim. nearest neighbor), jotta pikselit säilyvät terävinä ja suurina. Voidaan skaalata vapaammin menettämättä laatua (erityisesti vektoripohjainen grafiikka).
Tyyli Retroa, 8-bittistä tai 16-bittistä konsolia muistuttava estetiikka (esim. Terraria, Stardew Valley). Moderni, piirretty tai maalattu tyyli (esim. Ori and the Blind Forest, Cuphead).

Ero on siis seuraava:

  • 2D-peli on kuin auto (rakenne, moottori, pyörät, ohjausmekanismi).
  • Pikseligrafiikka on auton maalipinta tai muotoilu (visuaalinen tyyli).

Pikseligrafiikkapeli koostuu samoista peruskomponenteista kuin mikä tahansa muukin 2D-peli, mutta sen grafiikkaresurssit ovat tyyliltään pikselöityjä.

Pikseligrafiikka on yksi monista mahdollisista visuaalisista tyyleistä tai kuvaustekniikoista, joita pelimoottori voi käsitellä.

Pikseligrafiikan sijoittuminen
Kategoria Osa-alue Esimerkki pikseligrafiikkapelissä
Pelin Koostumus (Rakenteellinen) Pelimoottori (Unity, Godot) Käsittelee pikselöityjä spritejä ja piirtää ne ruudulle.
Pelin Koostumus (Rakenteellinen) Pelilogiikka (Koodi) Ei muutu, vaikka grafiikka olisi pikselöityä tai vektorigrafiikkaa.
Pelin Koostumus (Sisältö) Grafiikka ja Resurssit Pikseligrafiikka (Sprites, Tilemapit yms.) on itse resurssi.

Toisin sanoen, kun kehittäjä tekee päätöksen pikseligrafiikan käytöstä, se on taiteellinen ja resurssipäätös, joka vaikuttaa siihen, miltä pelin sprites ja taustat näyttävät. Se ei muuta tapaa, jolla pelin fysiikkalaskenta tai syötteiden käsittely on rakennettu.

Pelimaailman rakenne

[muokkaa]
  • Laatat ja kartat (Tiles and Tilemaps): Erityisesti tasohyppelypeleissä ja roolipeleissä (RPG) maailma rakennetaan usein pienistä neliönmuotoisista kuvista eli laatoista. Tilemap on taulukko tai verkko, joka kertoo, mihin mikäkin laatta sijoitetaan.
  • Koordinaatisto: 2D-peli sijoittuu kaksiulotteiseen tilaan, jossa sijainnit määritellään (X, Y) -koordinaateilla.

Fysiikka ja törmäykset (Physics and Collision)

[muokkaa]
  • Törmäyksen tunnistus (Collision Detection): Määrittää, milloin kaksi peliobjektia (esim. pelaaja ja seinä) koskettavat toisiaan.
  • Törmäysvaste (Collision Response): Mitä tapahtuu törmäyksen jälkeen (esim. liikkumisen esto tai vaurion aiheuttaminen).

Ääni ja musiikki (Audio and Music)

[muokkaa]
  • Taustamusiikki (BGM): Luomaan tunnelmaa.
  • Ääniefektit (Sound Effects / SFX): Kuten hyppäämisen ääni, aseen laukaus tai vihollisen kuolema.

Syöte ja ohjaus (Input and Control)

[muokkaa]

Pelin on käsiteltävä pelaajan syötteet.

  • Syötemekanismi: Käsittelee näppäimistön painallukset, hiiren liikkeet/klikkaukset tai ohjaimen komennot. Nämä muunnetaan sitten pelin sisäisiksi toiminnoiksi (liiku eteenpäin, hyppää, ammu).

Lyhyesti sanottuna: 2D-peli on kokoelma koodia (pelimoottori ja logiikka) ja sisältöä (grafiikka, ääni), jotka toimivat yhdessä luoden interaktiivisen kokemuksen kaksiulotteisessa tilassa.

Pelimoottori vs. Kehys – Työkalun valinta

[muokkaa]

Pelimoottorin (Game Engine) ja pelikehyksen (Game Framework) ero on keskeinen pelinkehityksen termistössä, ja se liittyy ensisijaisesti siihen, kuinka paljon esivalmisteltua toiminnallisuutta ne tarjoavat ja kuinka paljon kontrollia ne jättävät kehittäjälle.

Ominaisuus Pelimoottori (Engine) Pelikehys (Framework)
Perusidea Kattava alusta (Kuin valmis talon runko). Kirjastojen kokoelma (Kuin työkaluja ja raaka-aineita).
Editori Sisältää graafisen editorin (visuaalinen kehitys). Ei sisällä editoria (Kaikki tehdään koodaamalla).
Fysiikka/U Valmiina ja integroitu Kehittäjän on rakennettava/integroitava itse.
Kontrolli Vähemmän (Sidottu moottorin arkkitehtuuriin). Enemmän (Täysi matalan tason kontrolli koodiin).
Esimerkkejä Godot, Unity MonoGame, LÖVE, LibGDX

Pelimoottori on kuin valmis omakotitalon runko, jossa on jo putket, sähköt ja keittiön peruskalusteet asennettuna. Sinun tehtäväsi on sisustaa ja muokata sitä tarpeidesi mukaan.

Pelimoottori – Kehitys nopeasti käyntiin

[muokkaa]

Godot Engine (Suosituin)

[muokkaa]

Godot on tällä hetkellä selvästi suosituin ja käytetyin täysin avoimen lähdekoodin pelimoottori.

  • Pääkieli: GDScript (Python-tyyppinen), C#.
  • Lisenssi: MIT-lisenssi (erittäin salliva, voit käyttää sitä kaupallisiin peleihin ilman maksuja).
  • 2D-vahvuudet: Godot on tunnettu erinomaisesta natiivista 2D-tuesta. Sillä on oma 2D-renderöinti, TileMap-editorit, integroitu editori ja sisäänrakennettu 2D-fysiikkamoottori, sekä helppo oppimiskäyrä.
  • Ohjelmointi: Käyttää omaa GDScript-kieltään (Python-tyyppinen, helppo oppia), mutta tukee myös C#, C++ ja muita kieliä.
  • Yhteisö: Aktiivinen, jatkuvasti kasvava yhteisö takaa hyvän dokumentaation ja tuen.

Defold Engine

[muokkaa]

Defold on erittäin tehokas, kevyt ja monialustainen pelimoottori. Vaikka sen kehitys alkoi suljetulla lähdekoodilla, se siirtyi myöhemmin täysin avoimeen lähdekoodiin ja on nykyään ruotsalaisen säätiön ylläpitämä.

  • Pääkieli: Lua.
  • Vahvuudet: Soveltuu erinomaisesti mobiilipeleihin ja HTML5-peleihin. Se on tunnettu nopeasta suorituskyvystä ja kevyestä paketista. Se käyttää komponenttipohjaista arkkitehtuuria.
  • Lisenssi: Käyttäjäystävällinen lisenssi, joka mahdollistaa kaupallisen käytön.

Ren'Py (Visual Novels)

[muokkaa]

Ren'Py on hyvin erikoistunut avoimen lähdekoodin moottori, joka on suunniteltu nimenomaan visuaalisten novellien (Visual Novels) ja simulaatiopelien luomiseen.

  • Pääkieli: Python (erityisellä, yksinkertaistetulla komentosarjakielellä).
  • Vahvuudet: Maailman johtava työkalu visuaalisten novellien luomiseen. Jos 2D-pelisi painopiste on tarinankerronnassa, hahmokuvissa ja teksteissä, Ren'Py on paras valinta.

GDevelop

[muokkaa]

GDevelop on ilmainen, avoimen lähdekoodin ja tapahtumapohjainen pelimoottori, joka on suunniteltu erityisesti ilman koodia (no-code) työskenteleville käyttäjille.

  • Ohjelmointi: Käyttää visuaalista tapahtumajärjestelmää koodaamisen sijaan.
  • Vahvuudet: Erinomainen aloittelijoille tai opettamiseen. Pystyy julkaisemaan pelejä HTML5:lle, Androidille ja työpöydälle.
Ohjelma Pääkieli Soveltuu parhaiten
Defold Lua Kevyet, nopeat mobiili- ja HTML5-pelit.
LÖVE Lua Koodausta ja matalan tason kontrollia arvostavat harrastelijat.
Ren'Py Python Visuaaliset novellit ja tarinapohjaiset pelit.
GDevelop Visuaalinen (No-Code) Täydellinen aloittelijoille ja visuaaliseen ohjelmointiin.

Pelikehykset: Täysi kontrolli koodiin

[muokkaa]

Pelikehykset antavat kehittäjälle täyden vapauden ja edellyttävät kaikkien komponenttien (kuten fysiikan ja käyttöliittymän) koodaamista itse. Pelikehykset ovat siis kirjastojen kokoelma, joka tarjoaa joukon työkaluja ja funktioita tiettyjen tehtävien suorittamiseen (kuten grafiikan piirtämiseen ja syötteen käsittelyyn), mutta se ei sisällä valmista editoria tai kaikkia valmiita järjestelmiä.

Ominaisuus Selitys
Koodi edellä Lähes kaikki tehdään koodaamalla. Kehittäjä vastaa objektien luomisesta, sijainneista ja kaikkien osien yhdistämisestä.
Rajoitettu toiminnallisuus Tarjoaa perustoiminnot (grafiikka, ääni, syöte), mutta kehittäjän täytyy usein rakentaa itse pelin logiikka, fysiikkamoottori (tai integroida ulkoinen kirjasto) ja käyttöliittymäjärjestelmä.
Kontrolli Tarjoaa kehittäjälle täyden kontrollin jokaisesta koodin rivistä ja pelin rakenteesta, mutta vaatii enemmän matalan tason koodausta.
Kehityksen nopeus Kehitysprosessi on usein hitaampi alussa, mutta voi olla tehokkaampi erikoisprojekteissa.
Esimerkkejä MonoGame, LÖVE (Love2D), LibGDX, Pygame.

Pelikehys on kuin kokoelma laadukkaita rakennustyökaluja, raaka-aineita (puuta, tiiliä) ja ohjeita. Sinun on rakennettava koko talo lattiasta kattoon itse.

MonoGame / FNA (C#-kehittäjille)

[muokkaa]

MonoGame ja FNA eivät ole varsinaisia pelimoottoreita, vaan pelikehyskirjastoja (frameworks). Ne ovat avoimen lähdekoodin toteutuksia Microsoftin vanhasta XNA-kehitysympäristöstä. Se Tarjoaa täyden kontrollin koodiin. Se on kevyt ja soveltuu hyvin retrotyylisiin ja yksinkertaisiin peleihin.

  • Pääkieli: C#.
  • Lisenssi: Microsoft Public License (Ms-PL) / MIT-lisenssi (FNA).
  • Vahvuudet: Soveltuu erinomaisesti C#-kielellä koodaaville kehittäjille, jotka haluavat täyden kontrollin pelin toiminnasta. Se on valinta monille retrotyylisille peleille.
  • Käyttötarkoitus: Antaa kehittäjälle enemmän vapautta ja edellyttää enemmän itse koodausta perusmoottorin toimintojen, kuten käyttöliittymän, osalta.

LibGDX (Java-kehittäjille)

[muokkaa]

LibGDX on Java-pohjainen, avoimen lähdekoodin kehyskirjasto, joka keskittyy monialustaisuuteen (Android, iOS, selain, työpöytä). Se on nopea ja tehokas, hyödyntää Java-ekosysteemiä. Vaatii enemmän koodausta.

  • Pääkieli: Java.
  • Lisenssi: Apache 2.0 -lisenssi.
  • Vahvuudet: Erittäin joustava ja kevyt, sopii kehittäjille, jotka ovat tottuneet Javaan ja haluavat luoda pelejä, jotka toimivat laajalla laitekirjolla. Vaatii hieman enemmän itse rakentamista kuin Godot.

LÖVE (2D Game Framework)

[muokkaa]

LÖVE (tai Love2D) on erittäin suosittu valinta niille, jotka haluavat täyden kontrollin ja nauttivat koodaamisesta. Se ei ole täysi moottori vaan enemmänkin kehys.

  • Pääkieli: Lua.
  • Vahvuudet: Erittäin kevyt, nopea prototyyppien tekemiseen ja sopii aloittelijoille, jotka haluavat oppia ohjelmoimaan pelejä alusta asti. Se tarjoaa vain grafiikan, äänen ja syötteen toiminnot, ja käyttäjän on koodattava fysiikka ja pelilogiikka itse (tai integroitava siihen ulkoisia kirjastoja).

Resurssien ja maailman luominen Linuxilla

[muokkaa]

Linux-kehitysympäristössä voidaan hyödyntää useita erinomaisia avoimen lähdekoodin työkaluja resurssien luomiseen:

Komponentti Työkalu Käyttötarkoitus
Pikseligrafiikka / 2D-Taide Aseprite Ammattimainen pikseligrafiikan ja animaatioiden luontiin.
Vektorigrafiikka Inkscape Vektoripohjaisten 2D-grafiikoiden, kuten käyttöliittymäelementtien, piirtäminen.
Äänenmuokkaus Audacity ja vastavat Äänitehosteiden ja musiikin editointi ja masterointi.
Laattakartat (Tilemaps) Tiled Pelimaailman karttojen suunnittelu ja luominen (tilemap) käytettäväksi lähes kaikissa 2D-moottoreissa.
v  k  m
Peliohjelmointiin liittyvät artikkelit
 Yleiset  Peliohjelmointi Linuxilla | Pelisuunnittelu | 2D-peliohjelmoinnin aloitusopas Linuxille | Musiikki ja äänet | Kuvankäsittely | Mallinnus | Lokalisointi
 2D 
 Pelimoottorit  Solar2D | Defold | Fife | LÖVE | GameMaker
  -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