Oyun Motoru Yazmak vs Seçmek

Oyun Motoru Yazmak vs Seçmek

Oyun geliştirmeye başlamayı düşünen geliştirici adaylarının kafasını kurcalayan sorulardan biri olan “Oyun motoru yazmalı mıyım, yoksa piyasadakileri araştırıp amacıma uygun olan bir tanesini seçmeli miyim?” sorusunu, iki seçimin de perspektifinden, artıları ve eksilerini ele alarak değerlendirelim.

Makaleye başlamadan önce, cevabın hazır bir motor seçip, öğrenip, kullanmak olduğunu belirtelim. Oyun geliştirmek, zaten başlı başına oldukça zor ve genellikle yüksek kaynak tüketen bir alan. Daha oyun geliştirmeye yeni başladığınızda, oyun motorunun bile tam olarak ne olduğunu kavrayamamışken, bir tanesini sıfırdan geliştirmeye çalışmak, gereksiz bir uğraş. Amacınız bir oyun geliştirip yayınlamak ise, bu süreci en sağlıklı olarak, en az zaman alacak ve en az kaynak tüketecek şekilde planlamalısınız. Oyun motorunu sıfırdan yazmak ise, neredeyse geliştireceğiniz oyun kadar, hatta daha fazla iş yükü ile beraberinde gelebilir. Oyun geliştirmeye yıllarınızı verip, iyice kavradığınızda, iş akışınızı kolaylaştıracağını düşündüğünüz ve piyasadaki motorlarda eksik olduğunu düşündüğünüz özellikleri kapatacak oyun motorunuzu geliştirmeyi ancak o zaman değerlendirmelisiniz.


Neden Bir Oyun Motoru Yazmalısınız?

Tam Kontrol

Oyun motorlarının arayüzleri ve iş akışları, birbirine oldukça benzerdir. Ancak kendi oyun motorunuzu yazdığınızda, oyun motorunuzu oluşturan araçları seçerken, en çok ne üzerinde, hangi şekilde çalışmaktan hoşlandığınıza göre, iş akışınızı kişiselleştirebilirsiniz.

İş akışı ve arayüzün yanı sıra, hazır motorların çapraz platform desteği verdiği platformlar da, oyun motorunun desteği kesildiğinde, yıllar içerisinde eskiyip, modern cihazları desteklememeye başlayacaktır. Aynı zamanda, oyununuzu geliştirirken hedeflediğiniz platform farklı, modern motorların desteklemediği bir platform ise, kendi motorunuzu yazdığınızda, zor olsa da, oyunlarınızı dilediğiniz platform üzerinde oynanılabilir şekilde geliştirebilirsiniz.



Bug Çözebilme İmkanı

Bir oyun motoru seçtiğinizde, motordan kaynaklı bug’ları çözmeniz, kullanmış olduğunuz oyun motorunun kaynak kodlarına erişiminiz olsa bile, çok daha fazla zaman ve enerji gerektiren bir işlemdir. Oyun motorunu yazan siz olduğunuzda, herhangi bir bug ile karşılaştığınız durumda, yazdığınız koda hakim olduğunuz için, bir hata ile karşılaştığınızda tespit edip, diğer herhangi bir özelliğin çalışmasını bozmayacak şekilde çözmeniz kolay bir işlem olacaktır.


Tam Sahiplik

Yazdığınız kodların tamamı size ait, dolayısıyla hiçbir kuruluş ya da kişi, motorunuz ve motorunuzu kullanarak geliştirdiğiniz oyunlar üzerinde hak talep edemez. Örneğin, geçtiğimiz günlerde Apple ve Epic Games arasında yaşanan gerginlik dolayısıyla, Unreal Engine 4 kullanan oyunların lisansı App Store üzerinden çekilebilirdi. Aynı zamanda hiçbir kuruluşa geliştirdiğiniz oyun başına, ya da sattığınız kopya başına tek bir kuruş bile ödemek zorunda kalmazsınız.


Yetenek Geliştirmek

 Oyun motoru seçtiğinizde, bazı önemli programlama konseptlerini öğrenmenize ve motorun nasıl çalıştığını anlamanıza gerek kalmadan, oyun geliştirebilirsiniz. Bu genellikle oyun motoru seçmenin iyi bir özelliği olsa da, oyun motoru yazmaya başladığınızda bir programcı olarak kendinizi programlamanın çeşitli alanlarında geliştirebilirsiniz. 


Güncellemeler Üzerinde Tam Kontrol

Bir oyun motoru seçtiğinizde -düşük bir ihtimal olsa da-, kullandığınız versiyonun desteğini kestiklerinde, ya da geriye dönme şansı vermeden sürümünüzü güncellediklerinde, projenizin geliştirilmesi aksayabilir, oyun motoru değiştirmek zorunda kalabilirsiniz, hatta projenizi iptal etmek zorunda bile kalabilirsiniz. Kendi oyun motorunuzu yazdığınızda ise, neyi, ne zaman ve neden güncelleyeceğiniz tamamen size kalmış. Motorunuzda kendi bulduğunuz eksikleri ve kullanımınızı kolaylaştıracak özellikleri dilediğiniz zaman güncelleyebilirsiniz.

  

Özelleştirilmiş Amaç

Piyasadaki Unreal Engine 4, Unity gibi oyun motorları, daha büyük bir geliştirici kitlesine hitap etme amacıyla, her türden oyun geliştirmeye elverişli, esnek araçlardır. Bu her ne kadar hazır motorların artısı olsa da, işinize yaramayacak/kullanmayacağınız bir sürü araç içerdikleri gerçeğini değiştirmiyor. Kendi oyun motorunuzu yazdığınızda ise, örneğin geliştireceğiniz oyun bir 2D side-scroller platformer ise, sadece işinize yarayacak ve oyununuzun geliştirme sürecini olumlu etkileyecek araçlar ekleme ve oluşturma özgürlüğüne sahipsiniz.


Ek Gelir

Oyun motorunuzu paylaşırsanız ve bazı geliştiriciler motorunuzu kullanışlı bulur ise, motorunuzu çeşitli modeller ile parasallaştırabilirsiniz. Düşük bir ihtimal gibi gözükse de, yeteri kadar kullanışlı ve kullanıcı dostu olan bir oyun motoru yazmayı başardığınızda, hem kendi oyun geliştirme iş akışınızı kolaylaştırmış olursunuz, hem de motorunuzu kullanmak isteyen geliştiricilerden belirli bir ücret ya da kar yüzdesi talep ederek, yazdığınız oyun motorunu bir ek gelir kaynağı haline getirebilirsiniz. Kulağa hoş gelse de, tabi ki oyun motorunuzu satmak, çalışır bir versiyon geliştirmek ile bitmiyor. Kullanıcılarınıza teknik destek ve güncellemeler gibi birçok alanda destek sağlamak, iş yükünüzün bir parçası olacaktır.


Bileşen Seçme Özgürlüğü

Oyun motorları çeşitli bileşenlerden oluşur. Bu bileşenler, 3. parti geliştiriciler tarafından sağlanan kütüphaneler ile sağlanabilir. Bir oyun motoru seçtiğinizde, hangi bileşende, hangi kütüphaneden faydalanılacağı gibi seçimler zaten motorun geliştiricileri tarafından sizin yerinize yapılmış olur. Örneğin Unity, 2D oyunlarda, fizik motoru olarak Box2D’yi kullanır. Ancak siz oyun motorunuzu kendiniz yazdığınızda, farklı bir bileşen kullanabilir, ya da kendi bileşeninizi sıfırdan yazabilirsiniz, size kalmış.


Neden Bir Oyun Motoru Seçmelisiniz?

Daha Hızlı Geliştirme Süreci

Oyun geliştirmek, başlı başına uzun ve yorucu bir süreç. Bu sürecin başına oyun motoru geliştirmeyi de eklediğinizde, oyun geliştirmeyi çok daha uzun, yorucu bir süreç haline getirmiş olursunuz ve dolayısıyla daha fazla kaynak tüketirsiniz. Amacınız planladığınız bir oyunu geliştirip yayınlamak ise, bir oyun motoru seçerek geliştirme sürecinizi anında başlatabilirsiniz.


Düşük Zorluk

Oyun motoru seçtiğinizde, motorun nasıl çalıştığını pek anlamadan sadece scripting (betikleme) öğrenerek ve ihtiyacınız olan mekaniklere/sistemlere göre eksik yönlerinizi kapatarak, dilediğiniz oyunu geliştirebilirsiniz. Oyun motoru yazdığınızda ise, motorun bileşenlerinin nasıl çalıştığını anlayıp, doğru bileşenleri seçmek, hatta yeri geldiğinde de kendi bileşenlerinizi yazmanız gerekebilir, bu da öğrenmeniz gereken daha fazla konsepte harcamanız gereken daha fazla zaman anlamına geliyor.


