Un ciclu diurn-nocturn poate îmbogăți experiența jocurilor tale, adăugând varietate vizuală și creând mecanisme interactive interesante. Jocuri populare precum Minecraft, Animal Crossing și Don’t Starve utilizează cu succes această tehnică, iar tu o poți integra în propriile tale creații, în special în cele care au o componentă de timp real.
Din fericire, în Godot 4, implementarea unui ciclu diurn-nocturn este mai accesibilă ca niciodată.
Configurarea mediului de joc în Godot
Înainte de a te avânta în crearea ciclului diurn-nocturn, trebuie să stabilești bazele jocului tău. Începe prin a crea un nou proiect 2D în Godot 4 și configurează-l cu setările potrivite pentru proiectul tău.
Codul sursă utilizat în acest tutorial este disponibil pe depozitul GitHub și poate fi folosit gratuit, sub licența MIT.
Acum, creează un personaj jucător. În scena ta, inserează un nod CharacterBody2D. În interiorul acestuia, adaugă un CollisionShape2D cu o formă dreptunghiulară și un Sprite2D. Acesta va reprezenta vizual personajul tău.
Pentru a permite personajului să se deplaseze, poți folosi următorul cod GDScript. Atașează acest script la nodul caracterului tău:
extends CharacterBody2Dvar viteza = 300
func _physics_process(delta):
var directie_input = Vector2.ZEROif Input.is_action_pressed("ui_left"):
directie_input.x -= 1if Input.is_action_pressed("ui_right"):
directie_input.x += 1if Input.is_action_pressed("ui_up"):
directie_input.y -= 1if Input.is_action_pressed("ui_down"):
directie_input.y += 1velocity = directie_input.normalized() * viteza
move_and_collide(velocity * delta)
Acest cod va permite jucătorului să se miște stânga, dreapta, sus și jos folosind tastele săgeți. De asemenea, poți adăuga câțiva inamici pe care jucătorul să-i evite. Folosește noduri StaticBody2D pentru acești inamici și adaptează-le formele și pozițiile în mod corespunzător.

Integrarea unui cronometru pentru ciclul diurn-nocturn
Pentru a crea un ciclu diurn-nocturn, ai nevoie de un cronometru care să ruleze continuu, alternând între fazele de zi și de noapte. Acest cronometru va fi responsabil pentru monitorizarea trecerii timpului în jocul tău.
Inserează un nod Timer în scena ta Godot. Poți face acest lucru dând clic dreapta în panoul Scenă, selectând Adăugare nod și apoi căutând Timer în biblioteca de noduri.
Redenumește nodul Timer într-un nume sugestiv, de exemplu DayNightTimer, pentru o mai bună claritate. Configurează proprietățile nodului Timer în panoul Inspector. Mai exact, setează proprietatea Wait Time la 0 (aceasta este întârzierea inițială înainte de pornirea cronometrului) și bifează proprietatea One Shot, pentru ca cronometrul să se repete.
Acum, adaugă un script GDScript care gestionează ciclul diurn-nocturn:
extends Node2Dvar durata_zi = 30
var durata_noapte = 30var este_zi = true
func _ready():
$DayNightTimer.start()func _on_DayNightTimer_timeout():
if este_zi:
$DayNightTimer.start(durata_zi)
este_zi = false
else:
$DayNightTimer.start(durata_noapte)
este_zi = true
În funcția _ready, pornește DayNightTimer atunci când scena se încarcă, pentru a iniția ciclul diurn-nocturn. Funcția _on_DayNightTimer_timeout se va executa de fiecare dată când cronometrul ajunge la zero, adică atunci când este timpul să treci de la zi la noapte și invers.
Urmând acești pași, vei avea un cronometru funcțional diurn-nocturn, care alternează între zi și noapte, permițându-ți să adaugi elemente dinamice de joc și modificări vizuale în funcție de ora din zi în jocul tău Godot.
Adaptarea fundalului pentru zi și noapte
Pentru a desăvârși ciclul diurn-nocturn, ai nevoie de o modalitate de a reprezenta vizual tranzițiile dintre zi și noapte. Poți folosi un nod ColorRect încorporat pentru a crea un fundal adecvat atât pentru zi, cât și pentru noapte. Această abordare permite tranziții mai fluide și un control mai fin asupra aspectului vizual.
În scena Godot, adaugă un nod ColorRect. Acest nod va servi drept fundal, care își schimbă culoarea pentru a indica ziua și noaptea. Redenumește nodul ColorRect într-un nume sugestiv, de exemplu BackgroundRect. Poziționează-l ca strat de fundal, asigurându-te că acoperă întreaga zonă de vizualizare.
În panoul Inspector, setează proprietatea Culoare la culoarea inițială de fundal, care ar trebui să reprezinte ziua. De exemplu, poți folosi Color(0.5, 0.5, 0.8) pentru un cer albastru deschis în timpul zilei.
Acum, actualizează codul GDScript pentru a funcționa cu nodul ColorRect:
func _on_day_night_timer_timeout():
if este_zi:
$DayNightTimer.start(durata_zi)
este_zi = false
$BackgroundRect.color = Color(0.5, 0.5, 0.8)
else:
$DayNightTimer.start(durata_noapte)
este_zi = true
$BackgroundRect.color = Color(0, 0, 0)
Actualizează culoarea nodului BackgroundRect pentru a reflecta ora din zi. De exemplu, setează-l la negru atunci când se trece la noapte, creând un fundal întunecat. Când se trece la zi, setează-l la albastru deschis.

