BiyoBubble - Cell Pop: Unity ile 2D Eğitici Oyun Altyapısı ve Tasarım Süreci

19.03.2026
Burak Erol
49 Görüntülenme
BiyoBubble - Cell Pop: Unity ile 2D Eğitici Oyun Altyapısı ve Tasarım Süreci

BiyoBubble - Cell Pop: Unity ile 2D Eğitici Oyun Altyapısı ve Tasarım Süreci

Mobil oyun geliştirmede en büyük zorluklardan biri, eğlence ile eğitimi doğru bir dengede sunabilmektir. Kendi geliştirdiğim BiyoBubble - Cell Pop oyununda temel amacım, klasik baloncuk patlatma (bubble shooter) mekaniklerini biyoloji dünyasıyla harmanlamaktı. Bu yazımda, oyunun temel altyapısını ve 2D hazırlık süreçlerini nasıl kurguladığımı anlatacağım.

1) Konsept ve Oynanış Tasarımı

BiyoBubble'da sıradan renkli toplar yerine hücreler, virüsler ve enzimler kullandık. Oyuncu, ekrandaki hücre kümelerine doğru hücre zarı fırlatarak eşleşmeler yaratıyor ve onları patlatıyor. Bu konsepti oluştururken Unity'de şu temel bileşenlere ihtiyaç duydum:

  • Hücre (Bubble) Prefabları: Farklı renk ve özelliklerde (alyuvar, akyuvar vb.) temel oyun objeleri.
  • Grid Sistemi: Hücrelerin ekranda petek (hexagonal) düzeninde, kaymadan durabilmesi için matematiksel bir dizilim.
  • Atıcı (Shooter) Mekanizması: Dokunulan yöne doğru açıyı hesaplayıp hücre fırlatan sistem.

2) 2D Varlık (Asset) Hazırlığı ve Optimizasyonu

Mobil platformlarda bellek (RAM) yönetimi çok kritiktir. Yüzlerce hücrenin aynı anda ekranda olacağı bir oyunda, her hücre için ayrı bir görsel yüklemek performansı öldürür.

Sprite Atlas Kullanımı

Tüm hücre görsellerini, arayüz butonlarını ve arka plan bileşenlerini Unity'nin Sprite Atlas özelliği ile tek bir büyük görselde birleştirdim. Bu sayede oyun çalışırken GPU, farklı hücreleri çizerken sürekli materyal değiştirmek zorunda kalmıyor. Draw Call sayısını tek haneli rakamlara düşürerek mobil cihazlarda 60 FPS akıcılığı garantiledim.

Collider Optimizasyonu

Hücrelerin birbirine çarpıp yapışmasını algılamak için CircleCollider2D kullandım. Karmaşık yapılı PolygonCollider2D yerine çember collider kullanmak, Unity fizik motorunun çarpışma hesaplamalarını (Collision Detection) neredeyse sıfır maliyetle yapmasını sağlar.

3) Hexagonal (Petek) Grid Mantığının Kurulması

Baloncuk patlatma oyunlarında toplar alt alta düz bir şekilde dizilmez; aralara girerek bir bal peteği görünümü oluştururlar. Bunu sağlamak için satırların tek mi çift mi olduğunu kontrol eden basit ama etkili bir matematiksel döngü kurdum:

// Basitleştirilmiş Grid Dizilim Mantığı
for (int row = 0; row < rows; row++) {
    for (int col = 0; col < columns; col++) {
        // Çift satırlarda hücreleri yarım birim sağa kaydır
        float xPos = col * cellSize + ((row % 2 == 0) ? 0 : cellSize / 2f);
        float yPos = row * (cellSize * 0.85f); // Y ekseninde petek sıkışıklığı
        
        Vector2 spawnPosition = new Vector2(xPos, yPos);
        SpawnCell(spawnPosition, row, col);
    }
}

Bu altyapıyı kurduktan sonra sıra işin en can alıcı noktasına, yani hücreleri fırlatma, object pooling ile RAM dostu kod yazma ve oyunu Google Play'e hazırlama aşamasına gelmişti. Onu da geliştirici günlüğümüzün bir sonraki yazısında ele alacağız!