Oyun motoru kullanmanın avantajları ve dezavantajları nelerdir? [kapalı]


28

Bir oyun motorunun kullanılıp kullanılmayacağını nasıl bilebilirim? Android için nispeten karmaşık bir 2D oyun yapmak istiyorum. Bir oyun motorunu bulmaya, kurmaya ve öğrenmeye ya da her şeyi elle yapıp yapmamaya karar vermek için hangi faktörleri kullanmalıyım?


Oyun tasarımı en iyi etiket olup olmadığından emin değil, burada; ancak motor kara listeye alındı. Bu soru muhtemelen sadece silinmelidir.
Gnemlock

Yanıtlar:


25

Avantajları:

  • Çoğu kodlama sizin için yapılmıyorsa, endişelenmeniz gereken tek şey içerik, seviye düzeni vb.

  • Bu hatlar boyunca, bellek yönetimi, varlık yükleme, aydınlatma (karmaşık motorlarda), vb. Hepsi (umarım) tamamen tasarlanmış ve test edilmiştir.

  • Aşağıda belirtildiği gibi, eğer motor çapraz platform ise, oyununuzu taşımak için çok az iş yapmanız gerekecek.

Dezavantajları:

  • Bir şeyi değiştiriyorsanız, şimdi yeni bir kod tabanına aşina olmanız gerekir.
  • Motorda bir hata varsa, açık kaynak olmadığı sürece düzeltemezsiniz.
  • Motor, oyununuz için özel olarak tasarlanmadığından, oyununuz için özel olarak yazdığınız koddan daha az verimli olabilir.
  • Oyun motorları genellikle ücretsiz değildir.
  • Bir oyun küçükse, bir motor kullanmanın ek yükü kod yazmak için harcanan zamana değmeyebilir.
  • Oyun motorunuzda ayrıca herhangi bir editör veya araç varsa, bunları sanatçılara devretmeden veya kendinize güvenmeden önce bunları oluşturmanız ve test etmeniz gerekir.

Dezavantaj listesinin daha uzun sürmesine izin vermeyin: İhtiyacınız olan tüm sistemleri kodlamak ve test etmek için harcadığınız zaman üretim döngüsünüz için çok uzunsa veya koddan ziyade sanatla daha fazla yeteneğiniz varsa, bir oyun motoru kullanmak kesinlikle iyi bir fikir.

Oyun motorlarının bir karşılaştırması bu sorudaki çalışmalarda: Çeşitli 3D Oyun Motorlarının Uzmanları ve Konuzları


3
Bu genel olarak oldukça iyi bir cevap, ancak ilk cümleyle kaşımı kırdım. "Çoğu kodlama sizin için yapılmadıysa" "Düşük seviyeli kodlamanın çoğu sizin için yapılıyorsa"; “bir oyun için kodlamaya gerek yok!” efsanesini devam ettirmek sorumsuzluğa yanıltıcıdır.
Ocak'ta atıyor

Ayrıca, motor kolayca yapabileceklerinizi kısıtlayabilir - örneğin, çoğu insan Minecraft veya Cüce-Kale tarzı değiştirilebilir araziyi desteklemiyor. İhtiyacı olmayan oyunlar için uygun olan, ancak bir Minecraft klonu yaparken iyi şanslar.
user253751 6:15

15

Benim durumumda, oyun motorları yüzünden hiçbir şey yapmamak için çok fazla zaman harcadım. Genelde veba gibi onlardan kaçınıyorum, ancak akıllıca ve ölçülü olarak kullanılmaları gerektiğini biliyorum.

Benim için, tüm olasılıklara takıntılı olurdum ! X motorundaki özelliklerin uzun bir listesine bakarken, "Vay, bütün bunları yapabilirdim! Oyunum harika olabilir!" Böylece indirir, demoları çalıştırır ve eylemdeki bu özellikler karşısında şaşkına dönerdim. Sonra IDE'de yeni bir proje oluşturdum ve nereden başlayacağımı bilemedim. Bir kod yazardım, öğrenebilir ve demo projelerinden temel alabilirim, ama bunlar sadece demolardı.

Hiçbir şeyden nasıl başlayıp nasıl bir şey yapacağımı bilmiyordum. İlk adımı bilmiyordum. Bir motor fikrini sevdim, beni etkiledi ve bir şeyler yapmam için beni motive etti, ancak asıl gelişim bilgim o kadar sınırlıydı ki, motoru inşa yoluna nasıl ekleyeceğinizi bildikten sonra ve belki de birkaç satır yazmak için motor ve sonra tekrar kapat, bunun ötesinde asla değerli bir şey yapmadım.

Ben daha çok bebek adımlı bir insanım. Kendi oyunumu her seferinde bir adım atmayı tercih ederim, bir gün bir "motor" olarak değerlendirebileceğim faydalı fonksiyonları tekrar gözden geçirmek ve bu işlevleri bir kütüphaneye toplamak istiyorum. Şimdilik, motorun yutturmacalarından kaçınıyorum ve sadece düşük seviyeli şeylere bağlı kalıyorum.

