Ev / Blog / Bir Oyun Nasıl Yapılır – İşin Yazılım Boyutu #2

Bir Oyun Nasıl Yapılır – İşin Yazılım Boyutu #2

Oyunlardan konuştuğumuz blog serimize devam ediyoruz. Bu yazıdaki konumuz işin en perde önü kısımlarından olan yazılım olacak.

Serinin bir önceki yazımızda ekip ve takım olmaktan konuşmuş, mantığını anlatmaya çalışmıştık. O yazımızı da okumanızı tavsiye ederim. Bu seride işin her türlü kısmından bahsederek ve elimizden geldiğince ayrıntı vererek en azından giriş seviyesinde bilgiye sahip olmanızı hedefliyoruz. Seriyi okuyup kafanızdaki soru işaretlerini çözdüğünüzde bizimle iletişime geçmek isterseniz belki birilerine de yönlendirebiliriz. Neyse daha fazla uzatmadan yazıya geçelim.

Nereden başlamalıyım?

Öncelikle yazılımcı olmadığımı, C# ile hesap makinesi yazmak dışında program yazamayacağımı belirtmek isterim. Fakat işin başlangıç seviyesinde konuşabilecek kadar vasfım var diye düşünüyorum ve programlama dillerini de biraz tanıyorum. Fakat nereden başlamalıyım sorusunun cevabı kesinlikle bi programlama dili değil zaten. Programlama dili tercihinizi ihtiyacınıza göre ya da verilen tavsiyelere göre zaten yaparsınız.

İlk başlangıç noktası kesinlikle ama kesinlikle algoritmanın mantığını öğrenmek olmalı. Algoritma bir programın nasıl çalıştığı, neye göre nasıl hareket ettiğini ya da etmediğini size anlatan yegane unsurdur. Eğer bir program yazacaksanız önceliğiniz o programın kodlarını öğrenmek değil, çalışma prensibini kafanızda ve taslakta oturtmak olmalı. Burada ufak bir örnek vermek ve bu örnekte Portal oyununu kullanmak istiyorum.

Oyunda ‘E’ tuşunu basarak bir kutuyu ya da nesneyi kaldırabildiğinizi hatırlıyorsunuz değil mi? Peki sizce bu mekanizma hangi algoritmayı izliyor? Benim en basite indirilmiş tahmini algoritmam şu şekilde.

E butonuna basılır – Nesne oyuncu mouse ile birlikte hareket edecek şekilde yükselir – Nesne oyuncudan 1 metre uzakta durur – nesne eğer aşılmaz bir engele takılırsa hareketi engellenir – nesne aşılmaz bir engelle oyuncu arasında kalırsa oyuncuya yaklaşır – nesne E butonuna tekrar basıldığında yere düşer.

Şimdi fizik motorudur, odur, budur çok uğraşmadan, aklımdaki en basit algoritmayı bu şekilde oluşturdum, illa eksiği ya da oyun motorunun getirileri dolayısıyla fazlası olabilir fakat mekanizmayı düşünürseniz yukarıda bahsettiğim şekilde çalıştığını siz de fark edebilirsiniz.

Algoritma oluşturmayı öğrenmek, bugların önüne geçmek, programın sorunsuz çalışabilmesini sağlamak ve düzenli kod yazmak açısından çok önemlidir ve hangi programlama dilini kullanırsanız kullanın, bir algoritmaya ihtiyacınız olacak ve genellikle aynı mantıkta çalıştıklarını da unutmamanızda fayda var.

Ee başladık artık, bir dil öğrenelim

Birçok programlama dili var, bunlardan da ufak tefek konuşacağız fakat dil öğrenmeden önce dikkat etmenizi tavsiye edeceğim birkaç şey var. Mesela ihtiyacınıza göre tercih yapmanız, öğrendiğiniz dil elinizde patlamasın değil mi durduk yere? Sonrasında bu ihtiyacınız dahilinde eğer tercih edebiliyorsanız daha kolay olanı tercih etmeniz. Bunalıp, sıkılıp işi bırakmamanız için bence bu da önemli. Çünkü yazılım gerçekten yoğun emek isteyen bir iş. Son olarak da geçerliliği devam eden bir dil öğrenmeye gayret edin. Çoğu yazılım dilinin geçerliliği uzun yıllar sürüyor fakat bahtsız bedevi gibi gidip yanlış bir tercih yaparsanız hem öğrenme aşamasında, hem de sonrasında bol bol zorluk çekersiniz.

