Yazılımla uğraşan bir çok kişi oyun programlamaya da merakı oluyor. Aslında oyun da sonuç olarak bir yazılım. Oyun programlamaya başlamak isteyenlerin genelde kafasına takılan sorular , oyun programlamaya nasıl başlamalıyım ve hangi dilleri kullanmam gerekir türünden sorular oluyor. Bu soruyu soran kişinin ilk olarak ne tür oyunlar yapacağına karar vermesi gerekir. Bunlar browser tabanlı oyunlar,flash oyunları,mobil oyunlar, pc oyunları olabilir. Sonrasında bu oyunlar 2d mi yoksa 3d mi olacak buna karar vermesi gerekir.
2d oyunlarla başlamak daha kolay olabilir ve tek kişi çalışılacaksa 3d projeler altından kalkılamaz duruma gelebilir. Bazı arkadaşlar gaza gelip MMORPG yapalım diye forumlara ilan veriyorlar. Ama MMO oyun oynamaktan başka bir tecrübesi olmayan bu arkadaşlar boşa vakit harcıyorlar. İşe yarar bir MMO oyun yapmak için network, yapay zeka ,oyun dizaynı gibi kendi içinde uzmanlık ve araştırma gereken işlerin altına girmek gerekir. Bunun yanında grafik tarafında konsept tasarım ,modelleme ,animasyon işini yapacak kişiler gerekiyor.
Bu nedenlerden dolayı böyle gaza gelmektense daha mantıklı ilerlemek gerekiyor. Ben mesela şimdiki aklım öğrencilik zamanında olsaydı flash oyun programlama işine girerdim. Şu aralar mobil oyun programlama revaçta olsa da artık mobil uygulama marketleri çöp haline gelmeye başladı. Kullanıcıya uygulamanızı ulaştırmak gerçekten zor iş olmaya başladı. Flash bir oyun yaptığınızda bunu kolay bir şekilde 100 000 lerce kişiye ulaştırabiliyorsunuz. Biraz işe yarar bir uygulama yaptıysanız reklamdan gelir de elde edebiliyorsunuz.
Bu anlamda Mochi Ads sitesinden bilgi edinebilirsiniz. Bunun yanında uygulamanıza sponsor bulabiliyorsunuz.
Bu sponsorlar genelde sitelerine trafik sağlamak için bunu yapıyorlar.
Bazı kişiler flash öldü diyorlar ancak browser oyunlarında flasha herhangi bir rakip hala yok. Ne HTML5 performansı yeterli nede Unity plugini yeterince yaygın.
Flash oyun yapmak için Action script 3 programla dili bilmeniz yeterli. Bir çok ücretsiz araç bulunmakta.
Ide olarak Flash Develop yaygın kullanılıyor , Bunun yanında ücretsiz grafik kütüphaneleri mevcut.Starling 2d grafik motorlarından biri Angry Birds yapımında kullanılmış. 3d grafik motorlarının sayısı Flash 11 donanım desteğiyle de artmış bulunmakta. Bunların yanında bir çok oyun motoru flash export seçeneği eklemeye başladı. Unity3d de bu motorların içinde yer alıyor.
Bazı programcılar ise PC platformunda oyun yapmak isteyebilir. Bunun için hangi dilleri kullanmamız gerekir diyebilirler. Büyük firmalar c/c++ kullanıyor olabilir ama yeni başlangıç yapan birisi tek başına bu dillerle bişeyler yapması zor. Bunun için oyun motorlarını kullanmalarını tavsiye ediyorum. Oyun mantığını kavrayıp 1 -2 proje gerçekleştirdikten sonra zaten size performas mı kolaylık mı gerekiyor bunun kararını verebilirsiniz.
Oyun programlama yapmaya başlamadan bile performans işine çok takıp üretimde bulunamayan kişiler var.
Onun için hangi dil ve motoru seçmeliyim gibi şeylere zaman çok harcamayın derim.
oyun programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
oyun programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
5 Ocak 2013 Cumartesi
19 Mart 2010 Cuma
multiplayer oyun server client mimarisi
Birçok oyun artık internet üzerinden veya LAN ağı kullanılarak oynanabiliyor .Oyunların multiplayer olarak oynanabilmesi için bilgisayarlara yüklü olan programların birbiri ile haberleşebilmesi ve durumlarını birbirine iletmesi gerekiyor .Bilgisayarların birbiri arasında haberleşmesi için genel olarak iki tür sistemden bahsedebiliriz. Bunlar Peer to Peer ve server/client mimarisi .
Peer to Peer ağları her bilgisayarın birbiri ile direkt haberleşebildiği ve oyunun seyrinin her bilgisayar da hesaplanması gereken bir network yapısı .

