Kısa cevap: başlamak için hayır, ilerlemek için evet — ama sandığın matematik değil.
Başlarken gerçekten gereken
Bir platformer yapmak için lise matematiği bile fazla. Gereken:
Toplama, çarpma, oran
Koordinat düzlemi: x sağa, y yukarı (ya da aşağı, motora göre)
Bir açının derece olduğunu bilmek
Gerçekten bu kadar. İlk oyununu bu bilgiyle bitirirsin.
İlerledikçe çıkanlar
r/gamedev'in SSS'i şunları sayıyor: doğrusal cebir, olasılık, bilgisayar grafikleri teorisi, sonlu durum makineleri, sinyal işleme. İçlerinden doğrusal cebir "oyun geliştiriciler için zorunlu" diye işaretlenmiş.
Ama panik yapma — "doğrusal cebir" burada üniversite dersi değil, üç kavram demek:
Vektörler. Yön ve büyüklük. Karakterin nereye gittiği, mermilerin nereye uçtuğu, düşmanın oyuncuya bakması — hepsi vektör. Toplama, çıkarma, normalize etme ve dot product'ı anladığında işin çoğu bitiyor.
Dot product. İki yönün ne kadar aynı tarafa baktığını söylüyor. "Düşman oyuncuyu görüyor mu", "yüzeye hangi açıyla çarptım" sorularının cevabı bu. Tek bir formül, sürekli kullanılıyor.
Lerp (doğrusal interpolasyon). İki değer arasında yumuşak geçiş. Kamera takibi, renk geçişi, hız artışı. Muhtemelen en çok kullanacağın tek fonksiyon.
Bunların üçü bir hafta sonunda öğrenilir ve oyun geliştirmede karşılaşacağın matematiğin belki %80'ini kapsar.
Nerede öğrenilir
The Nature of Code — Daniel Shiffman, tam metni ücretsiz. Vektörler, kuvvetler, salınım, parçacık sistemleri, otonom ajanlar. Matematiği çalışan örneklerle öğretiyor, formülle değil. Başlamak için en iyi yer.
Red Blob Games — Amit Patel. A*, yol bulma, altıgen ızgaralar, harita üretimi, 2B görüş alanı. Diyagramları sürükleyebiliyorsun; matematik anlatımının nasıl yapılması gerektiğinin örneği.
Inigo Quilez — ileri seviye: işaretli mesafe fonksiyonları, prosedürel gürültü, fraktallar. Shader'a girdiğinde buraya geleceksin.
Shader yazarken — shader neredeyse tamamen matematik.
Prosedürel üretim yaparken — gürültü fonksiyonları, olasılık dağılımları.
Fizik yazarken — ama hazır fizik motoru varken bunu yazmana gerek yok.
Rahatlatıcı kısım
Oyun matematiğinin çoğu ezberlenmiyor, aranıyor. Kimse quaternion formüllerini ezbere bilmiyor; ne zaman quaternion gerektiğini biliyor ve gerisini arıyor.
Ayrıca motorlar bu işin büyük kısmını zaten yapıyor: Vector3.Distance, Mathf.Lerp, look_at gibi hazır fonksiyonlar var. Senin işin formülü yazmak değil, hangi fonksiyonun ne işe yaradığını bilmek.
Aynı SSS'in bir başka yerinde şu da yazıyor: "Herkes oyun yapabilir. Usta programcı olmayı gerektirmez, hatta acemi programcı bile olmayı gerektirmez." İki cümle çelişiyor gibi duruyor ama ikisi de doğru — başlamak için yeter, ustalaşmak için yetmez.
Oyun yapmak için matematik şart mı?
Kısa cevap: başlamak için hayır, ilerlemek için evet — ama sandığın matematik değil.
Başlarken gerçekten gereken
Bir platformer yapmak için lise matematiği bile fazla. Gereken:
Gerçekten bu kadar. İlk oyununu bu bilgiyle bitirirsin.
İlerledikçe çıkanlar
r/gamedev'in SSS'i şunları sayıyor: doğrusal cebir, olasılık, bilgisayar grafikleri teorisi, sonlu durum makineleri, sinyal işleme. İçlerinden doğrusal cebir "oyun geliştiriciler için zorunlu" diye işaretlenmiş.
Ama panik yapma — "doğrusal cebir" burada üniversite dersi değil, üç kavram demek:
Vektörler. Yön ve büyüklük. Karakterin nereye gittiği, mermilerin nereye uçtuğu, düşmanın oyuncuya bakması — hepsi vektör. Toplama, çıkarma, normalize etme ve dot product'ı anladığında işin çoğu bitiyor.
Dot product. İki yönün ne kadar aynı tarafa baktığını söylüyor. "Düşman oyuncuyu görüyor mu", "yüzeye hangi açıyla çarptım" sorularının cevabı bu. Tek bir formül, sürekli kullanılıyor.
Lerp (doğrusal interpolasyon). İki değer arasında yumuşak geçiş. Kamera takibi, renk geçişi, hız artışı. Muhtemelen en çok kullanacağın tek fonksiyon.
Bunların üçü bir hafta sonunda öğrenilir ve oyun geliştirmede karşılaşacağın matematiğin belki %80'ini kapsar.
Nerede öğrenilir
Ne zaman gerçekten lazım olur
Rahatlatıcı kısım
Oyun matematiğinin çoğu ezberlenmiyor, aranıyor. Kimse quaternion formüllerini ezbere bilmiyor; ne zaman quaternion gerektiğini biliyor ve gerisini arıyor.
Ayrıca motorlar bu işin büyük kısmını zaten yapıyor:
Vector3.Distance,Mathf.Lerp,look_atgibi hazır fonksiyonlar var. Senin işin formülü yazmak değil, hangi fonksiyonun ne işe yaradığını bilmek.Aynı SSS'in bir başka yerinde şu da yazıyor: "Herkes oyun yapabilir. Usta programcı olmayı gerektirmez, hatta acemi programcı bile olmayı gerektirmez." İki cümle çelişiyor gibi duruyor ama ikisi de doğru — başlamak için yeter, ustalaşmak için yetmez.
Diğer sık sorular ayrı bir konuda.
Tartışmaya katılmak için giriş yap. Giriş yap