Şimdi de bu noktada tasarlayacağınız oyuna yönelik bir dil öğrenmenizde fayda olacak. Adını bol bol duyduğunuz Unity, CryEngine ya da Unreal Engine gibi oyun motorları ile bir oyun yapmak istiyorsanız C#, C++ ve JavaScript öğrenmeniz gerekir. Fakat RPG Maker motoru ile bir oyun yapmak isterseniz genellikle Ruby dilini öğrenmeniz gerekecektir.

Hatırlarsanız önceki yazımızda benim de bir oyun tasarımı üzerine çalıştığımdan bahsetmiştim. Mesela benim senaryom RPG Maker ile tasarladığım bir oyun üzerinden anlatılmakta, buna yönelik yazılmakta. Bu sebeple yazılımını da ben yapacağım için Ruby öğrenmeye çalışıyorum. Fakat eğer sizin tasarlamak istediğiniz oyun fizik motorunun daha önemli olduğu bir oyun olacaksa RPG Maker ihtiyaçlarınızı karşılayamayacaktır ya da en azından pratik yollarla bu ihtiyaçlarınızı çözemeyecek, üzerine çok yoğun uğraşlar vermeniz gerekecek. Öyle bir durumda farklı bir oyun motoru tercih etmeniz daha doğru olur.

Yazının başlarında da belirttiğim gibi, yazılım konusunda bilgilerim maalesef kısıtlı bu yüzden de ilk yazılardan birisinde elemek ve zaman kaybını önlemek istedim zaten. Bir sonraki yazımızda görüşmek üzere. Soru ve yorumlarınızı bekliyorum.

Hakkında Eran "AramdaJungle" Küçük

Buralarda bir şeyler yazıp çiziyor, Oyungg'de yönetici olarak yer alıyor, bir de Marmara Üniversitesinde Radyo, Televizyon ve Sinema okuyor. Öyle pek farklı bir yanı yok, 22 yaşında.

Buna da bak!

Golden Freddy Kimdir? Nereden Gelmiştir?

Korkunç bir pizzacıda peşinizi oyuncak hayvanlar kovalıyor. Yetmiyormuş gibi bir de üstüne halüsinasyonlarıyla uğraşıyorsunuz. Bu …

2 Yorumlar

  1. Öncelikle söylemeliyim ki diğerine göre biraz kısa fakat yine de bilgilendirici bir yazı olmuş. Benim diğer bir aklıma takılan soru ise şu C# , C++ ve Java Script in üçünü birden öğrenmek yerine birini öğrenmemiz Unity gibi ufak ve diğerlerine göre biraz daha basit olan bir oyun motorunda iyi bir iş çıkarmamıza yetebilir mi? Yoksa “Aga bence üşeneceksen hiç bu işlere bulaşma çünkü hepsinden de bir şeyler bilmen gerekiyor” mu diyorsunuz?

    • Eran "AramdaJungle" Küçük

      Evet, dillerden birisini öğrenmen motorda aktif olarak oyun kodlaman için yeterli olacaktır, onlar desteklediği diller olarak ayrılıyor sadece. Fakat şöyle bir önerim olabilir, C dillerinden birisini öğrendiğinde diğer C dillerini de öğrenmen kolaylaşacaktır, birbirlerine yakın diller. Aynı aileden yani en azından. Fakat JS ise sektörde hala en aktif kullanılan dillerden birisi ve sadece o oyun motoru için değil, bilgisayar aleminin her noktasında kulllanabileceğin, seni çok rahat meslek sahibi yapabilecek bir dil. Bu ikilemden kendini çıkartıp kararı vermen gerekiyor sadece. Ayrıca yapıcı eleştirin için teşekkür ederim, biraz daha ayrıntılı yazılar yazacağım. Yazılım konusundaki tecrübe yetersizliğimden kısa kaldı biraz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir