2B Breakout Oyunu Mimarisi
LearnOpenGL rehberi boyunca öğrendiğimiz tüm grafik prensiplerini gerçek bir projede taçlandırmak için klasik Breakout (Tuğla Kırma) oyununu modern C++ ve saf OpenGL ile sıfırdan inşa ediyoruz!
Bu proje; oyun döngüsü, varlık yönetimi, 2B çizim motoru, fizik çarpışmaları ve görsel efektlerin bir araya geldiği eksiksiz bir oyun mimarisi örneğidir.
Oyun Mimarisi ve Sınıf Yapısı
classDiagram
Game --> ResourceManager : Dokular ve Shaderlar
Game --> SpriteRenderer : 2B Dörtgen Çizici
Game --> GameObject : Oyuncu Raketi & Top
Game --> GameLevel : Tuğla Haritası
Game --> ParticleGenerator : Top İz Efekti
Game --> PostProcessor : Ekran Sallama & Karışım
1. 2B Sprite Renderer (Sprite Çizici)
Tüm 2B oyunlar ekranı kaplayan dokulu dikdörtgenlerden (Sprite) oluşur. Belleği yormamak için tek bir birim kare VAO oluşturur ve konum/boyut/dönme dönüşümlerini Model Matrisi ile shader'a aktarırız:
2. AABB - Daire Çarpışma Tespiti (Collision Detection)
Top (bir daire) ile tuğlalar (eksen hizalı dikdörtgenler / AABB) arasındaki çarpışmayı tespit etmek için, daire merkezine en yakın dikdörtgen noktasını kırparak (clamp) buluruz:
3. Görsel Efektler ve Post-Processing
Oyunun profesyonel görünmesi için 3 özel görsel sistem ekleriz: 1. Parçacık Üreteci (Particle Generator): Top hareket ederken arkasında sönen ve küçülen ateş parçacıkları bırakır. 2. PostProcessor (Ekran Sallantısı & Efektler): Oyuncu can kaybettiğinde veya blok kırıldığında tüm ekranı hafifçe sarsan (Chaos/Shake), renkleri tersine çeviren (Invert) veya bulanıklaştıran Framebuffer efektleri. 3. Güçlendirmeler (Power-ups): Tuğlalardan düşen hızlandırma, ekstra can, yapışkan raket ve delici top bonusları.
Sonuç: Başarılı Bir Oyun Geliştiricisi Yolculuğu!
Bu projeyi tamamladığınızda yalnızca OpenGL komutlarını ezberlemiş olmazsınız; gerçek bir oyun mimarisinin veri yapılarını, matematiksel fiziğini, gölgelendirmesini ve performans optimizasyonunu baştan sona bizzat inşa etmiş olursunuz.
Tebrikler, artık modern bilgisayar grafiklerinin zirvesindesiniz! 🚀