Thread Starter
#0
C++ ile ECS (Entity – Component – System) Yapısı
Detaylı Mimari Rehber (Oyun Motoru İçin)
Bu rehber, C++ kullanarak modern oyun motorlarında kullanılan ECS mimarisini profesyonel seviyede anlamanı sağlar.Amaç: Yüksek performans, düşük bağımlılık ve modüler oyun sistemi kurmak.
📌 1. ECS Nedir? Neden Kullanılır?
| Başlık | Açıklama |
|---|---|
| ECS | Entity - Component - System üçlüsüne dayalı veri odaklı mimari |
| Amaç | Oyun nesnelerini sınıf karmaşasından kurtarmak |
| Farkı | Klasik OOP yerine veri + davranış ayrımı |
| Kazancı | Performans, cache verimliliği, modülerlik |
🧩 2. ECS'in Temel 3 Yapısı
2.1 Entity
| Özellik | Açıklama |
|---|---|
| Tanım | Sistemdeki her oyun nesnesinin benzersiz kimliği |
| İçerik | Veri tutmaz, sadece ID’dir |
| Örnek | Player, düşman, mermi, obje |
2.2 Component
| Özellik | Açıklama |
|---|---|
| Tanım | Entity’nin özelliklerini tutan saf veri yapıları |
| Kod içermez | Sadece veri bulunur |
| Örnekler | Transform, Health, Velocity, Sprite, AI |
| Component | İçeriği |
|---|---|
| Transform | Pozisyon, rotasyon, ölçek |
| Velocity | Hız vektörü |
| Health | Can değeri |
| Collider | Çarpışma sınırı |
| Sprite | Görsel referansı |
2.3 System
| Özellik | Açıklama |
|---|---|
| Tanım | Belirli component kombinasyonlarını işleyen mantık |
| Görev | Davranışı yönetir |
| Örnek | PhysicsSystem, RenderSystem, AISystem |
🔁 3. ECS Nasıl Çalışır?
| Süreç | Açıklama |
|---|---|
| 1 | Entity oluşturulur |
| 2 | Component’ler eklenir |
| 3 | Sistemler uygun component'e sahip entitileri bulur |
| 4 | Davranışı gerçekleştirir |
🧠 4. ECS Veri Akışı Modeli
| Katman | Görev |
|---|---|
| Entity Manager | ID üretir ve yönetir |
| Component Storage | Bileşenleri kategoriye göre saklar |
| System Manager | Sistemleri çalıştırır |
| Event Manager | Olayları tetikler |
| Scene | Aktif entity grubu |
🗂️ 5. ECS Yapısında Kullanılan Ana Sınıflar
| Sınıf | Görev |
|---|---|
| EntityManager | Entity üretimi/silme |
| ComponentManager | Component ekleme/silme |
| SystemManager | System kayıtları |
| Registry | Tüm sistemi koordine eder |
⚙️ 6. Component Depolama Modelleri
| Yöntem | Açıklama | Performans |
|---|---|---|
| Sparse Array | Bellek tasarruflu | ⭐⭐⭐⭐ |
| Dense Array | Yüksek hızlı erişim | ⭐⭐⭐⭐⭐ |
| SoA (Structure of Arrays) | Cache dostu yapı | ⭐⭐⭐⭐⭐ |
🚀 7. ECS vs OOP Karşılaştırması
| Özellik | OOP | ECS |
|---|---|---|
| Yapı | Kalıtım bazlı | Veri odaklı |
| Performans | Orta | Çok yüksek |
| Esneklik | Düşük | Çok yüksek |
| Kod Karmaşıklığı | Artar | Modüler |
🧱 8. ECS İçinde Tipik Sistemler
| Sistem | Görev |
|---|---|
| MovementSystem | Pozisyon günceller |
| PhysicsSystem | Fizik hesaplar |
| CollisionSystem | Çarpışma kontrol |
| RenderSystem | Çizim işlemi |
| InputSystem | Girdi yorumlama |
| ScriptSystem | Oyun script mantığı |
🛠️ 9. ECS ile Oyun Loop Entegrasyonu
| Döngü Aşaması | ECS Rolü |
|---|---|
| Input | InputSystem çalışır |
| Update | Physics + Movement System çalışır |
| Render | RenderSystem çalışır |
🧬 10. Component-Focused Tasarım Stratejisi
| Kural | Açıklama |
|---|---|
| Küçük bileşenler | Her component tek görev yapar |
| Saf veri | İçinde iş mantığı bulunmaz |
| Modülerlik | İstenildiğinde sökülüp takılır |
| Kompozisyon | Kalıtım yerine birleştirme |
🔌 11. ECS İçin Olay Sistemi (Event System)
| Bileşen | Görev |
|---|---|
| Event Queue | Olayları sıraya alır |
| Event Listener | Dinleyici sistemler |
| Trigger | Çarpışma, ölüm gibi olaylar |
🛡️ 12. Performans Optimizasyonu
| Teknik | Açıklama |
|---|---|
| Cache Locality | Veriyi CPU’ya yakın tut |
| Batch Processing | Sistemleri toplu çalıştır |
| Minimal Pointer | Referans yerine düz veri |
| Parallel System | Çok çekirdek kullanımına açık yapı |
🧪 13. ECS Tasarım Hataları
| Hata | Sebep |
|---|---|
| Fazla büyük component | Performans kaybı |
| System içinde logic karmaşası | Modüler yapı bozulur |
| Gereksiz entity çoğaltma | Bellek israfı |
| Veri tekrarları | Senkron sorunları |
🏗️ 14. Örnek ECS Dosya Yapısı
| Klasör | İçerik |
|---|---|
| ECS/Core | Engine çekirdeği |
| ECS/Components | Bileşenler |
| ECS/Systems | Sistemler |
| ECS/Entity | Entity altyapısı |
| ECS/Events | Olay sistemi |
🎯 Sonuç
Bu ECS rehberi ile:✅ Modern oyun motoru mimarisinin kalbini
✅ C++ ile performans odaklı yapı kurmayı
✅ Entity – Component – System ayrımını
✅ Veri odaklı oyun geliştirme mantığını
✅ Profesyonel ECS organizasyonunu
[IMG width="249px" size="1050x1050"]https://i.hizliresim.com/a6d55tm.png[/IMG]