Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Godot ile 2D Oyun Yapmak Sandığınız Gibi Değil: Node Sistemiyle Kafayı Yedim!

pixero

Üye
Katılım
14 Mart 2026
Mesajlar
39
Dostlar, selam. Bugün size "Godot ile 2D oyun yapmak kolaymış" diyenlere inanıp, sonra kendi kod labirentimde kaybolduğum bir macerayı anlatacağım. Meğerse o "basit" sandığımız şeyin altında, inanılmaz esnek (ve bazen de kafa karıştırıcı) bir dünya varmış.

🕹️ "Sprite Atarım, Hareket Eder" Sandım

Başlangıç çok masumdu. Bir KinematicBody2D node'u, üstüne bir sprite, biraz GDScript ile hareket kodu... "Hah, işte bu!" dedim. Ta ki, karakterimin zıplarken aynı anda merdiven tırmanması, bir kutuyu itmesi ve üstüne bir de hasar alması gereken bir mekanik hayal edene kadar. İşte o noktada, klasik "state machine" kodumun içinde if ve elif'lerden oluşan canavara dönüştüğünü gördüm. Kafayı yiyecektim.

Kod:
if is_on_floor() and not is_climbing and not is_pushing:
    state = "idle"
elif is_jumping and not is_on_floor() and not is_hurt:
    state = "jump"
# ... ve bu böyle 50 satır sürdü.

🧩 Node'lar ve Sahneler: Her Şey Bir Ağaç Mı?

Sonra fark ettim ki, Godot bana "Kardeşim, her şeyi tek bir script'e sığdırmak zorunda değilsin" diye fısıldıyordu. Node denen bu yapı taşları, aslında bağımsız işlevleri olan minik makinelerdi. Mesela hareketi bir node, animasyonu başka bir node, çarpışmayı başka bir node yönetebiliyordu. Ve hepsi get_node() ile birbirine bağlanıyordu. İlk başta karmaşık gelse de, bu sistemin gücünü anladığım an şok oldum.

Merdiven tırmanma özelliği için yeni bir Area2D node'u ve onun için küçük bir script yazdım. Ana karakter script'im sadece "o alana girdi mi?" diye kontrol etti. Temiz, modüler, harika!

⚡ Anladığım Andaki "Aha!" Anı

Asıl patlama, sinyal (signal) sistemini çözdüğümde yaşandı. Bir node'dan diğerine direkt erişmek yerine, olayları "yayınlamak"... Mesela, canım azaldığında health_changed sinyalini yayan bir node yaptım. UI, bu sinyali dinleyip can barını güncelledi. Ses efekti node'u da aynı sinyali dinleyip "hasar alma" sesini çaldı. Her şey birbirine sıkı sıkıya bağlı değil, gevşek bağlı! Bu neymiş be!

Kod:
# Health node'undan
emit_signal("health_changed", current_health)

# UI node'unda
health_node.connect("health_changed", self, "_on_health_changed")

Sonuç olarak, Godot'daki node ve sahne sistemi, başta biraz soyut gelebilir. Ama bir kere "her şey bir ağaç yapısı ve her dal bağımsız çalışabilir" mantığını kavradığınızda, oyununuzu Lego gibi parçalardan inşa etmenin keyfi paha biçilemez. Karmaşık mekanikler bile daha yönetilebilir hale geliyor.

Peki ya siz? Siz de Godot'da ilk başta node sistemine alışmakta zorlandınız mı? Yoksa "Bu ne saçmalık" deyip başka motora mı geçtiniz? Ya da bu esneklikte daha temiz bir kullanım öneriniz var mı? Yorumlara yazın, tartışalım!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri