Kendi oyun motorunuzu ne zaman yuvarlamalısınız? [kapalı]


20

5 yıldır yazılım geliştiriciyim ve iOS oyun geliştirme sürecine girmek istiyorum. Yaklaşık 2 yıldır iOS SDK ile oynadım, cocoaheads toplantılarına katıldım ve objektif-c, kakao ve hatta c ve c ++ hakkında iyi bir kavrayışa sahip olduğumu hissediyorum.

Bir oyun fikrim var ve Box2D kullanacağımı biliyorum, ama cocos2D kullanmam gerekip gerekmediğini merak ediyorum. Ana nedenler:

  1. Cocos2d'de bulunmayan şeyleri, grafikleri akıllıca yapmak isteyebilirsiniz.
  2. Kendi oyun motorumu döndürürsem daha fazla kontrole sahip olurum.

Tabii ki, zaten var olan bir oyun motorunu kullanmanın ana nedeni, tasarruf ettiği zamandır ve zor şeyleri kolaylaştırır; ama kendi kendine yuvarlanması için teknik pirzola sahip biri için, mantıklı mı?


7
"C / C ++" derseniz, bunlardan en az birinde ve muhtemelen her ikisinde de iyi bir kavrayışa sahip olmamanız muhtemeldir.
DeadMG

10
Bazı insanların ikisini karıştırdığını ve iOS platformunda programlamak için kullanabileceğiniz ana dilleri anladığımı yinelemek için muhtemelen C / C ++ / Objective-C söylemeliyim. C / C ++ 'ı otomatik olarak ikisini birbirine karıştırdığım anlamına gelmiyordu.
Joey Green

Her zamanki gibi "kendi motorumu nasıl yapabilirim?" Den hoş bir değişiklik yaptığı için bu soruyu beğendim. sorular. +1 senin için efendim.
Ray Dey

1
@DeadMG Bir şey "C / C ++" diyorum ve her ikisini de mükemmel bir kavrayışa sahip.
Ciaran

Bunu yapan bile olduğunu söyleyebilirim
bobobobo

Yanıtlar:


38

Diğer gönderilerin çoğu "bir oyun değil, bir motor yap" olacaktır, ancak yapmak istediğiniz ve aklınızda başka birinin koduyla başlamanın iyi bir fikir olduğunu bilmek istediğiniz belirli bir oyun olduğunu düşüneceğim. taban veya sıfırdan başlayın.

Kendi teknolojinizi devirmeniz gerektiğini bilmiyorsanız kendi teknolojinizi devirmemelisiniz . Bu kulağa ters gelebilir ama gerçekten tek doğru cevap bu. Çoğu kararda olduğu gibi, ödünleşmeler vardır. Özel durumunuz için maliyet / fayda analizini yalnızca siz belirleyebilirsiniz.

