›_ ebskola.lv
← Tēma 1.2 →

1.1 Godot instalācija un projekta sagatavošana

Stundas uzdevums: Instalēt Godot 4, izveidot pirmo projektu un saprast Godot editor (redaktora) galvenās daļas.

SR 2.4.12. Programmēšanas vide SR 3.1.2. Darba vides riski SR 2.3.1. Datorikas nozares attīstība padziļinātos projektos

Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.

Teorija: Godot Engine un editor (redaktors)

Godot 4 Engine (Godot dzinējs) ir bezmaksas, atvērtā koda spēļu dzinējs ar visu nepieciešamo 2D un 3D spēļu izstrādei. Šajā kursā Godot tiek lietots kā vizuālais redaktors, scēnu pārvaldnieks un spēles izpildes vide, bet spēles loģika tiek rakstīta C++ ar GDExtension.

Godot projektā jāatšķir trīs slāņi: projekta iestatījumi nosaka logu un palaišanu, scēnas glabā objektu struktūru, bet C++ klases piešķir objektiem uzvedību. Ja šie slāņi tiek jaukti, vēlāk ir grūti saprast, vai kļūda ir editorā, resursā vai kodā.

Editor (redaktora) galvenās daļas:

Renderera izvēle: ja dators ir jauns un grafikas draiveri ir atjaunināti, izvēlies Forward+. Ja skolā ir vecāki datori vai virtuālās mašīnas, Compatibility bieži ir drošāka izvēle. Pong ir 2D projekts, tāpēc mācību rezultātu tas praktiski nemaina.

# Godot 4 instalācija
# 1. Lejupielādē no godotengine.org/download
# 2. Izpako ZIP
# 3. Palaiž godot.exe (Windows) vai ./godot (Linux/Mac)
# 4. Project Manager → New Project
// Kursa programmēšanas slānis būs C++ GDExtension klase.
// Šis ir virziens, nevis vēl pilns 1. stundas kods.
class PongProjectReadiness {
private:
    bool godot_installed = false;
    bool project_created = false;
    bool git_initialized = false;

public:
    bool is_ready_for_cpp() const {
        return godot_installed && project_created && git_initialized;
    }
};

Praktiskie uzdevumi

1. uzdevums - Iesildies ar gatavu piemēru

Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 1.1 Godot instalācija un projekta sagatavošana; detalizētu izpratni veidosi nākamajos uzdevumos.

Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.

// Kursa programmēšanas slānis būs C++ GDExtension klase.
// Šis ir virziens, nevis vēl pilns 1. stundas kods.
class PongProjectReadiness {
private:
    bool godot_installed = false;
    bool project_created = false;
    bool git_initialized = false;

public:
    bool is_ready_for_cpp() const {
        return godot_installed && project_created && git_initialized;
    }
};
  1. Atver darba failu vai rīku. C++ fragmentu ievieto atbilstošajā .cpp vai .hpp failā pie šīs stundas klases.
  2. Nokopē visu piemēra bloku no šī uzdevuma un ielīmē to norādītajā vietā.
  3. Palaid kodu tieši tādu, kāds tas ir, un pārliecinies, ka parādās rezultāts, izvade vai vismaz nav kļūdas paziņojuma.
  4. Atrodi vienu drošu vietu, ko drīkst mainīt: tekstu, skaitli, krāsu, mainīgā vērtību vai testa ierakstu.
  5. Maini tikai šo vienu vērtību un palaid kodu vēlreiz.
  6. Salīdzini rezultātu pirms un pēc izmaiņas. Ja parādās kļūda, atcel pēdējo izmaiņu un palaid vēlreiz.
  7. Turpini pie 2. uzdevuma tikai tad, kad šis mazais piemērs darbojas.

2. uzdevums - Ievieto algoritmu spēles projektā

