Gerçek bir oyun kodundan ufak bir parça ekliyorum.
template <class dugum_turu, class kenar_turu>
int SeyrekGrafik <dugum_turu, kenar_turu>::dugumEkle (dugum_turu dugum)
{
if (dugum.siraNo () < (int) dugumler_.size ())
{
assert (dugumler_ [dugum.siraNo ()].siraNo ()
== gecersiz_dugum_sira_numarasi &&
"<SeyrekGrafik::dugumEkle>: ayni sira numarasiyla dugum eklemeye calisiyorum");
dugumler_ [dugum.siraNo ()] = dugum;
return sonrakiDugumNo_;
}
else
{
assert (dugum.siraNo () == sonrakiDugumNo_ &&
"<SeyrekGrafik:dugumEkle>: gecersiz dugum sıra no");
dugumler_.push_back (dugum);
kenarlar_.push_back (KenarListe ());
return sonrakiDugumNo_++;
}
}
Görülebileceği üzere genelde oyun kodları C++'nin gelişmiş şablon olanaklarını kullanır.
Orta düzeyde C++ öğrenmek gerekebilir.
C++ için kitap olarak "Accelerated C++: Practical Programming by Example" kitabını önerebiliriz. Yazarları Andrew Koenig ve Barbara E. Moo
C++ dışında diğer iletide bahsettiğim algoritmalar 1 - 2 dersini iyi anlamakta fayda var.
O derslerde A* arama algoritmaları, çizit ("graph") veri yapısı gibi konular anlatılıyor.
Üçüncü basamakta matematik var.
- Trigonometri
- Doğrusal Cebir
- Vektörler
- Matrisler
- Dördeyler
- Ayrık Matematik
- Yüksek Matematik ve Sayısal Yöntemler
Bu matematik konularından bazılarını öğrenmek gerekebilir.
Dördüncü basamakta oyun geliştirme kısmına geldiğimizde önce iki boyutlu basit oyunlarla başlamakta fayda var.
Kitap olarak Mat Buckland tarafından yazılan "Programming Game AI by Example" kitabını önerebilirim.
Yukarıda gösterdiğim kod o kitaptan alınmıştır.
Bu kitap C++ ve yapay zeka anlatıyor.
Basit bir konsol oyunu ile başlayıp, 2D futbol oyunu yapımını anlatıyor. Eğer yanlış hatırlamıyorsam Win32API kullanıyor.
Üç boyutlu oyunlara geldiğinizde ise Unreal motorunun kendi belgelerinden devam edebilirsiniz.