Topluluk Desteği

Oyun motoru seçtiğinizde, karşılaştığınız sorunlar ile ve motoru kullanmayı öğrenirken aklınıza takılan sorular ile ilgili, motoru kullanan binlerce geliştiriciden oluşan topluluklar aracılığı ile gerçek zamanlı olarak yardım alabilirsiniz. Kendi oyun motorunuzu yazdığınızda, diğer geliştiricilerden destek almanız yine mümkün fakat, halihazırda piyasadaki motorları araştırıp en az birini kullanan geliştiriciler, sıfırdan pek de aşina olmadıkları teknolojileri öğrenme fikrine soğuk yaklaşabilirler.


Daha Az Bug/Hata

Oyun motorları, kalabalık ve deneyimli geliştirici ekipleri tarafından geliştirilen yazılımlardır. Dolayısıyla tek başınıza geliştireceğiniz oyun motorunuzun piyasadaki oyun motorlarına kıyasla çok daha fazla bug ile karşılaşırsınız. Bu bug’ları da çözmek sizin göreviniz olduğu için, oyun motoru yazmak, oyun geliştirme sürecinizi olumsuz etkiler ve uzatır.


Yüksek Prototipleme Hızı

Oyun geliştirmeyi iş olarak yapmak/kariyer haline getirmek için önemli noktalardan biri de oyun fikrinizi hızlı şekilde prototipleyip test etmek, ettirmektir. Bu sayede geliştirmeyi planladığınız oyunun sandığınız kadar eğlenceli ve geliştirmesi mümkün olup olmadığını daha net anlamış olursunuz. Piyasadaki oyun motorlarını seçtiğinizde, ek araçlar geliştirmeye zaman ve kaynak harcamadan prototiplemeye ve planladığınız fikirleri hayata geçirmeye anında başlayabilirsiniz.


Cross-Platform (Çapraz Platform) Desteği

Sık tercih edilen tüm oyun motorlarında, cross-platform (çapraz platform) desteği bulunur. Tek bir satır kod yazmadan, seçmiş olduğunuz oyun motorunun desteklediği platformlar üzerinde oyununuzun build’ini alıp yayınlayabilir, test edebilirsiniz. Performans sorunu yaşamamak için, oyununuzun geliştirme sürecinde hedeflediğiniz platformlardan en düşük sistem özelliklerine sahip olan platform üzerinde oyununuzu devamlı test ederek gerekli değişiklikleri yapmanız yeterli olacaktır.

Ekip Kurma Kolaylığı

Popüler bir oyun motorunu tercih ettiğinizde, tercih ettiğiniz oyun motorunu kullanan geliştiriciler ile, proje detaylarında anlaştığınız takdirde kolaylıkla iş birliği yapabilirsiniz. Oyun motorunuzu kendiniz yazdığınızda, düzgün dokümanlamış olsanız bile, daha önce kullanmadıkları teknolojileri/kütüphaneleri öğrenip kullanma fikri, geliştiricilerin kulağına pek de iyi gelmeyebilir.


Yayıncılar İle Anlaşmanız Daha Olası

Kendi yazdığınız oyun motorunun hiçbir kredibilitesi olmadığı için, sizin için ne kadar kullanışlı olursa olsun, bir yayıncıyı daha önce hiç kullanılmamış, yeni bir oyun motoru üzerindeki bir oyun projesinin geliştirme sürecini desteklemeye ikna etmek, halihazırda üzerlerinde binlerce başarılı oyun geliştirilmiş Unity, Unreal Engine 4 gibi oyun motorlarına kıyasla oldukça zor. 


Sonuç

Kendi oyun motorunuzu yazmak, seçmeye kıyasla birçok açıdan daha fazla esneklik ve özgürlük sağlar. Ancak hem oyununuzun geliştirme sürecine oyun motoru geliştirmeyi ekleyerek, süreci hem daha fazla uzatırsınız, hem de dolayısıyla daha fazla kaynak tüketmiş olursunuz. Oyun motoru yazmak eğlenceli ve size bir geliştirici olarak çok fazla şey katabilecek bir süreç. Ancak planlamış olduğunuz oyunu geliştirip yayınlamanın ideal yolu değil. Başlangıç seviyesinde bir geliştirici iseniz, bu süreç çok daha uzun bir hal alacaktır.

Yorumlar