C++ ile ECS (Entity – Component – System) Yapısı

0 Replies 99 Views
·

Leave a rating: C++ ile ECS (Entity – Component – System) Yapısı

You have already rated this thread. Re-rating it will remove your existing rating or review.

Rating:

Raters: C++ ile ECS (Entity – Component – System) Yapısı

Participants
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ıkAçıklama
ECSEntity - 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

ÖzellikAçıklama
TanımSistemdeki her oyun nesnesinin benzersiz kimliği
İçerikVeri tutmaz, sadece ID’dir
ÖrnekPlayer, düşman, mermi, obje

2.2 Component

ÖzellikAçıklama
TanımEntity’nin özelliklerini tutan saf veri yapıları
Kod içermezSadece veri bulunur
ÖrneklerTransform, Health, Velocity, Sprite, AI
Tipik Component Örnekleri (Mantıksal):
Componentİçeriği
TransformPozisyon, rotasyon, ölçek
VelocityHız vektörü
HealthCan değeri
ColliderÇarpışma sınırı
SpriteGörsel referansı

2.3 System

ÖzellikAçıklama
TanımBelirli component kombinasyonlarını işleyen mantık
GörevDavranışı yönetir
ÖrnekPhysicsSystem, RenderSystem, AISystem

🔁 3. ECS Nasıl Çalışır?

SüreçAçıklama
1Entity oluşturulur
2Component’ler eklenir
3Sistemler uygun component'e sahip entitileri bulur
4Davranışı gerçekleştirir

🧠 4. ECS Veri Akışı Modeli

KatmanGörev
Entity ManagerID üretir ve yönetir
Component StorageBileşenleri kategoriye göre saklar
System ManagerSistemleri çalıştırır
Event ManagerOlayları tetikler
SceneAktif entity grubu

🗂️ 5. ECS Yapısında Kullanılan Ana Sınıflar

SınıfGörev
EntityManagerEntity üretimi/silme
ComponentManagerComponent ekleme/silme
SystemManagerSystem kayıtları
RegistryTüm sistemi koordine eder

⚙️ 6. Component Depolama Modelleri

YöntemAçıklamaPerformans
Sparse ArrayBellek tasarruflu⭐⭐⭐⭐
Dense ArrayYüksek hızlı erişim⭐⭐⭐⭐⭐
SoA (Structure of Arrays)Cache dostu yapı⭐⭐⭐⭐⭐

🚀 7. ECS vs OOP Karşılaştırması

ÖzellikOOPECS
YapıKalıtım bazlıVeri odaklı
PerformansOrtaÇok yüksek
EsneklikDüşükÇok yüksek
Kod KarmaşıklığıArtarModüler

🧱 8. ECS İçinde Tipik Sistemler

SistemGörev
MovementSystemPozisyon günceller
PhysicsSystemFizik hesaplar
CollisionSystemÇarpışma kontrol
RenderSystemÇizim işlemi
InputSystemGirdi yorumlama
ScriptSystemOyun script mantığı

🛠️ 9. ECS ile Oyun Loop Entegrasyonu

Döngü AşamasıECS Rolü
InputInputSystem çalışır
UpdatePhysics + Movement System çalışır
RenderRenderSystem çalışır

🧬 10. Component-Focused Tasarım Stratejisi

KuralAçıklama
Küçük bileşenlerHer component tek görev yapar
Saf veriİçinde iş mantığı bulunmaz
Modülerlikİstenildiğinde sökülüp takılır
KompozisyonKalıtım yerine birleştirme

🔌 11. ECS İçin Olay Sistemi (Event System)

BileşenGörev
Event QueueOlayları sıraya alır
Event ListenerDinleyici sistemler
TriggerÇarpışma, ölüm gibi olaylar

🛡️ 12. Performans Optimizasyonu

TeknikAçıklama
Cache LocalityVeriyi CPU’ya yakın tut
Batch ProcessingSistemleri toplu çalıştır
Minimal PointerReferans yerine düz veri
Parallel SystemÇok çekirdek kullanımına açık yapı

🧪 13. ECS Tasarım Hataları

HataSebep
Fazla büyük componentPerformans kaybı
System içinde logic karmaşasıModüler yapı bozulur
Gereksiz entity çoğaltmaBellek israfı
Veri tekrarlarıSenkron sorunları

🏗️ 14. Örnek ECS Dosya Yapısı

Klasörİçerik
ECS/CoreEngine çekirdeği
ECS/ComponentsBileşenler
ECS/SystemsSistemler
ECS/EntityEntity altyapısı
ECS/EventsOlay 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]

You must be logged in to reply.

0 quotes selected