Peer to Peer ağları her bilgisayarın birbiri ile direkt haberleşebildiği ve oyunun seyrinin her bilgisayar da hesaplanması gereken bir network yapısı .
Peer to peer networkte bilgisayarların birbiri ile haberleşmesi ve kontrolu server client mimarisine göre hızlı ve kolay olmasına karşın sistem güvenliğini sağlamak daha zor .Çünkü clientler arasındaki iletişim server üzerinden olmakta .
Asıl konumuz Server client ilişkisi .Oyunlarda sistemin bir bütün olarak bir elden çalışabilmesi için iyi bir yöntem diyebiliriz .Aslında bu mimaride coğu işi server yapar .Clientler yapılan girişleri servera iletmekle ve sonuçlarını erkanda göstermekle mesuldurlar .Yani kısacası oyunda kullandığımız klavye ve fare girişlerini servera iletir ve kendisine dönen cevapları işler .
Server ise oyunun seyrini belirler bütün hesaplamalar ,yapay zeka algoritmaları ,fiziksel hesaplamaları ve clientlerden gelen girişleri oyuna ilave eder ve durumu clientlerine bildirir .
Serverın görevlerinden kısaca bahsedersek .
-fiziksel hesaplamalar
-yapayzeka algoritmaları
-çarpışma testleri
-iletişimi sağlama
Tabi bu işleri gerçekleştirmek için ve sistem performansını artırmak için bir çok ileri seviye algoritmalardan faydalanmak gerekiyor .
Son olarak server ve client ilşkisini gösteren kaba kodu ekliyorum ..

21 Ocak 2010 Perşembe
Oyun Programlamaya Dönüş
İkinci sınıfın başında nasıl oluyor da bu oyunlar yapılıyor diye bir merakla başladığım araştırmalarda bu işin aslında ne kadar zor ve eğlenceli olduğunu görmüştüm .Tabi o aralar oyun yapabilmem için elimde bulunan tek yardımcım c programlama bilgim olmuştu ama buda başlangıç seviyesinde idi . Bende doğal olarak bütün işi bu bilgimle götürmeye başlamıştım .Bu dil ile window uygulaması yazmak bir ölümdü .Hazır hiç bir tool da kullanmıyordum .Dolayısıyla işler çok yavaş işler olmuştu .Sonradan derslerin kötü gitmesiyle beraber bu işten soğumaya başladım ama iyi tarafı birçok konuda bir fikir sahibi olmuştum .
Çalışmaların gidişatını blogumda örneklerle paylaşmayı düşünüyorum .Böylelikle meraklıları için bir fikir vermiş olabiliriz .
Şimdi bu işe C# kullanarak yeniden başlamaya karar verdim .Bu işe yeniden başlamaya karar verme nedeni söylesem baya gülmenize neden olurdu . Yapmak istediğim oyunlar daha çok nostaljik atari oyunları (zamanında az oynamamıştım) .Hatta ilk oyun projem olarak oynayanlar bilir 90 tank oyunu olacak .Oyunda amaç düşman tanklarına karşı kartalı korumak .Ataride 1 veya 2 kişilik oynanabiliyordu .Bir haritatada tankların hepsini vurduktan sonra bir sonraki haritaya geçiliyordu .Oynu network programlamayla multiplayer programlanabilirse baya eğlenceli olabilir.
Bu fikrimi Uğurla paylaştığımda hemen kendisini de bu işe dahil etmemi istedi . Tabiki böyle bir şeyle uğraşmak bir grup olarak daha da eğlenceli olucaktı .Yeni fikirler bulmak sorunları tartışarak bir çözüme kavuşturmak belkide zevkli yanıydı .Hatta Uğur bir basamak daha ileri giderek bir oyun yarışması bulmuş hemen .Benim ilk hedefim eğlenerek bir şeyler öğrenmek olduğu için hemde biraz tecrübe edinmemiz gerektiğini düşündüğüm için bunu şimdilik erteledim . İlerde olur da güzel bir fikir gelirse neden olmasın .
Sonradan Hasanın da katılmasıyla birlikte bana göre ideal sayıya ulaşmış olduk .Şimdi işin zor tarafı kaldı .Hangi konuların araştırılacağı bu konuların nasıl dağıtılacağı .Şimdilik benim aklıma gelen genel konular .
- basit olarak yapay zeka algoritmaları
- seslerin yönetimi
- grafikler
- network progralama işlemleri
- haritalama seçenekleri
- genel olarak kullanılabilecek veri yapıları .
Aklıma gelen başka bir oyun fikri yine atari oynu olan load runner . Bu oyunda baya eğlenceli bir oyundu .Özellikle bazı haritaları çok iyi tasarlanmış ve çözümü oldukça zordu .Bu oynu yapmak biraz kastırabilir .Bu oynada bir editör programı tasarlayarak oyuncunun kendi oluşturduğu haritalarda oynayabilmesi oynun eglencesini arttırabilir .
Kaydol:
Kayıtlar (Atom)

