Oyun motoru nasıl yapılır?

Ya ben oyun motoru yapmak istiyorum bana söyleyin yapayım başka oyun motorları falan kullan demeyin sadece söyleyin. Allah Allah!
Peki dostum. Sadece birkaç tane söyleyeyim o zaman.

  • Oyun motoru basit şeyleri sağlar. Bir modeli çizdirmek gibi.
  • Bilgisayar mimarisinin inceliklerini bilmelisin, bellek işlemlerinde çok hakim olmalısın. Bir seviyeyi geçtikten sonra önceki seviyenin belleğimde olmasını (eğer ilerilerde kullanılmayacak ise) şahsen istemem.
  • Fizik motoru, oyun fizikleri için. BeamNG.Drive'ın fizik motoru aşırı gelişmiş bir motor, oradan feyz alabilirsin.
  • Klavye, fare, joystick, gamepad, direksiyon seti gibi cihazların girdileri. Sonuçta her türden oyun çıkabilecek bir motordan bahsediyoruz.
  • Işın izleme. Yerde örneğin su olduğunu belirtmenin en iyi yolu. Bunun için de üniversite matematiği gerekli.
  • Aynı şekilde, gölgeler için de üniversite matematiği gerekli.
  • Seviye editör uygulaması. İnsanlar seviyelerini senin motorun ile gelen uygulama ile tasarlayabilmeli ki iş daha kolay olsun.
  • Olaylar. Örneğin klavye tuşuna basıldığında oyuncunun hareket etmesi, veya fare çevrildiği zaman oyuncu kamerasının değişmesi gibi.
  • Sen bunları farklı donanımlarda çalıştırabilmelisin ki daha büyük çaplı stüdyolar da tercih edebilsin.
Şimdi bunlar bir oyunda artık zorunlu diyebileceğimiz şeyler. Oyun motorlarının da amacı bu; oyunlarda kullanılan temel mekanizmaları tekrar tekrar yazmamamız için varlar. Bahsettiklerimden çok çok daha geniş bir skalayı ele alıyor oyun motorları.
 
2D-3D render etme, carpisma mekanikleri, fizik motoru, networking, memory kontrolu, scripting ve yapay zeka, sinematikler, sahne dinamikleri, kullanici IO yonetimi ( gamepad - klavye - mouse vb ), ses mekanigi ( surround vs ), dil destegi gibi konularda oyun gelistiricilerine framework SDK si vermen gerekiyor.
Bunlarin yanisira farkli platformlar icin port destegi ( multiplatform support ), editor ( sahne/scripting editoru ), temel GUI destekli kod editoru vs de olusturup ship edebilirsin oyun motorunun yanisira.

Neredeyse her oyunda olmasi gereken temel konseptleri bir abstraction altinda toplarsan ve bir SDK altinda sunarsan oyun motoru yazmis oluyorsun.
 
Ya ben oyun motoru yapmak istiyorum, bana söyleyin yapayım. Başka oyun motorları falan kullanın demeyin, sadece söyleyin.
Araştırmayı bilmeyen biri kesinlikle yapamaz. Bu cevap yeter mi?
Peki dostum. Sadece birkaç tane söyleyeyim o zaman.

  • Oyun motoru basit şeyleri sağlar. Bir modeli çizdirmek gibi.
  • Bilgisayar mimarisinin inceliklerini bilmelisin, bellek işlemlerinde çok hakim olmalısın. Bir seviyeyi geçtikten sonra önceki seviyenin belleğimde olmasını (eğer ilerilerde kullanılmayacak ise) şahsen istemem.
  • Fizik motoru, oyun fizikleri için. BeamNG.Drive'ın fizik motoru aşırı gelişmiş bir motor, oradan feyz alabilirsin.
  • Klavye, fare, joystick, gamepad, direksiyon seti gibi cihazların girdileri. Sonuçta her türden oyun çıkabilecek bir motordan bahsediyoruz.
  • Işın izleme. Yerde örneğin su olduğunu belirtmenin en iyi yolu. Bunun için de üniversite matematiği gerekli.
  • Aynı şekilde, gölgeler için de üniversite matematiği gerekli.
  • Seviye editör uygulaması. İnsanlar seviyelerini senin motorun ile gelen uygulama ile tasarlayabilmeli ki iş daha kolay olsun.
  • Olaylar. Örneğin klavye tuşuna basıldığında oyuncunun hareket etmesi, veya fare çevrildiği zaman oyuncu kamerasının değişmesi gibi.
  • Sen bunları farklı donanımlarda çalıştırabilmelisin ki daha büyük çaplı stüdyolar da tercih edebilsin.
Şimdi bunlar bir oyunda artık zorunlu diyebileceğimiz şeyler. Oyun motorlarının da amacı bu; oyunlarda kullanılan temel mekanizmaları tekrar tekrar yazmamamız için varlar. Bahsettiklerimden çok çok daha geniş bir skalayı ele alıyor oyun motorları.
Ben de ekleme yapmak istiyorum. Hadi bunları yaptı diyelim, insanlar niye tercih edecek? Finansal işler, hukuki işler, web sitesini oluşturma, oyun motorunu oyuna entegre etme vb. Say say bitmez.
 
Programlama bilseniz belki hobi amaçlı falan az buçuk uğraşılır. Ama siz daha programlama dili bile bilmiyorsunuz.
Heves kırmak istemem. Ama malasef kırıcam çünkü oyun motoru yazmak gerçekten zor bir süreç.
Ama şöyle yapabilirsin; bir oyun türü için yazabilirsin. Mesela rpg, moba tarzı oyunlar. Fps oyunlar, 2d platform oyunları vs. Bu şekilde senin oyun motorunda sadece senin seçtiğin tür oyunlar yapılır. Ki 3d kısmına pek girmeni tavsiye etmem. Gerçekten üst düzey matematik, fizik ve programlama bilgisi gerekiyor.
Ama 2d için belki olabilir.
Mesela dungeon, rogulike tarzı oyunları baza alalım. Sen bu oyunlar için bir framework saglayacaksın. Yapımcı bazı şeylerle uğraşmayacak. Mesela karakter haraketi, Etkileşim, diyalog sistemi vs.

Bu tarz düşünüyorsan şunu inceleyebilirsin,
Rpg Maker.

Bir düşün bakalım neden oyun motoru yazmak istiyorsun. Heves mi? Diger oyun motorları ihtiyacını karşılayamıyor mu? Aklındaki oyunun alt yapısı için mi? Daha vardır da aklıma bunlar geldi.
Önce bunu gerçekten düşün.
Cevabını merak ediyorum.
 

Geri
Yukarı