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:
EntÀ grafiikka, tÀytyykö sen olla itse tehtyÀ?
Ei! Voitte 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 Godotin?
Voit ladata Godotin joko:
- Viralliselta sivulta: Godot Official Page.
- Tai SteamistÀ: Godot Steam.
Lataa ja asenna (tai aja SteamissÀ).
Aloita projekti!
Kun aloitat Godot, saat nÀkyviin tÀmÀn ikkunan:
TÀssÀ sinulta kysytÀÀn ohjelmointikieltÀ, GDScriptiÀ vai C#:aa. GDScript on hyvin samankaltainen Pythonin kanssa.
Erot GDScriptin ja Pythonin vÀlillÀ (ilman vÀrejÀ):
def hello():
text = "Hello world!"
print(text)
func hello():
var text = "Hello world!"
print(text)
Muuttujien osalta Pythonissa tarvitset vain muuttujan nimen. GDScriptissÀ sinun tÀytyy kirjoittaa var ensin. Funktioiden luomiseksi kirjoitat func def:n sijaan.
Kohtaukset & Solmut
Yksi tÀrkeimmistÀ kÀsitteistÀ Godotissa ovat Kohtaukset ja Solmut. Voimme aloittaa solmuista. Solmu on objekti Godotissa, ja se voi esittÀÀ mitÀ tahansa. Se voi olla jotain, joka esittÀÀ pelaajan, vihollisen, nappia valikossa, tekstiÀ nÀytöllÀ, mitÀ tahansa. Kohtaukset ovat solmujen kokoelma.
TÀssÀ luomme hyvin yksinkertaisen esimerkin.
Osa 1a - âplayerâ-scenen asettaminen
Klikkaa Godot-ikkunan ylĂ€reunassa â2Dâ-painiketta vaihtaaksesi nĂ€kymĂ€n 2D-nĂ€kymÀÀn.
Ikkunan vasemmassa reunassa nÀette seuraavan kÀyttöliittymÀn:
Klikkaa âOther Nodeâ -painiketta, etsi âCharacterBody2Dâ, valitse se ja paina âCreateâ. TĂ€mĂ€ on node, jota kĂ€ytetÀÀn 2D-pelaajalle. Saattaa nĂ€kyĂ€ varoituskolmio â ïž âCharacterBody2Dâ-nodun vieressĂ€. TĂ€mĂ€ johtuu siitĂ€, ettĂ€ siltĂ€ puuttuu joitakin asioita, joita se tarvitsisi.
Jos klikkaat nodea hiiren oikealla, nĂ€et â+ Add Child NodeâŠâ -painikkeen. KĂ€ytĂ€ tĂ€tĂ€ ja lisÀÀ kaksi nodia: Sprite2D ja CollisionShape2D. Sprite2D:tĂ€ kĂ€ytetÀÀn lisÀÀmÀÀn grafiikkaa pelaajaan, kun taas toista kĂ€ytetÀÀn törmĂ€ysten tarkistamiseen. Voit myös nimetĂ€ ne, jos se helpottaa asioiden hallintaa. Olen nimennyt oman CharacterBody2D-noduni nimellĂ€ âPlayerâ. Scenen pitĂ€isi nĂ€yttÀÀ nyt tĂ€ltĂ€:
Osa 1b - Korjaa â ïž CollisionShape2D
Varoituskolmio tĂ€ssĂ€ tapauksessa on se, ettĂ€ CollisionShape2D puuttuu todellinen törmĂ€ys. Voit korjata tĂ€mĂ€n painamalla solmua (vasemmalla), jolloin oikealle puolelle tulee esiin paneeli. TÀÀllĂ€ saat paljon tietoa solmusta, jota voit muuttaa. Kokeile mielellÀÀn eri asetuksilla. Mutta se, johon keskitymme, on âShapeâ, aseta tĂ€mĂ€ esimerkiksi RectangleShape2D:ksi. Se ei ole kovin tĂ€rkeÀÀ, emme kĂ€ytĂ€ törmĂ€yksiĂ€ tĂ€ssĂ€.
Osa 1c - LisÀtÀÀn Sprite, grafiikka
Jos painat Sprite2D vasemmalla, avautuu oikealla oleva kenttĂ€, jossa lukee âTextureâ. TĂ€hĂ€n kenttÀÀn voi lisĂ€tĂ€ kuvan pelaajalle. RiittÀÀ, ettĂ€ vedĂ€t kuvan kenttÀÀn ja vapautat hiiren.
NÀin se nÀyttÀÀ spriteÀ lisÀttÀessÀ.
Osa 2 - Syötteen lisÀÀminen, ohjaus
Ikkunan ylĂ€osassa on valikko, âScene - Project - Debug - Editor - Helpâ. Paina âProjectâ ja sen jĂ€lkeen âProject Settingsâ. TÀÀllĂ€ avautuu valikko, jossa on paljon asetuksia. Paina âInput Mapâ. TÀÀllĂ€ voitte asettaa nĂ€ppĂ€imet nĂ€ppĂ€imistölle.
- âAdd New Actionâ -kenttÀÀn kirjoita âleftâ ja paina âAddâ.
- LisÀÀ sen jĂ€lkeen ârightâ, âupâ ja âdownâ.
- NĂ€mĂ€ tulevat tunnetuksi nimellĂ€ âActionsâ
- Jokaiselle âActionâ -toiminnolle voitte lisĂ€tĂ€ nĂ€ppĂ€imiĂ€ painamalla oikealla puolella olevaa + -painiketta.
- TÀÀllÀ voitte vain painaa nÀppÀintÀ ja painaa Add.
- LisÀÀ nÀppÀimet kaikkiin toimintoihin.
Osa 3 - LisÀtÀÀn skripti pelaajan ohjaamiseen.
Jotta voimme lisÀtÀ peli-logiikkaa, eli tehdÀ jotain pelaajalle, taustalle tai mihin tahansa muuhun peliin, tarvitsemme skriptin. Skriptit ovat koodia, ja ne voidaan kirjoittaa kahdella kielellÀ, GDScript tai C#. GDScript on oletusarvo.
- Valitse âCharacterBody2Dâ (olen nimennyt sen âPlayerâ) -nodu.
- Paina âAttach Scriptâ -painiketta (katso alla)
- TĂ€ssĂ€ avautuu ikkuna, jossa voit valita kielen (valitse GDScript) ja polun (anna sen olla oletusarvo, mutta voit antaa sille nimen), ja paina sitten eteenpĂ€in. TĂ€ssĂ€ avautuu âScriptâ -ikkuna. TÀÀllĂ€ ei ole paljon aluksi.
extends CharacterBody2D
# Dette er en enkel karakterkontroller
# This is a simple character controller
# TÀmÀ on yksinkertainen hahmonohjain
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
Fysiikan prosessi?
_physics_process on funktio, joka pĂ€ivitetÀÀn jokaisessa âframessaâ, eli noin 60 kertaa sekunnissa (oletus). On olemassa toinen funktio, joka yksinkertaisesti on nimeltÀÀn _process, joka pĂ€ivitetÀÀn koko matkan. Jos haluat, ettĂ€ pelaaja liikkuu tasaisella vauhdilla, kĂ€ytĂ€ _physics_process.
TÀssÀ on paikka, johon lisÀtÀÀn koodi, joka siirtÀÀ pelaajaa.
Osa 4 - Perus syöte
Osa 2 lisĂ€sit syöttöpainikkeita, nyt aiotaan kĂ€yttÀÀ niitĂ€. On olemassa sisÀÀnrakennettu objekti, nimeltÀÀn Input, jota voidaan kĂ€yttÀÀ tarkistamaan, onko pelaaja painanut sitĂ€, mitĂ€ olemme mÀÀrittĂ€neet âInput Mapâ -kohdassa.
Kokeile lisÀtÀ tÀmÀ koodi _physics_process -koodiin:
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
Rivit vÀlimat ovat erittÀin tÀrkeitÀ, tÀmÀ on samanlaista 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 - Korjataan koodia
Huomautatte ehkÀ, ettÀ pelaaja ei pysÀhdy, kun lopetat suunnan. Voimme korjata sen nyt!
Kaikkien if-lausekkeiden eteen, lisÀÀ rivi, joka asettaa nopeuden 0:aan. Voit tehdÀ sen kirjoittamalla velocity = Vector2()
Kaikki nopeudet ja suunnat Godotissa ovat vektoreita, tÀmÀ on matematiikan kÀsite, jota emme nyt kÀsittele, mutta jos haluat tietÀÀ enemmÀn siitÀ, mitÀ tÀmÀ tarkoittaa, voit mennÀ tÀnne: Wikipedia vectors.
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 aloitat pelin nyt voit liikuttaa pelaajaa:
Voitte jatkaa koodin muokkaamista siten, ettÀ nopeus ei ole vain luku, vaan se voidaan tallentaa toiseen paikkaan.
Voitte esimerkiksi (funktion ennen) lisÀtÀ vakion, joka pitÀÀ kirjaa nopeudesta.
Koko koodi lopussa const-avainsanalla
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 - Leiki vapaasti!
Jos palaatte ensimmÀiseen osaan, Hyödylliset Resurssit, voitte löytÀÀ, millÀ asioilla voitte jatkaa leikkimistÀ.
TÀmÀn jÀlkeen voitte yrittÀÀ luoda oman pelin. MitÀ luotte, on teidÀn valintanne! Jos haluatte luoda jotain aivan uutta, tehkÀÀ niin! Jos haluatte yrittÀÀ jÀljitellÀ jo olemassa olevaa peliÀ, tehkÀÀ niin! Paras tapa oppia on kokeilla!




