TÀmÀ on konekÀÀnnetty teksti, joka saattaa sisÀltÀÀ virheitÀ!
MistÀ tÀmÀ tieto tulee?
Paljon tĂ€ssĂ€ on vain uudelleen kerrontaa Godotân virallisesta dokumentaatiosta. Alapuolella on joitakin hyödyllisiĂ€ linkkejĂ€ viralliseen dokumentaatioon (jota suosittelen mieluiten tĂ€mĂ€n Piggy-version sijaan, mutta jos suosit tĂ€tĂ€, voit kĂ€yttÀÀ vain tĂ€tĂ€!)
HyödyllisiÀ resursseja:
MitÀ grafiikasta, tÀytyykö minun tehdÀ se itse?
Ei! Voit löytÀÀ paljon ilmaisia resursseja tÀÀltÀ:
Muita hyödyllisiÀ linkkejÀ:
Muita pelimoottoreita?
Jos haluat, voit kÀyttÀÀ muita pelimoottoreita. EsimerkkejÀ muista pelimoottoreista ovat:
On olemassa myös monia muita, joten voit hakea lisÀÀ, jos haluat kokeilla jotain muuta!
MikÀ on Godot?
Godot (lausutaan Guh-doh), on pelimoottori (âGame Engineâ). Yksinkertaisesti sanottuna se on ohjelma, jonka avulla voit luoda pelejĂ€ (tai tavallisia ohjelmia, jos haluat). Godot pystyy tekemÀÀn lĂ€hes kaiken, mihin muut pelimoottorit pystyvĂ€t, sekĂ€ 2D- ettĂ€ 3D-muodossa.
EsimerkkejÀ Godotilla tehdyistÀ peleistÀ: Godot Showcase
Godotilla ei ole tehty vain indie-pelejĂ€, myös Sonic Colors Ultimate on tehty Godotilla! đŠđŠđŠ
Miten saat otettua yhteyttÀ Godotiin?
Voit ladata Godotin joko seuraavista lÀhteistÀ:
- Viralliselta verkkosivustolta: Godot Official Page.
- Tai Steamista: Godot Steam.
Lataa ja asentaa vain (tai suorita steamin kautta).
Luo projekti!
Kun aloitat Godotin, tÀmÀ ikkuna avautuu sinulle:
TÀssÀ vaiheessa kysytÀÀn ohjelmointikieltÀ, joko GDScript tai C#. GDScript on hyvin samanlainen kuin Python.
Eroja GDSciptin ja Pythonsa vÀlillÀ (ilman vÀrikkyyttÀ):
def hello():
teksti = "Hei maailma!"
print(teksti)
func hello():
var teksti = "Hei maailma!"
print(teksti)
Muuttujien osalta PYTHONissa riittÀÀ vain kirjoittaa muuttujan nimi. GDSScriptissÀ tÀytyy ensin kÀyttÀÀ sanaa var. Funktion luomiseksi kÀytetÀÀn sanoa func sijaan sanaa def.
Kohtaukset ja solmut
Yksi tĂ€rkeimmistĂ€ kĂ€sitteistĂ€ Godotin sisĂ€llĂ€ ovat kohtaukset (Scenes) ja solmut (Nodes). Voimme aloittaa tĂ€stĂ€ hetkestĂ€ katsomalla ensin solmuja. Solmu on objekti Godotissa, ja se voi edustaa mitĂ€ tahansa. Se voi olla jotain, joka esittÀÀ pelaajaa, vihollista, valikossa olevaa painiketta tai ruudulla nĂ€kyvÀÀ tekstiĂ€ â eli kĂ€ytĂ€nnössĂ€ kaiken mahdollisen. Kuvauksessa kohtaus puolestaan sisĂ€ltÀÀ joukon solmuja.
TÀssÀ teemme hyvin yksinkertaisen esimerkin.
Osa 1a - Luo âplayerâ-kohtaus
Ikonyyn Godot-ohjelman ylÀosassa paina 2D-painiketta vaihtaaksesi nÀkymÀn 2D-nÀkymÀÀn.
Ihkun vasemmass laidussa nÀet seuraavan kÀyttöliittymÀn:
Paina Other Node -painiketta ja hae termillĂ€ âCharacterBody2Dâ, valitse se ja paina Create. TĂ€mĂ€ on solmu, jota kĂ€ytetÀÀn kahdenulotteisen pelaajan edustajana. Saatetaan huomata varoituskolmio â ïž CharacterBody2D-solmun vieressĂ€. SyynĂ€ tĂ€henee, ettĂ€ siltĂ€ puuttuu joitain ominaisuuksia tai asetuksia.
Jos napsautat oikealla hiiren napilla solmua ilmestyy + Add Child Node⊠(LisÀÀ lapsisolmu âŠ) -valinta. KĂ€ytĂ€ tĂ€tĂ€ lisĂ€tĂ€ksesi kaksi uutta solmustoa: Sprite2D ja CollisionShape2D. Solmutta Sprite2D kĂ€ytetÀÀn grafiikan lisÀÀmiseen pelaajaolioon ja toinen kollisioiden tarkistamiseen Voit myös nimetĂ€ ne helpomman hallinnan vuoksi Olen antanut omalle CharacterBody2D-solumullei nimen âPlayerâ. NĂ€kymĂ€n tulisi nĂ€yttÀÀ tĂ€ltĂ€ juuri nyt:
Osa 1b - Korjaa â ïž virhe CollisionShape2D:ssĂ€
Varoitusmerkki tĂ€ssĂ€ tapauksessa johtuu siitĂ€, ettĂ€ CollisionShape2D:n törmÀÀminen puuttuu todellisuudessa. Voit korjata tĂ€mĂ€n napsauttamalla solmua (vasemmalle), jolloin oikeanpuoleiseen sivuun avautuu paneeli. TÀÀltĂ€ löydĂ€t runsaasti tietoa muokattavasta solmusta. Kokeile rohkeasti eri asetuksia. TĂ€rkeimmĂ€nĂ€ kohteena on kuitenkin âMuotoâ (Shape); aseta se esimerkiksi arvoon RectangleShape2D. Ei ole niin tĂ€rkeÀÀ, emme kĂ€ytĂ€ tĂ€hĂ€n tarkoitukseen törmĂ€yksiĂ€.
Osa 1c â LisÀÀ spritesuunnitelma ja grafiikka
Jos napsautat vasemmassa reunassa olevaa kohtaa Sprites2d, oikealla puolella nĂ€kyviin avataan kenttĂ€ nimeltĂ€ âTekstuuritâ. TĂ€hĂ€n voit lisĂ€tĂ€ kuvan pelaajalle. Raahaa kuva tĂ€hĂ€n kenttÀÀn pudottamalla se siihen.
NÀÀltÀ asia nÀyttÀÀ spriten lisÀÀmisen jÀlkeen.
Osa 2 â Syöttöjen lisÀÀminen ja tarkistus
Ikkunan ylĂ€osassa on valikko âSceneâProjectâDebugâEditorâHelpâ. Napsauta âProjectâ ja sen jĂ€lkeen âProject Settingsâ. TĂ€ssĂ€ vaiheessa aukeaa asetusvalikko. Valitse âInput MapâăTĂ€stĂ€ voit mÀÀrittÀÀ nĂ€ppĂ€imistön painikkeet.
- LisÀÀ uuden toiminnon kentÀÀn teksti âvasenâ, sitten napsauttamalla âLisÀÀ.â
- LisÀÀ myös toiminnot oikea-, ylösâja alasliike.
*NÀmÀ tunnistetaan nimellÀ Toiminnot (actions).
Kunkin toiminnon kohdalle voi lisÀtÀ nappeja klikkaamalla viereistÀ plusmerkki-painiketta (+):
Voitte nyt vainpainella nĂ€ppĂ€imiĂ€ tietokoneessanne sekĂ€ myötĂ€illĂ€ niissĂ€ olevia kuvioita tai muotoiluja kĂ€yttĂ€mĂ€llĂ€ hiirta tai kosketuslevyĂ€.. Lopuksi tallentaksemme kaikki muutokset, palataan takaisin pÀÀikkunaan josta aloitimme tekemisenâŠ
Osa 3 â LisÀÀ ohjelmakoodi pelaajan hallintaan
Jotta pelilogiikkaa voi lisÀtÀ ja esimerkiksi vaikuttaa pelaajaan, taustaan tai mihin tahansa muuhun pelissÀ olevaan elementtiin, tarvitsemme ohjelmakoodin (script). Ohjelmakoodit ovat koodia, joita voidaan kirjoittaa joko GDScriptillÀ tai C#:lla; oletuskielenÀ on GDScript.
- Valitse solmu âCharacterBody2Dâ (minulla se nimettiin âPlayerâ).
- Napsauta painiketta âLiitĂ€ skriptiâ (katso alla).
TĂ€ssĂ€ vaiheessa avautuu ikkuna, jossa voit valita kielen (valitse GDScript) sekĂ€ tiedoston polun (voi olla sama kuin esitetty arvo, mutta nimen voi halutessaan antaa itse). Jatka painamalla sitĂ€. TĂ€mĂ€n jĂ€lkeen nĂ€kyviin tulee Skripti-ikkuna (âScriptâ), joka aluksi nĂ€yttÀÀ tyhjĂ€ltĂ€.
extends CharacterBody2D
TĂ€llĂ€ hetkellĂ€ tĂ€mĂ€ koodi sanoo vain, ettĂ€ koodin tulee kuulua âCharacterBody2Dâ-tyyppiselle nodelle, joka on pelaajamme.
LisÀÀmme tÀhÀn funktion, jota kÀytÀmme pelaajan manipulointiin:
extends CharacterBody2D
func _physics_process(delta: float) -> void:
return
Fysikkprosess?
_physics_process on funktio, jota pÀivitetÀÀn jokaisen ruudun kohdalla eli oletusarvoisesti noin 60 kertaa sekunnissa. Toiminnossa _process pÀivitys tapahtuu koko ajan. Jos haluat pelaajan liikkuvan tasaisella tahdilla, kÀytÀ _physics_process:a.
TÀssÀ on paikka, johon lisÀtÀÀn koodi, joka siirtÀÀ pelaajaa.
Osa 4 â Perussyöttö
Osaan 2 lisĂ€sit syöttönappulat, ja nyt kĂ€ytĂ€mme niitĂ€ olemassa olevan sisÀÀnrakennetun olion, nimeltÀÀn Input, avulla voimme tarkistaa onko pelaaja painanut jotakin sitĂ€ mitĂ€ me asetamme âSyöttökarttaâ-asetuksiin.
Kokeile liittÀÀ tÀmÀ koodi physics_prosessiin:
if Input.is_action_pressed('right'):
velocity.x = 100
move_and_slide()
MikÀ on move_and_slide()?
move_and_slide() on sisÀÀnrakennettu funktio Godotissa, jota kÀytetÀÀn silloin, kun haluamme todella liikuttaa sitÀ, mihin se on sovellettu. Ilman tÀtÀ pelaaja ei liiku.
Warning
Rivien vÀlinen tila on hyvin tÀrkeÀÀ, tÀmÀ on sama kuin Pythonissa.
MitĂ€ tapahtuu, kun kĂ€ynnistĂ€t ohjelman painamalla âplayâ-painiketta Godot-ikkunassa, ja sitten painamalla ârightâ?
Jos ei tapahdu mitÀÀn nyt:
- Oletko muistanut asettaa jotain âInput Mapâ -osiossa?
- Oletko kirjoittanut
rightja etRight? Eli, kirjoititko koodissa saman nimen kuin âinput mapâ -osiossa?
Koko koodi tÀhÀn asti
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
move_and_slide()
YritÀ nyt lisÀtÀ koodi koodeille 'left', 'up', 'down'.
MinkÀ tÀytyy olla velocity.x, jotta saadaan left? EntÀ up ja down?
Koko koodi nyt
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Osa 5 â Koodin korjaaminen
Huomaatte ehkÀ, ettÀ pelaaja ei pysÀhdy, kun pÀÀstÀt suunnan irti. Voimme nyt tehdÀ tÀhÀn muutoksen!
LisÀÀ kaikki if-lausekkeet ennen riviÀ, joka asettaa nopeuden arvoon 0. Voit tehdÀ tÀmÀn kirjoittamalla velocity = Vector2().
Kaikki nopeatuuksien ja suuntatietotyypit ovat Godotissa vektoreita; tÀmÀ on matemaattinen kÀsite, jota emme mene tarkemmin lÀpi tÀssÀ vaiheessa, mutta jos haluat tietÀÀ lisÀÀ siitÀ, mitÀ se tarkoittaa, voit katsoa sen osoitteesta: Vektorit Wikipedia-artikkelina (englanniksi).
Koko koodi nyt
extends CharacterBody2D
func _physics_process(delta: float) -> void:
velocity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Kun kun voit pelata nyt siirtÀÀ pelaajaa ympÀriinsÀ:
Voit myös muuttaa koodia siten ettÀ nopeus ei ole vain luku vaan se voidaan sÀilyttÀÀ toisessa paikassa.
Sinun esimerkiksi ennen funktiota voi lisÀtÀ vakion joka pitÀÀ huolen noopeudesta.
Koko lopullinen koodi const:lla
extends CharacterBody2D
const SPEED = 100
func _physics_process(delta: float) -> void:
velovity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = SPEED
if Input.is_action_pressed('left'):
velocity.x = -SPEED
if Input.is_action_pressed('down'):
velocity.y = SPEED
if Input.is_action_pressed('up'):
velocity.y = -SPEED
move_and_slide()
Osa 6 â Kokeile itsekin!
Jos palaat ensimmÀiseen osaan HyödyllisiÀ resursseja löydÀt siitÀ vinkkejÀ siihen mitÀ voit edelleen kokeilla ja kehittÀÀ.
TÀmÀn jÀlkeen voit yrittÀÀ luoda oman pelisi. MitÀ teet on sinun pÀÀttÀÀsi! Jos haluat tehdÀ jotain tÀysin uutta tee se! Jos taas haluat jÀljitellÀ jo olemassa olevaa peliÀ niin tee sitÀ! Parasta tapaa oppia on kokeilu!



