Uzun bir aradan sonra kısa bir yazı ile karşınızdayım. İki üç haftadır, sayfada bir paylaşım olmadı bunun da elbette bir sebebi var 🙂
Aslında iki sebebi var 😀 Birincisini sizin ile bu yazımda paylaşacağım fakat diğer biraz daha beklemek zorunda ama onu da bu hafta
içerisinde paylaşacağım ve bu sayfa için önemli bir milat noktası olacağı kanısındayım.
Gelelim mevzuya. İlk yazılarımda da bahsettiğim gibi bu sayfayı oluştumamım sebeplerinden birisi de oyun geliştirme ile ilgili türkçe bilgi paylaşımlarında bulunmaktı. Bu konuda artık Unity ve benzeri çok başarılı araçlar olsa da C++ ve benzeri diğer programlama dilleri ile de nasıl oyun geliştirebileceği konusunda da paylaşımlarda bulunmak benim için açıkçası önemli. Burada Unity ile mi oyun geliştirmeli yoksa C++ ile mi tartışmasına girmek istemiyorum (google amca da bunun ile ilgili 500K sonuç var zati Let Me Google For You). Bana kalırsa burada kişisel karar, zaman ve heves konuları önemli rol oynuyor. Açıkçası kendim eğer bu işten para kazanacak olsam ve de kısıtlı bir zamanım olsa hiç düşünmez Unity ile bu işe girerdim. Unity her ne kadar bir “silver bullet” olmasa da amatör ve “indie” bir çok oyun ve uygulama için birebir bir çözüm olacaktır. (Bu arada Unity ile de bir süredir haşır neşir olma şansı yakaladık, onun ile ilgili de yazılar inşallah paylaşacağım sizler ile).
Peki neden C++ ile oyun geliştirme? Kendi düşüncelerim:
– C++’ı sevme :),
– Arka planda gerçekleştirilen mekanik, görselleştirme ve benzeri şeyleri öğrenme,
– Bir önceki maddede yazanlara daha fazla müdahale edebilme,
– Teorik bilgiyi daha kolay pratiğe dökme (bu konuda tam emin değilim ama bana öle geliyor 🙂
– Kodlama pratiği yapma diyebilirim.
Bunların yanında elbette C++’tan gelen bazı güzellikler de yok değil (performans, çoklu platform desteği, vb.).
Bir süredir bu konuda bir hazırlık içerisindeyim ve ilk örnek oyunumuz oldukça somutlaştı. Sayfamda elim, ömrüm ve tabi zamanım elverdiğince her ay sizler ile C++ da geliştirmiş bir oyun paylaşmayı planlıyorum. İleride oyunun karmaşıklığına ve kapsamına göre bu süre uzayabilir. Öncelikle temel oyunlarda başlayıp daha sonra farklı oyunlara kayabiliriz. Tabi burada mükemmel kodlama veya en üst performans ve benzeri kaygılar çok gütmeyeceğim ama gerek Modern C++ yazı dizileri gerekse diğer araç ve benzeri yazılara değindiğimiz hususları da uygulamaya çalışacağım. Kafamdaki format öncelikle çalışan bir oyun ortaya koyup daha sonra bu kademe kademe iyileştirmek üzerine (elbette bir noktaya kadar) en fazla iki üç iterasyon olacak. Ağırlıklı olarak kod içerisindeki yorumlar üzerinden sizlere bilgi vermeye çalışacağım. Kodların olabildiğince eli yüzünü düzgün hale getirmeye çalışacağım. Malum, nette her türlü kod var lakin hepsi takip edilebilir olamayabiliyor. Biz bunların en iyilerini alıp iyileştirmeye çalışacağız.
Sonrasında iste ilerlemek isteyecek arkadaşlar için bu oyun üzerine ekleyebilecekleri kabiliyetlerden bahsetmeye çalışacağım. Bunları yaparak ki bence en önemli öğrenme şekli, sizler de bu oyunları daha güzel noktalara taşıyıp tekrar bizlerle paylaşabilirsiniz. Kodları GitHub üzerinde kademe kademe paylaşacağım. Önce SFML/SDL gibi hazır kütüphaneler kullanacağız daha sonrasında inşallah birlikte
oluşturacağım kütüphaneleri de kullanır hale geliriz Bu bağlamda sizlerle ilk paylaşacağım oyun Tetris olacak. İnşallah bu hafta içerisinde fırından çıkaracağız kodları.
O zaman kadar görüşmek üzere kendinize iyi davranın sevgili yazılımperver dostlarım.