Projeni Saklama. Yayınla.
Moonline Network ile hemen paylaş.
Katıl →

Oyununuz İçin Prosedürel Zindanlar Tasarlama: Adım Adım Unreal Engine Rehberi

< ANA DİZİN | Başlatan: SynthWeaver | Tarih: Nisan 13, 2026

Her oyuncunun hayalidir: her oynadığında değişen, sonsuz keşif imkanı sunan bir dünya. Diablo'nun rastgele haritaları, The Binding of Isaac'in her seferinde farklılaşan odaları ya da Hades'in sürekli yeniden şekillenen yeraltı dünyası... Bu oyunları unutulmaz kılan sihir, büyük ölçüde tek bir teknolojiden besleniyor: Prosedürel İçerik Üretimi (PCG). Peki, bu büyüyü kendi oyununuza nasıl taşıyabilirsiniz? Özellikle de Unreal Engine gibi güçlü bir motor kullanıyorsanız, cevap sandığınızdan çok daha yakın. Bu rehberde, Unreal Engine 5'in devrim niteliğindeki PCG Framework'ünü kullanarak sıfırdan, adım adım fonksiyonel bir prosedürel zindan oluşturacağız. Artık statik ve sıkıcı seviyelere veda etme zamanı. Kemerlerinizi bağlayın, çünkü oyununuzun tekrar oynanabilirlik değerini arşa çıkaracak bir yolculuğa çıkıyoruz!

## Prosedürel İçerik Üretimi (PCG) Nedir ve Neden Bu Kadar Önemli?

Prosedürel İçerik Üretimi, en basit tanımıyla, oyun içeriğini (haritalar, nesneler, düşmanlar, görevler vb.) manuel olarak tasarlamak yerine, belirli kurallar ve algoritmalar aracılığıyla bilgisayarın otomatik olarak oluşturmasıdır. Bu, indie geliştiriciler için adeta bir can simididir. Neden mi?

* **Sonsuz Tekrar Oynanabilirlik:** Oyuncular her oyuna başladıklarında farklı bir deneyimle karşılaşır. Bu, oyununuzun ömrünü uzatır ve oyuncu bağlılığını artırır.
* **Geliştirme Süresinde Tasarruf:** Yüzlerce odayı veya devasa bir açık dünyayı elle tasarlamak aylar sürebilir. PCG ile bu süreyi haftalara, hatta günlere indirebilirsiniz.
* **Beklenmedik Anlar Yaratma:** Algoritmaların getirdiği rastgelelik, bazen geliştiricinin bile öngöremeyeceği ilginç ve eşsiz oyun anları yaratır.

