Dijital Oyun Fizik Kuralları ve Çarpışma Hesaplamaları Nasıl Yapılır?
Dijital oyunlarda fizik kuralları ve çarpışma hesaplamaları, sanal bir ortamdaki nesnelerin birbirleriyle ve çevreyle olan etkileşimlerini matematiksel ve algoritmik modellerle simüle etme sürecini ifade eder. Modern oyun geliştirme süreçlerinde bu hesaplamalar, oyuncunun dünyayı ne kadar gerçekçi algıladığını belirleyen ve oyun mekaniklerinin tutarlılığını sağlayan hayati bir mühendislik disiplinidir. İster basit bir mobil oyun, ister devasa bütçeli bir aksiyon oyunu olsun, nesnelerin yer çekimine kapılması, duvarlara çarpması veya bir yüzeyde yuvarlanması tamamen bu fizik kurallarına dayanır.
- Oyun fiziğinin temel çalışma prensipleri ve fizik motoru kavramı.
- Hız, ivme ve yer çekimi gibi kuvvetlerin oyun dünyasındaki matematiksel karşılıkları.
- AABB ve Daire çarpışma algılama yöntemlerinin nasıl uygulandığı.
- Çarpışma yanıtı (Collision Resolution) ve nesnelerin çarpışma sonrası tepkileri.
- Performans optimizasyonu için kullanılan geniş faz ve dar faz teknikleri.
- Oyun fiziği gerçek dünyayı %100 taklit etmek zorunda değildir; önemli olan “oynanabilirlik” ve “tutarlılık”tır.
- Çarpışma hesaplamaları “Algılama” ve “Yanıt Verme” olmak üzere iki ana aşamadan oluşur.
- Her karede (frame) yapılan hesaplamalar işlemciyi yormamak için optimize edilmelidir.
- Fizik hesaplamaları genellikle oyunun grafik döngüsünden bağımsız bir “Fixed Update” döngüsünde çalışır.
Oyun Fiziğinin Temelleri: Vektörler ve Kuvvetler
Bir oyun dünyasında herhangi bir nesnenin hareket etmesi için öncelikle onun nerede olduğunu ve nereye gittiğini bilmemiz gerekir. Bu noktada devreye vektörler girer. Vektörler, hem bir büyüklüğe hem de bir yöne sahip olan matematiksel birimlerdir. Bir karakterin hızı (velocity), sadece ne kadar hızlı gittiğini değil, hangi yöne doğru gittiğini de belirtmelidir. Oyun motorları, nesnelerin konumunu (position) her karede güncelleyerek hareket illüzyonu yaratır.
Hız, konumdaki değişimdir. İvme (acceleration) ise hızdaki değişimdir. Eğer bir karaktere sağ yönlü bir kuvvet uygularsanız, bu kuvvet ivmeyi artırır, ivme hızı artırır ve hız da konumu değiştirir. Bu basit zincirleme reaksiyon, oyun fiziğinin kalbidir. Yer çekimi (gravity) ise genellikle oyun dünyasında aşağı yönlü sürekli bir ivme olarak tanımlanır. Her karede nesnenin dikey hızına eklenen bu sabit değer, nesnelerin yere düşmesini sağlar.
Konum = Konum + Hız * Zaman formülü kullanılır. Buradaki “Zaman” (Delta Time), oyunun farklı bilgisayarlarda aynı hızda çalışmasını sağlayan kritik bir çarpandır.Çarpışma Algılama (Collision Detection) Nedir?
Çarpışma algılama, oyun dünyasındaki iki nesnenin geometrik sınırlarının birbiriyle kesişip kesişmediğini belirleme işlemidir. Eğer oyun motoru bu kontrolü yapmazsa, nesneler birbirinin içinden geçer (ghosting). Çarpışma algılama genellikle nesnenin gerçek görsel modelinden (mesh) daha basit olan “çarpışma kutuları” (colliders) üzerinden yapılır. Bu kutular, hesaplama yükünü azaltmak için kullanılır.
AABB (Axis-Aligned Bounding Box) Yöntemi
En yaygın ve en hızlı çarpışma algılama yöntemi AABB’dir. Bu yöntemde nesneler, döndürülmeyen dikdörtgen kutular içine alınır. Eğer iki kutunun X ve Y eksenlerindeki sınırları birbiriyle örtüşüyorsa çarpışma gerçekleşmiş demektir. AABB hesaplaması oldukça basittir: Birinci kutunun sağ kenarı ikinci kutunun sol kenarından büyükse VE birinci kutunun sol kenarı ikinci kutunun sağ kenarından küçükse (ve aynı durum Y ekseni için de geçerliyse) nesneler çarpışıyordur.
Bir platform oyununda karakterin (Kutu A) koordinatları x:10, y:10 ve genişliği 5 birim olsun. Bir duvarın (Kutu B) koordinatları x:14, y:10 ve genişliği 5 birim olsun. Kutu A’nın sağ kenarı 15’tir (10+5). Kutu B’nin sol kenarı 14’tür. 15 > 14 olduğu için X ekseninde bir temas vardır. Y ekseni de kontrol edilerek kesin çarpışma kararı verilir.
Daire ve Küre Çarpışmaları
Dairesel nesneler için AABB yerine mesafe tabanlı hesaplama kullanılır. İki dairenin merkezleri arasındaki mesafe, bu iki dairenin yarıçaplarının toplamından küçükse, nesneler çarpışıyor demektir. Bu hesaplama için Pisagor teoremi kullanılır. Karekök alma işlemi işlemciyi yorduğu için, genellikle mesafenin karesi ile yarıçaplar toplamının karesi karşılaştırılarak performans artırılır.
| Yöntem | Hesaplama Zorluğu | En İyi Kullanım Alanı |
|---|---|---|
| AABB (Kutu) | Çok Düşük | Binalar, platformlar, zeminler |
| Daire/Küre | Orta | Toplar, karakterler, mermiler |
| Pixel Perfect | Çok Yüksek | Hassas 2D çarpışmalar |
Çarpışma Yanıtı (Collision Resolution)
Çarpışmayı algılamak işin sadece yarısıdır. İkinci aşama, nesnelerin çarpışmadan sonra ne yapacağına karar vermektir. Bir top duvara çarptığında geri mi sekecek, yoksa duvara yapışıp duracak mı? Bu durum, nesnenin “esneklik” (restitution) ve “sürtünme” (friction) değerlerine bağlıdır. Fizik motoru, çarpışma anında nesnelerin hız vektörlerini yansıma formülleriyle yeniden hesaplar.
Ayrıca, çarpışma algılandığında nesneler genellikle birbirinin içine girmiş durumdadır. Çarpışma yanıtı aşamasında, fizik motoru nesneleri birbirinin dışına “itecek” kadar geri çeker. Bu işlem yapılmazsa, nesneler birbirine takılıp kalabilir veya titreme (jittering) yapabilir. Buna “konum düzeltme” denir.
Raycasting: Görünmez Işınlarla Fizik
Raycasting (Işın Atma), bir noktadan belirli bir yöne doğru sonsuza giden veya belirli bir uzunlukta olan görünmez bir çizgi çekme işlemidir. Bu ışın, yoluna çıkan ilk nesneye çarptığında çarpışma bilgisini döndürür. Oyunlarda silahların ateş etmesi, karakterin yerle temas edip etmediğinin kontrol edilmesi veya yapay zekanın oyuncuyu görüp görmediğinin belirlenmesi için Raycasting kullanılır.
Raycasting, geometrik şekillerin birbirine değmesini beklemeden, o yönde bir engel olup olmadığını anlamamızı sağlar. Örneğin, bir yarış oyununda tekerleklerin altından yere atılan kısa ışınlar, aracın yerden yüksekliğini ve zeminin eğimini hesaplamak için mükemmel bir yöntemdir.
Performans ve Optimizasyon: Geniş Faz ve Dar Faz
Bir oyunda binlerce nesne olduğunu düşünün. Her nesnenin diğer tüm nesnelerle çarpışıp çarpışmadığını kontrol etmek (n’lik karmaşıklık) performansı çökertebilir. Bu yüzden fizik motorları iki aşamalı bir sistem kullanır. Geniş Faz (Broad Phase) aşamasında, birbirine uzak olan nesneler hızlıca elenir. Genellikle dünya bölgelere (Grid veya Quadtree) bölünür ve sadece aynı bölgedeki nesneler birbirleriyle kıyaslanır.
Dar Faz (Narrow Phase) aşamasında ise, geniş fazdan geçen “çarpışma adayı” nesneler üzerinde detaylı ve maliyetli geometrik hesaplamalar yapılır. Bu hiyerarşik yaklaşım, işlemci gücünü sadece gerçekten çarpışma ihtimali olan nesnelere harcamamızı sağlar.
- AABB yönteminde iki kutunun çarpışması için hangi şartların sağlanması gerekir?
- Yer çekimi ivmesi, bir nesnenin hangi fiziksel özelliğini her karede doğrudan değiştirir?
- Çok hızlı hareket eden bir nesnenin ince bir duvarın içinden geçip gitmesi olayına ne ad verilir?
- Raycasting teknolojisi bir savaş oyununda en çok hangi mekanik için kullanılır?
- İşlemci yükünü azaltmak için uzak nesneleri eleyen fizik aşamasının adı nedir?
Öğrendiklerinizi Pekiştirin
Dijital oyun fiziği, matematik ve programlamanın en eğlenceli buluşma noktalarından biridir. Bu kuralları anlamak, sadece daha gerçekçi oyunlar yapmanızı sağlamaz, aynı zamanda kodlama mantığınızı ve problem çözme yeteneğinizi de geliştirir. Kendi oyununuzu geliştirirken hazır bir fizik motoru (Unity’nin PhysX’i veya Unreal’ın Chaos’u gibi) kullansanız bile, arka planda dönen bu hesaplamaları bilmek, hataları ayıklamanıza ve daha optimize sistemler kurmanıza yardımcı olacaktır.
- Oyun fiziği, nesnelerin konum, hız ve ivme vektörlerinin her karede güncellenmesidir.
- AABB ve Daire çarpışmaları, en temel ve performanslı çarpışma algılama teknikleridir.
- Tünelleme etkisi gibi sorunlar Sürekli Çarpışma Algılama (CCD) ile çözülür.
- Raycasting, doğrusal etkileşimleri ve mesafe ölçümlerini hesaplamak için kullanılır.
- Fizik motorları, performansı korumak için dünyayı bölümlere ayırarak geniş faz elemesi yapar.