Efecte sonore pentru ciclul diurn-nocturn
Efectele sonore pot juca un rol important în îmbunătățirea imersiunii și realismului ciclului tău diurn-nocturn în Godot. Acestea oferă indicii auditive jucătorilor, făcând tranziția dintre zi și noapte mai captivantă. Poți adăuga cu ușurință efecte sonore în jocul tău Godot.
Înainte de a începe, asigură-te că ai resurse audio (fișiere de sunet) care reprezintă sunetele specifice zilei și nopții. De exemplu, poți avea sunete de ciripit de păsări pentru zi și de greieri sau bufnițe pentru noapte.
În scena Godot, adaugă două noduri AudioStreamPlayer2D și denumește-le corespunzător. Le poți denumi, de exemplu, $SuneteZi și $SuneteNoapte.
Acum, actualizează codul GDScript pentru a gestiona tranzițiile de sunet între zi și noapte:
func _on_day_night_timer_timeout():
if este_zi:
$DayNightTimer.start(durata_zi)
este_zi = false
$SuneteNoapte.stop()
$SuneteZi.play()
else:
$DayNightTimer.start(durata_noapte)
este_zi = true
$SuneteZi.stop()
$SuneteNoapte.play()
Când cronometrul diurn-nocturn ajunge la final, acest cod verifică faza în care ar trebui să se treacă și redă sunetele adecvate pentru a corespunde acestei faze.
Nu ezita să personalizezi efectele sonore fără drepturi de autor, pentru a se potrivi cu tema și atmosfera jocului tău. De asemenea, poți suprapune mai multe piste audio sau poți folosi efecte audio (reverb, ecou, etc.) pentru a crea o experiență auditivă mai bogată.
Crește captivitatea jocurilor tale Godot cu un ciclu diurn-nocturn
Implementarea unui ciclu diurn-nocturn în jocul tău Godot poate îmbunătăți semnificativ imersiunea și implicarea jucătorului. Acesta adaugă profunzime lumii tale de joc, introduce elemente dinamice de joc și permite o povestire creativă.
Nu uita să adaptezi ciclul diurn-nocturn la tema și mecanica unică a jocului tău și nu ezita să experimentezi cu diferite efecte vizuale și de joc pentru a crea o experiență cu adevărat captivantă.