İlk Unity oyunuma başlamadan önce Unity'ye hiç dokunmamıştım. C# biliyordum ama oyun geliştirme farklı bir dünya.

Prosedürel Harita

En çok zaman harcadığım yer burası. Basit bir ızgara tabanlı BSP (Binary Space Partitioning) algoritması kullandım. Odaları rastgele böl, koridorlarla birleştir.

İlk implementasyonumda harita her zaman köşelere sıkışıyordu. Sorun odaların minimum boyutunu kontrol etmemekti. Küçük bir kontrol, saatlik bir hata ayıklama seansının önüne geçebilirdi.

Enemy AI

Basit bir state machine: Patrol → Chase → Attack → Death. NavMesh kullandım.

Öğrendiğim şey: NavMesh baking süreci dikkatli yapılmazsa düşmanlar duvara yürüyor.

Inventory Sistemi

ScriptableObject mimarisi burada hayat kurtardı. Her item bir asset dosyası — Unity'nin en güçlü özelliklerinden biri. Başta her şeyi MonoBehaviour ile yazmaya çalışıyordum; bu yaklaşımı keşfetmek gerçek bir dönüm noktası oldu.

Sonuç

Oyun "oynanabilir" ama "bitmiş" değil. Oyun geliştirmenin acımasız gerçeği: her özellik 3 yeni bug getiriyor.

Ama bu süreci seviyorum. Bir sonraki projem daha küçük scope'lu olacak.