Ancak bu gücün bir bedeli var: Performans. Binlerce nesneyi anında oluşturmak ve yönetmek, ciddi bir optimizasyon bilgisi gerektirir. Bu noktada, oyun motorlarının temel mimarilerini anlamak kritik hale gelir. Örneğin, Unity dünyasında bu tür performans sorunlarına çözüm olarak geliştirilen [Unity ECS (DOTS) yaklaşımı](https://indieatolye.com/konu/unity-ecs-dots-ile-performans-canavari-yaratmak-geleneksel-oop-yaklasimina-karsi-neden-gecmeliyiz/), geleneksel nesne yönelimli programlamaya kıyasla çok daha verimli sonuçlar sunabilir. Neyse ki, Unreal Engine'in PCG Framework'ü, bu optimizasyonların birçoğunu arka planda kendisi halleder.

## Projeye Hazırlık: Gerekli Eklentiler ve Ayarlar

Zindanımızı inşa etmeye başlamadan önce motorumuzu hazırlamamız gerekiyor. Unreal Engine 5.1 ve sonrası sürümlerde PCG, bir eklenti olarak gelir ve varsayılan olarak aktif olmayabilir.

1. **PCG Framework Eklentisini Aktif Edin:** Üst menüden `Edit > Plugins` yolunu izleyin. Açılan pencerede "PCG" diye aratın ve `Procedural Content Generation Framework` eklentisini bulup yanındaki kutucuğu işaretleyin. Motoru yeniden başlatmanız istenecektir.
2. **Temel Varlıkları Oluşturun:** Content Browser'da yeni bir klasör oluşturun. İçine sağ tıklayarak `PCG > PCG Graph` seçeneği ile yeni bir PCG grafiği oluşturun. Adını `PCG_ZindanGenerator` olarak belirleyebilirsiniz. Ardından, bu grafiği dünyada çalıştırmak için bir `Actor Blueprint` oluşturun ve içine `PCG Component` ekleyin. Bu component'in `Details` panelinden az önce oluşturduğunuz `PCG_ZindanGenerator` grafiğini seçin.

Bu iki basit adımla artık prosedürel dünyalar yaratmak için gereken temel altyapıyı kurmuş olduk.

## Adım Adım Zindan Oluşturma Mantığı: Odalar ve Koridorlar

Zindanımızın temelini, birbirine koridorlarla bağlı odalar oluşturacak. Bunun için basit bir grid (ızgara) tabanlı mantık izleyeceğiz.

### Adım 1: PCG Graph ile Ana Oda Noktalarını Oluşturma

`PCG_ZindanGenerator` grafiğini açın. Karşınıza boş bir kanvas çıkacak. Temel mantığımız, önce odaların olabileceği potansiyel noktaları belirlemek, sonra bu noktalardan rastgele bazılarını seçmektir.

* **Create Points Grid:** Grafiğe sağ tıklayın ve `Create Points Grid` nodunu ekleyin. Bu nod, belirlediğiniz boyutlarda bir ızgara üzerinde noktalar oluşturur. `Grid Extents` değerini artırarak zindanınızın potansiyel büyüklüğünü ayarlayabilirsiniz.
* **Self Pruning:** Tüm noktalarda oda olmasını istemiyoruz. Bu yüzden `Self Pruning` nodunu ekleyin. Bu nod, birbirine çok yakın olan noktaları eleyerek daha seyrek ve rastgele bir dağılım sağlar. `Pruning Type`'ı `Random` olarak ayarlayıp `Random Chance` değerini değiştirerek oda yoğunluğunu kontrol edebilirsiniz.

### Adım 2: Odaları "Spawn" Etmek

Artık odalarımızın nerede olacağını belirleyen noktalarımız var. Şimdi bu noktalara fiziksel birer oda yerleştirelim.

* **Transform Points:** Odalarımızın hepsinin aynı boyutta olması sıkıcı olurdu. `Transform Points` nodu ile her noktanın `Scale` (ölçek) değerini rastgele değiştirebiliriz. `Min` ve `Max` değerlerini ayarlayarak oda boyutlarındaki çeşitliliği artırın.
* **Static Mesh Spawner:** Son olarak, `Static Mesh Spawner` nodunu ekleyin. Bu nod, gelen her nokta verisi için bir statik mesh oluşturur. `Mesh Entries` kısmına basit bir küp veya zemin mesh'i ekleyin. Artık seviyeyi çalıştırdığınızda, belirlediğiniz noktalarda farklı boyutlarda zeminlerin oluştuğunu göreceksiniz. İşte zindanımızın ilk odaları!

Bu süreçte [indieatolye.com/etiket/level-design](https://indieatolye.com/etiket/level-design) prensiplerini akılda tutmak, sadece rastgele değil, aynı zamanda oynanabilir ve eğlenceli alanlar yaratmanıza yardımcı olur.

### Adım 3: Koridorlar İçin Yol Bulma (Pathfinding) Mantığı

Bu, işin en karmaşık ama en keyifli kısmı. Odaları birbirine bağlamak için çeşitli algoritmalar (Minimum Spanning Tree, A* vb.) kullanılabilir. Unreal PCG'de bunu yapmanın birkaç yolu var. Başlangıç için en anlaşılır yöntemlerden biri, odaları bir `Spline` ile birbirine bağlamaktır.

`Get Spline Data` nodu ile seviyeye manuel olarak çizdiğiniz bir spline'ı grafiğe dahil edebilir, ardından `Spline Sampler` ile bu spline boyunca noktalar oluşturabilirsiniz. Bu noktalara da bir `Static Mesh Spawner` ile koridor parçaları yerleştirebilirsiniz. Bu yöntem manuel olsa da, PCG'nin gücünü anlamak için harika bir başlangıçtır. Daha ileri seviyede, bu spline'ları odaların merkez noktaları arasında otomatik olarak oluşturan Blueprint veya C++ kodları yazılabilir.

## Zindanı Detaylandırma: Props, Düşmanlar ve Atmosfer

Temel iskeleti oluşturduktan sonra zindanı hayata geçirme zamanı geldi. PCG sadece zemin ve duvar oluşturmak için değil, aynı zamanda dünyayı zenginleştirmek için de kullanılır.

* **Props (Eşyalar) Yerleştirme:** Oda zeminlerimizin üzerine `Surface Sampler` nodunu kullanarak yeni noktalar oluşturun. Bu noktalar; sandık, fıçı, meşale gibi detayları yerleştirmek için idealdir. Ardından bu noktalara, içinde birden fazla mesh bulunan bir `Static Mesh Spawner` bağlayarak rastgele eşyalar yerleştirin.
* **Düşman ve Etkileşimli Nesneler Ekleme:** PCG sadece statik mesh'ler değil, aynı zamanda Blueprint'leri de spawn edebilir. `Spawn Actor` nodunu kullanarak belirlediğiniz noktalara düşman karakterleri, interaktif kapıları veya tuzakları yerleştirebilirsiniz. Bu, [indieatolye.com/etiket/procedural-generation](https://indieatolye.com/etiket/procedural-generation) tekniğinin gücünü tam anlamıyla sergiler.

Grafik kalitesi ve performans dengesi bu aşamada çok önemlidir. Farklı render pipeline'larının nasıl çalıştığını anlamak, bu dengeyi kurmanıza yardımcı olabilir. Her ne kadar farklı bir motor için olsa da, [Unity SRP optimizasyonundaki sırlar](https://indieatolye.com/konu/unity-srp-optimizasyonunda-gizli-tuslar-urp-hdrp-ile-performans-ve-gorsel-kaliteyi-dengelemek/) yazısındaki temel prensipler, Unreal Engine'de de materyal ve ışık optimizasyonu için size ilham verebilir.

## Optimizasyon ve İleri Seviye Teknikler

Prosedürel olarak oluşturulan binlerce nesne, oyununuzun performansını ciddi şekilde etkileyebilir. Unreal Engine, Hierarchical Instanced Static Meshes (HISM) kullanarak aynı mesh'in binlerce kopyasını çok verimli bir şekilde render eder. `Static Mesh Spawner` nodu genellikle bu tekniği otomatik olarak kullanır.

> **Pro İpucu:** PCG grafiğinizin `Details` panelindeki `Seed` değeri, üretimin rastgeleliğini kontrol eder. Aynı `Seed` değeri her zaman aynı sonucu üretir. Bu, bir hata ayıklama (debugging) sürecinde veya belirli bir zindan düzenini tekrar oluşturmak istediğinizde hayat kurtarıcıdır.

Oyununuzun mekanikleri ve prosedürel yapısı tamamlandığında, bir sonraki büyük adım onu oyuncularla buluşturmaktır. Bu süreç de kendi içinde birçok adıma ayrılır. Baştan sona tüm süreci öğrenmek için [Sıfırdan Steam'e Oyun Yayınlama Rehberi](https://indieatolye.com/sifirdan-steame-oyun-yayinlama-rehberi-tam-surec/) adlı kapsamlı kaynağımıza göz atmanızı tavsiye ederiz.

## Indie Geliştiriciler İçin PCG'nin Geleceği

PCG, küçük ekiplerin ve tek kişilik geliştiricilerin, büyük stüdyolarla rekabet edebilecek ölçekte ve derinlikte dünyalar yaratmasını sağlayan bir güç çarpanıdır. Unreal Engine'in bu aracı doğrudan motora entegre etmesi, bu teknolojiyi her zamankinden daha erişilebilir kılıyor. Bu sadece başlangıç. Gelecekte yapay zeka destekli PCG sistemleri ile çok daha dinamik, oyuncunun hareketlerine göre şekillenen dünyalar göreceğiz.

Bu tür büyük ölçekli ve teknolojik olarak karmaşık projeler, bazen altyapı ve sunucu yönetimi gibi ek uzmanlıklar gerektirebilir. Özellikle online özellikler eklemeyi düşünen geliştiriciler için, Moonline Network gibi deneyimli ekipler, projenizin online altyapısını sağlam ve ölçeklenebilir bir temele oturtmanıza yardımcı olabilir. Bu sayede siz sadece oyununuzun yaratıcı kısmına odaklanabilirsiniz. Mobil oyunlar için ise performans her şeydir ve bu konuda [Godot 4'teki render performansı optimizasyonları](https://indieatolye.com/konu/godot-4te-render-performansi-ve-shader-optimizasyonu-mobil-cihazlar-icin-sirlar/) gibi diğer motorlardaki tecrübeler bile ufuk açıcı olabilir.

Bu rehber, [indieatolye.com/etiket/unreal-engine](https://indieatolye.com/etiket/unreal-engine) ile prosedürel zindan oluşturmanın sadece yüzeyini çiziyor. Buradaki nodları ve konseptleri bir başlangıç noktası olarak kullanın. Farklı nodları birleştirin, kendi Blueprint nodlarınızı yazın ve hayalinizdeki o sonsuz, tekrar oynanabilir dünyayı yaratmak için denemekten çekinmeyin.

## Bilgini Paylaş, Topluluğa Katıl: Indie Atölye Discord'u Seni Bekliyor!

Bu rehberde öğrendiklerinle harika bir prototip mi hazırladın? Ya da bir noktada takılıp yardıma mı ihtiyaç duydun? Belki de sadece senin gibi oyun geliştirmeye tutkulu insanlarla tanışmak istiyorsundur. Sebebi ne olursa olsun, Indie Atölye'nin Discord sunucusu tam sana göre! Burada projelerini paylaşabilir, sorular sorabilir, tecrübeli geliştiricilerden geri bildirim alabilir ve Türkiye'nin en aktif indie oyun geliştirici topluluğunun bir parçası olabilirsin.

**Unutma, en iyi oyunlar işbirliği ile ortaya çıkar. Hemen şimdi aramıza katıl ve geliştirme serüveninde yalnız yürüme!**

> Sisteme Cevap İlet

Cevap yazmak için lütfen giriş yapın.
DİSCORD'A KATIL