TÀmÀ on konekÀÀnnetty teksti, joka saattaa sisÀltÀÀ virheitÀ!
MistÀ tÀmÀ tieto on perÀisin?
Paljon tÀstÀ on vain uudelleen kertomista Godotin virallisesta dokumentaatiosta. Alla on joitain hyödyllisiÀ linkkejÀ viralliseen dokumentaatioon (jota suosittelen mielellÀni PiggyllÀ olevan sijaan, mutta jos tÀmÀ sopii sinulle paremmin, niin kÀytÀ ihmeessÀ 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 mieluummin, voit kÀyttÀÀ muita pelimoottoreita. EsimerkkejÀ muista pelimoottoreista ovat:
On olemassa monia muita myös, etsi ihmeessÀ jos haluat kokeilla jotain muuta!
MikÀ on Godot?
Godot (lausutaan Guh-doh), on âGame Engineâ. Yksinkertaisesti sanottuna se on ohjelma, jonka avulla voit luoda pelejĂ€ (tai tavallisia ohjelmia, jos haluat). Godot pystyy tekemÀÀn lĂ€hes kaiken, mitĂ€ muut pelimoottoritkin osaavat, sekĂ€ 2D- ettĂ€ 3D-pelejĂ€.
EsimerkkejÀ Godotilla luoduista peleistÀ: Godot Showcase
Godotilla ei ole tehty pelkÀstÀÀn indie-pelejÀ, 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 - âPelaajaâ-kohtauksen asettaminen
Godot-ikkunan ylĂ€osassa, paina â2Dâ-painiketta muuttaaksesi nĂ€kymĂ€n 2D-nĂ€kymĂ€ksi.
Ikkunan vasemmalla puolella nÀette seuraavan kÀyttöliittymÀn:
Paina âOther Nodeâ -painiketta, ja hae âCharacterBody2Dâ, valitse se ja paina âCreateâ. TĂ€mĂ€ on node, jota kĂ€ytetÀÀn 2D-pelaajalle. EhkĂ€ huomaatte, ettĂ€ âCharacterBody2Dâ noden vieressĂ€ on varoitustriangulo â ïž. TĂ€mĂ€ johtuu siitĂ€, ettĂ€ se puuttuu joitain asioita, joita se haluaisi.
Jos napsautat nodella hiiren oikealla painikkeella, siellĂ€ on â+ Add Child NodeâŠâ -painike. KĂ€ytĂ€ tĂ€tĂ€ ja lisÀÀ kaksi nodea, Sprite2D ja CollisionShape2D. Sprite2D:tĂ€ kĂ€ytetÀÀn grafiikan lisÀÀmiseen pelaajalle, kun taas toista kĂ€ytetÀÀn törmĂ€ysten tarkistamiseen. Voit myös antaa niille nimiĂ€, jos se helpottaa asioiden hallintaa. Olen antanut CharacterBody2D-nodeleni nimen âPlayerâ. NĂ€in kohtauksen pitĂ€isi nĂ€yttÀÀ nyt:
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 vain sanoo, ettĂ€ koodin tulee kuulua âCharacterBody2Dâ-tyypin noden, joka on pelaajamme.
LisÀÀmme tÀnne 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'):
# Flytta karakteren til hĂžyre
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
right
ja 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 'left'
, 'up'
, 'down'
.
MitÀ velocity.x
:n pitÀÀ olla, jotta se liikkuu left
-suuntaan? EntÀ up
- ja down
-suuntiin?
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:
velovity = 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!