Pievieno šīs stundas paņēmienu kā nelielu, strādājošu spēles mehānikas daļu.

  1. Izvēlies vienu projekta vietu: spēlētāju, pretinieku, kameru, UI, datu glabāšanu, sadursmi vai līmeņa ģenerēšanu.
  2. Nosauc klases, metodes un mainīgos pēc to lomas, piemēram, PlayerState, velocity, score vai update_ui().
  3. Uzraksti metodi, kas nolasa stāvokli, veic vienu skaidru darbību un atgriež vai parāda rezultātu.
  4. Izsauc šo metodi no piemērotas vietas: _ready(), _process(), _physics_process(), signāla apstrādātāja vai projekta palīgklases.
  5. Pievieno vienu īsu komentāru pie sarežģītākās loģikas vietas.
  6. Pārkompilē projektu un pārbaudi, ka editorā nav kļūdu.
  7. Salabo pirmo atrasto kļūdu pirms pievieno nākamo mehānikas daļu.
  8. Veic Git commit ar īsu tehnisku ziņu par pievienoto C++ funkcionalitāti.

3. uzdevums - Testē mehāniku un izdari secinājumu

Pārbaudi, vai C++ algoritms darbojas paredzami spēles vidē.

  1. Izveido trīs testa scenārijus: parastu darbību, robežgadījumu un kļūdainu vai neērtu spēlētāja darbību.
  2. Palaid parasto scenāriju un pārbaudi rezultātu spēles logā vai Godot konsolē.
  3. Palaid robežgadījumu ar mazāko, lielāko, tukšo vai nulles vērtību, ko mehānika pieļauj.
  4. Palaid kļūdaino scenāriju un pārbaudi, vai projekts neavarē.
  5. Izlabo vienu konkrētu problēmu C++ kodā, node sasaistē vai datu inicializācijā.
  6. Pārkompilē un pārbaudi labojumu vēlreiz ar visiem trim scenārijiem.
  7. Beigās pieraksti vienu secinājumu: kura metode, klase vai algoritma solis vislabāk palīdzēja saprast tēmu 1.1 Godot instalācija un projekta sagatavošana.

Papildu uzdevums - Pievieno mazu mehāniku

Ja pamatdarbs ir pabeigts, paplašini spēli ar vienu nelielu C++ uzlabojumu.

  1. Izvēlies vienu mazu papildinājumu, kas izmanto to pašu šīs stundas paņēmienu.
  2. Pievieno vienu jaunu atribūtu, metodi, signāla apstrādi, datu elementu vai UI atjauninājumu.
  3. Savieno papildinājumu ar esošo scēnu vai klasi, nevis atstāj to atsevišķā demonstrācijā.
  4. Pārkompilē un pārliecinies, ka pamatmehānika joprojām darbojas.
  5. Saglabā izmaiņas ar Git commit tikai pēc veiksmīgas pārbaudes.

Papildu izaicinājumi

Uzlabojumi, kas padara darba vidi ērtāku.

Biežākās kļūdas

Godot ekrānuzņēmumi

Godot 4 Project Manager logs ar tukšo projektu sarakstu un 'New Project' pogu pa labi.
Godot 4 Project Manager logs ar tukšo projektu sarakstu un 'New Project' pogu pa labi.
Godot editor pirmā atvēršana - kreisajā Scene Tree un FileSystem, centrā Viewport, labajā Inspector.
Godot editor pirmā atvēršana - kreisajā Scene Tree un FileSystem, centrā Viewport, labajā Inspector.

Koda piemērs (paplašināts)

#include <godot_cpp/variant/string.hpp>

using namespace godot;

struct ProjectSetupReport {
    String project_name = "Pong";
    String main_scene = "res://main.tscn";
    bool uses_cpp_gdextension = true;
    bool has_git_repository = true;

    bool can_continue_to_lesson_1_2() const {
        return project_name == "Pong"
            && main_scene == "res://main.tscn"
            && uses_cpp_gdextension
            && has_git_repository;
    }
};
Projekts ir gatavs nākamajai stundai: ir main.tscn, sakārtotas mapes, Git sākumstāvoklis un skaidrs mērķis lietot C++.
⬅ Tēmas apkopojums Nākamā stunda ➡