Motorların kendi yerleri var. Eğer bir motor bulup kendinize düşünürseniz, "Bu kesinlikle yazacağım şey bu! Benim için işi çoktan yaptılar, tekerleği yeniden icat etmem gerekmiyor ve oyuna nasıl bağlanacağımı da tam olarak biliyorum. Zaten başladım [veya en azından tamamen planlanmış ve başlamaya hazırım] "o zaman muhtemelen uygun. Nasıl kullanılacağını ve motoru yararlı bir şeyler oluşturmak için kullanmak için kendi kodunuzu nasıl yazacağınızı tam olarak bileceksiniz. Ama bir motor alırsanız, mutfak lavabosundan başka her şeye sahip olması ve devlerin omuzlarında durduğunu düşünüyorsanız, çok yanılıyorsunuz. Önünüzde dev bir ayakta durun ve omuzlarına tırmanmanız gerekir.

Bu yüzden benim için büyük dezavantaj: Yapabileceğiniz her şeye yakalanmayın. Hangi motoru seçerseniz seçin, tonlarca potansiyeli olacaktır. Ancak potansiyelin nasıl kullanılacağını bilmiyorsanız, yaşamınızı kolaylaştırmıyorsa veya işinizi yapmanıza yardımcı oluyorsa neden kullanıyorsunuz?


4

Bir oyun motorunun en büyük dezavantajı, onu öğrenmek zorunda olmanızdır. Genel olarak programlamada yeniyseniz, bu, motorun sizin için kullanabileceği her şeyi yapmak için kod yazmayı öğrenmekten daha hızlı olabilir, ancak eğer deneyimli olursanız oturmanız zaman almaz aşağı ve kodlamaya başlayın, ancak tanımadığınız bir motorda yolunuzu öğrenmek için önceden yeterli miktarda zaman.

Bakılması gereken en büyük şey destek, çünkü oyun motorları mükemmel değil ve aklını okumuyorlar ve bir noktada SOMETHING sıkışıp kalacaksınız. Yani:

  • Belgeler var mı?
  • Belgeler gerçekten iyi mi?
  • Teknik destek var mı (genellikle, parasını ödemediğiniz sürece değil)? Geri dönüş süresi nedir?
  • Soru gönderebileceğiniz ve gerçek cevaplar alabileceğiniz topluluk forumları var mı?
  • Motoru kullanmaya nasıl başlatacağınızı gösteren öğreticiler var mı? Örnek kaynak kodu dahil mi? Bunları hızlandırmaya ne kadar faydalı buluyorsunuz?

2
Belgelendirmeyi belirgin bir şekilde ön plana çıkarmak için +1 ... birçok açık kaynaklı oyun motorunun başarısız olduğu yer
LearnCocos2D 13:10

3

Çok fazla yazılım geliştirme tecrübesine sahip ve son zamanlarda sıfırdan bir oyun geliştirmeye çalışan biri olarak, işte 2 sent.

Şimdiye kadar verilen cevaplar uzun bir artı ve eksiler listesi sağlamıştır. Bir oyun motoru kullanmamak için benim için en önemli nedeni ne sağlayacağım. Ben meydan okuma için tamamen bir oyun yazmak ve ödüllendirmek öğrenme görevi üstlendi olarak ben istediğim için, hiçbir motor, sadece OpenGL ve SDL ile sıfırdan yapmaya karar öğrenmekbu soyutlama seviyesinin üzerindeki her şey. Hiçbir aşamada bu karardan pişman olmadım. Oyunum basit ama düzgün, 2D Asteroitler'in güzel bir kaydırma sürümüdür. Çok üstün oyunlarla rekabet etmeye çalışmıyorum, ancak oyunumu dağıtıyorum ve insanlar oynamayı sevdiler. Oyunu çok oyunculu yapmak için de aynı yaklaşımı kullanacağım. Bu büyük bir zorluktur ve kütüphaneleri kullanmak bunu kolaylaştırabilir, fakat benim amacım kolaylaştırmak değil. Amacım öğrenmek ve benim için yarı zamanlı bir aktivite, bu yüzden çok fazla zamanım yok ve ilerleme yavaş. Fakat bu yaklaşım için nedenlerim var. "Yüksek öğrenim" olarak adlandırın.

Öyleyse, kendi sorunuza cevap verin, oyun motorunun sizin için yapabileceği şeyleri nasıl yapacağınızı öğrenmek ister misiniz? Eğer öyleyse, bir oyun motoru kullanmayın.


2

"Kompleks" ile ne demek istediğinizi ayrıntılandırmanız gerekir. İyi bir oyun motoru aşağıdakilere dikkat eder:

  • Sabit bir kare hızında oluşturma
  • Giriş işleme
  • Kullanıcı arayüzü
  • Sesler / müzik
  • Kaynak yönetimi (görüntü, ses, veri dosyaları)
  • Oyununuzu kaydetme / yükleme
  • Fizik (2d veya 3d)

Kendiniz düşünün, bunların her birini nasıl kodlayacağımı biliyor muyum? Her birini programlamak için ne kadar zaman alacağım ve bunların her birini nasıl motor yapacağımı öğrenmek için ne kadar zaman alacağım?


1

En büyük avantaj: sizin için birçok şey yapılır. Tekerleği yeniden icat etmene gerek yok.

Başka bir avantaj: Oyun motoru da platformlar arası olabilir (Birlik).

Dezavantajları? Kontrol? Motor sizin için bazı şeylerle ilgileniyor (renderleme gibi), bu yüzden eğer hatalar veya performans sorunları varsa, o zaman kendiniz düzeltemezsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.