Aşağıdaki şeyleri anlamalısınız (bu liste neredeyse her şeyi kapsamaktadır).

  • Orada kullanabileceğiniz hangi ara katman yazılımı ("motor" veya başka türlü)
  • Ara katman yazılımı masaya ne getiriyor, akıllıca bir özellik.
  • Özellikle çoklu platform desteğine önem veriyorsanız, ara katman yazılımı ne kadar olgun / kanıtlanmış
  • Ara katman yazılımının geliştirmeyi hızlandırmaya yardımcı olması için sağladığı veya sağlamadığı araçlar (araçları kendi teknolojinizle indirmeyin)
  • Ara katman yazılımının sahip olduğu sınırlamalar (basit bir örnek olarak Unity 3.x, iOS'ta dinamik ışıklardan gerçek zamanlı gölgeler yapmadı)
  • Oyununuzun sahip olması gereken belirli özellikler .
  • Son teslim tarihleriniz nedir ve ara katman yazılımının sizi nereden alacağı noktasına ulaşmak için ne kadar zaman harcayacağınız ve ara katman maliyeti ne kadardır.
  • Ara katman yazılımı ne kadar genişletilebilir (örneğin, blob gölgeleri kullanarak Unity'deki iOS'ta gölge sorununu çözebilirsiniz. Ya da belki projeksiyon gölgeleri.)

(Özellikle "daha fazla kontrol" koymadım dikkat edin. Bu "Yazmayı sevmiyorum kodu" arasında değişebilir yüklü bir ifade "Ben görebilmeniz, anlayabilmem ve bu özel etkiyi elde etmek için fizik motorundaki tüm değişkenleri değiştirin. "Birincisi gerçekten geçerli bir düşünce değil, ikincisi.)

Şahsen, düşük bütçeli bir oyun için kendi teknolojinizi yuvarlamanın zahmete değmeyeceğini düşünüyorum. Bu günlerde ucuz motorlara sahip olduğunuz güç miktarı çok saçma. Milyon dolarlık üçlü A motor lisansına karar verip vermediğiniz bir noktada değilsiniz. Diyelim ki Unity size 3 bin dolarlık teklifleri yenemez. Veya maliyeti ne olursa olsun Cocos2d (ücretsiz değil mi?).

Şimdi, oyununuz çoğunlukla diğer motorların sağlayamadığı veya makul bir kare hızında sağlayamadığı bir teknolojiye odaklanmışsa, ne yapabileceğinizi araştırmaya değer olabilir. Bu, diğer aracı yazılımları tamamen attığınız anlamına gelmez. Kendinize, yani oluşturucuya ihtiyacınız olduğu için, fizik veya ses veya kullanıcı arayüzü veya size sahip olduğunuz başka bir ara katmanı kullanamayacağınız anlamına gelmez.


7
Kabul. Tldr olarak: Soruyu sormanız gerekiyorsa, mevcut bir motorla devam etmeniz daha iyi olur.
Chris Subagio

Kalın harflerle yazdığınız not deneyimimi özetliyor.
Mühendis

1
Topluluk da önemlidir. XNA gibi güçlü bir topluluğa sahip bir şey, belirli problemleri çözmeyi çok daha kolay hale getirir, çünkü birisi bunu daha önce yapmış veya size işaretçiler verebilir.
ashes999

14

Kendi motorunuzu yuvarlamayın. Kendi oyununu yuvarla. Aynı anda bir motor yazarsanız, o zaman sizin için iyi, eğer değilse, daha fazla "motor" yapmak için yeniden kullanmak istediğiniz parçaları her zaman yeniden düzenleyebilirsiniz.

İnsanlar genellikle bir oyunun "motor" kısmını yazmak için ne gerektiğini tahmin ederler. Sadece ihtiyacınız olanı yaparsanız, bu kadar uzun sürmez. Zor kısmı yazma altyapısı takılıp kalmamak ve sadece sorununuzu çözmek için kesinlikle gerekenleri yazmaktır.

Mevcut bir motoru şu durumlarda kullanırım:

  • Sıkı bir son teslim tarihim var
  • Bilinen bir sabit özellik setim var, böylece bunun için bir motor seçebiliyorum

3

Bence sadece oyununu yazmalısın, belki de daha sonra bir motor bulursun . Grafik motorunu (bahsettiğiniz her şey gibi) sıfırdan hiçbir şey kullanmadan yazmak, ancak OpenGL sadece zamanınızı boşa harcayacaktır. Bu nispeten iyi çözülmüş bir sorundur, bu nedenle genel olarak, mevcut diğer herhangi bir üçüncü taraf çözümüne göre önemli yeni özellikler eklemeden çok fazla şey eklemeden API'nın şeklini değiştirirsiniz.

Cocos2D veya başka bir grafik katmanı şimdi gereksinimlerinizi karşılıyorsa, o zaman kullanın. Geliştirme sırasında gereksinimleriniz değişirse, oluşturma arka ucunu nispeten kolayca değiştirebilirsiniz - eğer bir motor yaratma deneyimine ve nerede olduğunuzu gerçekten düşünüyorsanız, kesinlikle oyununuzu değiştirmek için gerekenlere sahip olmalısınız. oluşturma arka ucu nispeten önemsiz bir işlemdir.

Oyununuzu oluşturun, yazdığınız kodun özellik setini kullanmalarına izin verin ve yeniden kullanılabilirlik ve iyi mimariyi göz önünde bulundurarak kod yazın. Bunun gibi birkaç projeyi bitirdikten sonra doğal olarak bir "motor" elde edersiniz ve bu projeleri daha hızlı bitirirsiniz, çünkü çerçeve düzeyinde özellik sürünmesinde kendinizi şaşırtmaktan vazgeçersiniz.


Amacı öğrenmekse, o zaman kaybı değildir.
Ciaran

3

Çok basit. Birincil hedefiniz hangisi: öğrenme veya pazara giriş zamanı?

Birincil hedefiniz kütüphane tarafından çözülen kavramları uygulama deneyiminden öğrenmekse kütüphane kullanmaktan kaçının. Ne zaman bir oyun geliştirirsem (yarı zamanlı), amacım tamamen öğrenmektir. Ne kadar sürdüğü umurumda değil, bu yüzden hepsini sıfırdan yapıyorum! Şimdi siz karar verin.


0

Ne zaman kendi oyun motoru rulo gerektiğini biliyorum bir orada ihtiyaç bunun için.

Örneğin, Birlik için harcayacak paranız olmadığını varsayalım. Veya bunun yerine yeni bir donanıma harcamak istersiniz. Ya da, kullanabileceğiniz ücretsiz motorlarda performans sorunları var veya düşük düzeyde daha fazla kontrole sahip olmanız gerekiyor .

Yazılım yazmak için yazılım yazmayı seviyorsanız, bir oyun motoru yazmayı seveceksiniz. Oyun programcılarına yeni başlayan ortak bir tuzak , bir tür kalıcı proje olarak bir motor yazarken yakalanmaktır . Dürüstçe inanıyorum ki tüm bu açık kaynaklı oyun motorları böyle ortaya çıktı - aslında yapmayan oyun programcıları

Sonra bu durumda kendi motorunuzu yazın.

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.