← Blog'a Dön

GODOT • GDSCRIPT • OYUN GELİŞTİRME

Godot ile Karanlık Madenci'yi Geliştirirken Öğrendiklerim

Karanlık Madenci, Godot ile geliştirdiğim 2D madencilik oyunu. Bu projede yalnızca oyun mekaniği geliştirmekle kalmadım; TileMap sistemi, envanter, ekonomi, dinamit mekanikleri, kullanıcı arayüzü ve mobil kontroller gibi birçok farklı konuda çalışma fırsatı buldum.

Furkan Yalçın 19 Ağustos 2026 6 dk okuma
Karanlık Madenci oyunundan ekran görüntüsü

Proje Nasıl Başladı?

Oyun geliştirmeyi öğrenirken yalnızca küçük örnekler yapmak yerine üzerinde uzun süre çalışabileceğim gerçek bir proje geliştirmek istedim. Böylece Karanlık Madenci fikri ortaya çıktı.

Temel fikir, oyuncunun yer altında ilerleyerek farklı madenleri toplaması ve kazandığı kaynaklarla yeni özelliklerin kilidini açması üzerine kurulu.

Proje ilerledikçe başlangıçta basit görünen madencilik sistemi; envanter, ekonomi, yardımcı karakterler, dinamit, görevler ve mobil kontrol gibi birçok farklı sisteme dönüştü.

Godot ve GDScript ile Çalışmak

Bu proje Godot motorunu daha iyi anlamamı sağlayan en önemli çalışmalarım arasında yer aldı. Sahne yapısı, node sistemi, sinyaller ve GDScript kullanarak farklı oyun sistemlerini birbirine bağlamayı öğrendim.

Özellikle bir özelliği tek bir büyük script içerisine koymak yerine oyun sistemlerini daha düzenli parçalara ayırmanın geliştirme sürecini kolaylaştırdığını fark ettim.

TileMap ve Madencilik Sistemi

Oyunun temel mekaniklerinden biri blokları kırarak maden toplamaktı. Bunun için Godot'un TileMap sistemiyle çalıştım. Toprak, taş, demir, kömür, altın ve elmas gibi farklı blok türlerini ayırmam gerekiyordu.

Oyuncunun tıkladığı blok ile karakter arasındaki mesafenin kontrol edilmesi de önemliydi. İlk denemelerde oyuncu çok uzaktaki blokları bile kırabiliyordu.

KARŞILAŞTIĞIM PROBLEM

Ekran koordinatları ile TileMap koordinatlarının birbirinden farklı olması nedeniyle madencilik mesafesi yanlış hesaplanıyordu.

TileMap'in local_to_map ve map_to_local dönüşümlerini kullanarak oyuncunun ve seçilen bloğun doğru tile konumlarını hesaplamayı öğrendim.

Envanter ve Ekonomi

Oyuncunun sınırsız miktarda maden taşıması oyunun ilerleme sistemini anlamsız hale getiriyordu. Bu nedenle kapasitesi sınırlı bir çanta sistemi oluşturdum.

Toplanan maden türüne göre farklı değerler belirledim. Böylece değerli madenleri bulmak oyuncu için daha anlamlı hale geldi.

Kömür

Kaynak

Demir

Kaynak

Altın

Değerli

Elmas

Nadir

Çanta

Kapasite

Para

Ekonomi

Dinamit Mekaniği

Oyuncuya yalnızca tek tek blok kırmaktan farklı bir seçenek sunmak için dinamit sistemi geliştirdim.

Oyuncu dinamit moduna geçtiğinde belirli bir mesafe içerisindeki alana dinamit bırakabiliyor. Kısa bir süre sonra patlama gerçekleşiyor ve çevresindeki bloklar kırılıyor.

Bu özellik üzerinde çalışırken zamanlayıcı kullanımı, etki alanı hesaplama, madenleri toplama ve görsel geri bildirim gibi birçok sistemi birlikte kullanmam gerekti.

Mobil Kontroller

Oyunu Android cihazlarda çalıştırmaya başladığımda bilgisayarda düzgün görünen kullanıcı arayüzünün telefonda aynı şekilde görünmediğini fark ettim.

Sol, sağ, zıplama ve dinamit gibi kontroller için özel mobil butonlar hazırladım. Ekran çözünürlükleri değiştikçe butonların doğru konumda kalması için arayüzü daha responsive hale getirmem gerekti.

Buradan çıkardığım ders

Bir oyunun bilgisayarda çalışması mobilde de aynı şekilde çalışacağı anlamına gelmiyor. Kontrolleri, arayüzü ve ekran oranlarını gerçek cihaz üzerinde test etmek gerekiyor.

Oyunu Sadece Koddan İbaret Görmemek

Proje geliştikçe ana menü, ayarlar, görevler, atölye, yardımcı karakterler ve farklı kullanıcı arayüzleri üzerinde de çalıştım.

Bu süreç, kullanıcı arayüzünün oyun deneyiminin önemli bir parçası olduğunu daha iyi anlamamı sağladı. Bir özellik teknik olarak çalışsa bile oyuncu onu kolayca anlayamıyorsa sistem henüz tamamlanmış sayılmıyor.

Bu Projede Neler Öğrendim?

GODOT

Node ve Sahne Yapısı

Farklı oyun sistemlerini sahneler ve node'lar aracılığıyla daha düzenli yönetmeyi öğrendim.

GDSCRIPT

Oyun Mantığı

Karakter hareketinden ekonomi sistemine kadar farklı mekanikleri kodlayarak GDScript pratiği kazandım.

DEBUG

Hata Ayıklama

Hataların yalnızca sonucuna değil, hangi koordinat, değişken veya sistemden kaynaklandığına bakmayı öğrendim.

MOBİL

Gerçek Cihaz Testi

Mobil arayüz ve kontrollerin gerçek Android cihazlarda düzenli olarak test edilmesi gerektiğini öğrendim.

Sonuç

Karanlık Madenci benim için yalnızca bir oyun projesi değil, aynı zamanda oyun geliştirme konusunda öğrendiklerimi gerçek bir projede birleştirebildiğim bir çalışma oldu.

Her yeni özellik yeni bir problem ortaya çıkardı ve bu problemleri çözmeye çalışmak Godot ve programlama konusunda daha fazla deneyim kazanmamı sağladı.

Projeyi geliştirmeye devam ettikçe yeni sistemler eklemeyi, mevcut mekanikleri iyileştirmeyi ve oyunu daha tamamlanmış bir ürün haline getirmeyi hedefliyorum.

Karanlık Madenci

Projeyi portfolio sayfamda incele.

Karanlık Madenci ve geliştirdiğim diğer oyun, mobil uygulama ve web projelerini projeler sayfasında görebilirsin.