Ero sivun ”2D-peliohjelmoinnin aloitusopas Linuxille” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p typo |
p ) |
||
| (14 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 1: | Rivi 1: | ||
2D-tietokonepeli | 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. | ||
== Pelin | == 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) === | ||
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ä: | * Esimerkkejä: Godot, Unity, GameMaker Studio. | ||
=== Pelilogiikka (Game Logic) === | === Pelilogiikka (Game Logic) === | ||
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 | * Pelin tila (Game State): Kuten pelaajan sijainnit, pistemäärät ja elämä. | ||
* Päivityssilmukka (Game Loop): Jatkuva silmukka, joka | * 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 ( | 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 28: | Rivi 26: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
|- | |- | ||
! Ominaisuus !! Pikseligrafiikka !! Muu 2D-Grafiikka (Esim. Vektorigrafiikka, Piirretty) | ! Ominaisuus !! Pikseligrafiikka !! Muu 2D-Grafiikka (Esim. Vektorigrafiikka, Piirretty) | ||
| Rivi 49: | Rivi 47: | ||
|+ Pikseligrafiikan sijoittuminen | |+ 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) || Pelimoottori (Unity, Godot) || Käsittelee pikselöityjä spritejä ja piirtää ne ruudulle. | ||
| Rivi 64: | Rivi 62: | ||
* 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. | ||
=== Fysiikka ja törmäykset (Physics and Collision) === | |||
=== Fysiikka ja | |||
* 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. | * Törmäysvaste (Collision Response): Mitä tapahtuu törmäyksen jälkeen (esim. liikkumisen esto tai vaurion aiheuttaminen). | ||
=== Ääni ja | === Ääni ja musiikki (Audio and Music) === | ||
* Taustamusiikki (BGM): Luomaan tunnelmaa. | * Taustamusiikki (BGM): Luomaan tunnelmaa. | ||
* Ääniefektit (Sound Effects / SFX): Kuten hyppäämisen ääni, aseen laukaus | * Ääniefektit (Sound Effects / SFX): Kuten hyppäämisen ääni, aseen laukaus tai vihollisen kuolema. | ||
=== Syöte ja | === Syöte ja ohjaus (Input and Control) === | ||
Pelin on käsiteltävä pelaajan syötteet. | 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). | * 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). | ||
| Rivi 80: | Rivi 76: | ||
Lyhyesti sanottuna: 2D-peli on kokoelma koodia (pelimoottori ja logiikka) ja sisältöä (grafiikka, ääni), jotka toimivat yhdessä luoden interaktiivisen kokemuksen kaksiulotteisessa tilassa. | 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 == | ||
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. | 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. | ||
| Rivi 86: | Rivi 82: | ||
|+ | |+ | ||
|- | |- | ||
! Ominaisuus !! | ! 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]], [[Unity3D|Unity]], | | 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. | ||
== Pelimoottori – Kehitys nopeasti käyntiin == | |||
=== 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ä. | ||
* Ohjelmointi: Käyttää omaa GDScript-kieltään ([[Python]]-tyyppinen, helppo oppia), mutta tukee myös [[C#]], [[C++]] ja muita kieliä. | * 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. | * Yhteisö: Aktiivinen, jatkuvasti kasvava yhteisö takaa hyvän dokumentaation ja tuen. | ||
=== Defold Engine === | === Defold Engine === | ||
[[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. | ||
=== Ren'Py (Visual Novels) === | === Ren'Py (Visual Novels) === | ||
| Rivi 139: | Rivi 121: | ||
* Vahvuudet: Erinomainen aloittelijoille tai opettamiseen. Pystyy julkaisemaan pelejä HTML5:lle, Androidille ja työpöydälle. | * Vahvuudet: Erinomainen aloittelijoille tai opettamiseen. Pystyy julkaisemaan pelejä HTML5:lle, Androidille ja työpöydälle. | ||
= | {| class="wikitable sortable" | ||
|+ | |||
|- | |||
! 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 == | |||
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 159: | Rivi 155: | ||
Pelikehys on kuin kokoelma laadukkaita rakennustyökaluja, raaka-aineita (puuta, tiiliä) ja ohjeita. Sinun on rakennettava koko talo lattiasta kattoon itse. | 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) === | ||
[[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) === | |||
[[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) === | |||
[[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 == | |||
Linux-kehitysympäristössä voidaan hyödyntää useita erinomaisia avoimen lähdekoodin työkaluja resurssien luomiseen: | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||