Unity3D gibi bir motor neden yeni başlayanlar için OpenGL gibi bir yerel kütüphanede vurgulanıyor? [kapalı]


25

Ben sadece 3D oyunlarda yeni başladım, tercih ettiğim platform Android. Başka bir forumda "Ne kullanılır: OpenGL veya Unity3d?" Diye bir soru gönderdim. Hepsi Unity3D'yi vurguladılar ve OpenGL kullanıyor olsaydım kendimi kodlamam gereken yerleşik özelliklerini ve araçlarını kullanıyorlardı. Ama sonra birisi karmaşık oyunların çoğunun özel motor gerektirdiğini söylüyor. OpenGL üzerinden neden Unity3D gibi bir motor kullanmalıyım?


15
İki kelime: Anında Tatmin. Bir OpenGL uygulaması elde ederken oldukça birkaç kod satırı ve çok çeşitli kavramların anlaşılması gerekirken, fazla bir şey bilmeden birlikle yapılan "yararlı" bir şey elde edebilirsiniz.
Jari Komppa

5
Belki bu konuyu sadece açıklayabiliriz ve tüm "hangi teknolojiyi kullanmalıyım" soruları sonsuza dek gider. ayrıca bir tek boynuzlu at istiyorum
jhocking

8
"karmaşık oyunların çoğu özel motorlar gerektiriyor" - aslında, şaşırtıcı bir şekilde çok sayıda başarılı AAA oyunu, Unreal motoru gibi stok motorları üzerine inşa edildi .
Philipp

2
Buna ek olarak, yeni başlayanlar yine de özel bir motora ihtiyaç duyacak kadar karmaşık bir oyun yapamazlar.
Hristiyan

Bu sadece Gamasutra'da ortaya çıktı ve bu sorunun doğrudan bir cevabı olmasa da, alakalı: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - özellikle, sizin oluşturduğunuz bir proje için çok zor olacak OpenGL 'nin temelini oluşturması' mütevazı 'bir ilk proje olacak.
Steven Stadnicki

Yanıtlar:


30

Sanırım bu soruyu zaten kendin cevapladın. "Ben sadece 3D oyunlarda yeni başladım" dedin . Ayrıca, "... Unity3D ve kullanımı, OpenGL kullanıyor olsaydım kendimi kodlamam gereken özellikler ve araçlara dayanıyordu" dedin .

Temel olarak bu, eğer yalnızca OpenGL kullanıyorsanız, bir oyun motoru yazacağınız ve potansiyel olarak yıllar sonra oyununuzu yazacağınız anlamına gelir. Bir oyuna odaklanmak istiyorsanız, sizi bu hedefe mümkün olduğunca yaklaştırmak için kullanabileceğiniz kaynakları kullanın. Bir oyun motorunu kullanmak, bir oyun oluşturmak için gereken her şeyi yazmak yerine, bir oyun yaratma çabalarınızı yoğunlaştırmanın en iyi yoludur.

Bu soruya bakın: Bir Kütüphane ile Motor arasındaki fark ve bu motor arasındaki fark nedir? Bir oyun motoruna karşı oyun çerçevesi nedir?


bu yüzden OpenGL sadece grafikler içindir ve unity3d, oyunum için fizik gereksiniminin yanı sıra grafikleri olan eksiksiz bir çerçevedir.
Aman Grover,

1
Birlik bundan çok daha fazla, ama evet bu hemen hemen fark.
jhocking

3
@AmanGrover: ayrıca GL ile "sadece grafikler için" gerçekten "sadece GPU'ya komutlar göndermek için" olduğunu anlayın. Tüm asıl zor iş hala programlayıcı tarafından yapılmak zorunda iken, Unity tüm önemli grafik özelliklerine ve algoritmalarına sahiptir ve kullanıma hazırdır.
Sean Middleditch

2
Motorları yazma, oyun yazma. Yaklaşmam gereken buydu. Asıl oyunu yaratırken birisinin bir oyun motoru yaratması demek istiyorum. Demek ki Byte ile aynı fikirde değilim.
LaVolpe

28

Çünkü yeni başlayanlar, tanımı gereği, ne yaptıklarını bilmiyorlar .

OpenGL'nin çok büyük bir öğrenme eğrisi var. Elbette, birkaç glBegin komutu verebilir, ekrana bazı üçgenler koymaktan heyecan duyabilir, daha sonra henüz henüz hazır olmayacağınız daha karmaşık bir şeyle derinlerden inebilirsiniz. Bu öğrenmenin iyi bir yolu değil. Bir analoji (biraz abartılı), bazı temel lise fiziğini öğrendikten sonra Büyük Hadron Çarpıştırıcısından sorumlu tutulabilir. Batmak ya da yüzmek değil, büyük bir radyoaktif delik yerin dibinde yüzmek ya da terk etmek.

Çoğu insanın "Bir oyun yapmak istiyorum, ne kullanmalıyım?" Diye sorduğu sanılıyor. Soru aslında bir oyun yapmak istiyor mu (aksi takdirde elbette farklı bir soru sormuş olurlar mıydı?) Yani cevap, soruya uyarlanmıştır ve önceden var olan bir araç setini kullanarak, çerçeve ya da motor bu tutkuya ulaşmalarına yardımcı olmanın bir yoludur. tek bir matrisin güncellenmesi için bir UBO veya glUniform çağrılarının tercih edilip edilmeyeceği konusunda agonize edilerek dağıtılmadan.

Her şey bir seferde bir adım atmak, öğrenme sürecini kolaylaştırmak ve sonunda ödüllendirici bir şey vermekle ilgilidir. Bir oyunu nasıl oynayacağınızı ve aynı zamanda olgun ve güçlü bir 3D API'yi nasıl doğru kullanacağınızı öğrenmeye başlamak yeni başlayanlar için çok fazla. Bu Dunning-Kruger etkisi eksi olumsuz çağrışımlara benzer. Neyi bilmediğinizi bilmiyorsunuz, bu yüzden tam olarak ne çekeceğinizle ilgili herhangi bir gerçekçi resme sahip değilsiniz.

Öte yandan, amacınız OpenGL'yi öğrenmek ise, o zaman aslında bir oyun yapmak istemezsiniz! OpenGL'yi öğrenmek istiyorsunuz ve bunu oyun yapma bağlamında yapmak eğlenceli bir öğrenme yöntemi olabilir, ancak oyun yapmak kendi başına bir amaç değil (ve kesinlikle OpenGL öğrenmenin tek yolu değil) ). Muhtemelen asla salıvermeyeceksiniz ve birkaç yıl sonra neredeyse kesinlikle geriye bakacak ve yaptığınız aptalca şeylerden korkunç derecede utanacaksınız.


22

Bu, gerçekten bu projeden ne almak istediğinize bağlı. Eğer asıl amacınız oyun tasarımına odaklanmaksa, o zaman önceden inşa edilmiş bir motorla daha iyi durumda olursunuz, çünkü bu sizi oyun yapımına daha çabuk kazandıracaktır. Amacınız oyun yapmanın programlama kısmını öğrenmekse (özellikle sektörde bir işe hazırlanmaya çalışıyorsanız), muhtemelen OpenGL ile çalışmanın daha değerli bir deneyim olacağını göreceksiniz. Yukarıdaki ifadelerin hiçbirinin zamanın% 100'ü için gerçek olmadığını aklınızda bulundurun.

Bu tür bir şeye karar verirken hiçbir kural yoktur. Bu tür bir soruda duyduğunuz yanıtların çoğu görüşlerdir ve bunlardan çok azı kendi proje ve beceri setinizle tamamen ilgili olacaktır.


Teşekkürler ve evet, bu alanda bir iş arıyorum ve bu yüzden OpenGL ile birlikte gideceğim.
Aman Grover

9
'Açık' olan OpenGL ile çalışmanın oyun endüstrisine giren biri için daha değerli olacağına şiddetle katılıyorum. Birlik, modern ve nispeten olgun bir oyun motoruna mükemmel bir örnek sunar; Sağladığı işlevselliği anlamak (kendinize benzer işlevselliği nasıl sağlayabileceğinizi öğrenmeye göz atmak suretiyle), oyun geliştirme sürecinin kendisini anlamak için mükemmel bir yoldur, oysa OpenGL anlamlı bir şekilde oyuna özgü olmaktan uzaktır.
Steven Stadnicki

Bu sadece bu şeylerle ilgili gerçekten bir kural olmadığını, sadece fikirlerin nasıl olduğunu gösterecek. Her şey, neye ihtiyacınız olduğunu / ne istediğinizi bağlıdır.
33’te jhocking

5
@AmanGrover - o zaman bir oyun yapmayın! Her seferinde bir şeyi öğrenmek için daha kolay bir zamanınız olacak. Güneş sistemi simülatörü yapın. Temel ilkellerin nasıl çizileceğini, nasıl çevrileceğini ve döndürüleceğini, daha hızlı çizmek için gezegenlerin bir VBO'ya yerleştirilmesini, bazı gölgelendiricilerin üzerlerinde animasyonlu bulutlar yapmak için kullanmasını ve temelleri anlama yolunda iyi bir mesafe olduğunu öğrenin.
Maximus Minimus

3
@KamikazeSoctsman Yine, burada aynı fikirde değil. OGL'nin faydasız olduğunu söylemiyorum - bundan çok uzak! - ama son on yılda, OpenGL bilgimi kısa bir sürede ve kısa sürede çok az miktarda kullandım. Aksine, oyun grafik motorları performansa duyarlı olma eğiliminde olduğundan, benim deneyimime göre yeni bir programcının başlaması için en az kullanılan yerlerden biri . 3D matematiği kesinlikle bilmelisin ve oluşturma ilkelerini anlamalısın - ama bu OGL öğrenmekten çok farklı bir şey.
Steven Stadnicki

6

Fark basit. Birlik, sizi yerleştirebilecek dört yuvarlak tekerlekli arabadır. OpenGL, bir dükkan kurabileceğiniz ve daha modern ve daha gelişmiş bir taşıyıcı ve tekerlekler oluşturmak için potansiyel olarak kullanabileceğiniz bir testere talaşıdır. Bu, vaktinizi saatlerce harcıyorsanız, önce sizin yaptığınız insanların ne olduğunu öğrenmeye harcarsanız.

Yeni başlayanlar için hedefiniz önce mevcut arabaları ve tasarımlarını incelemek olmalıdır. Her şeyi pencereden atmanın ve sıfırdan başlamanın bir anlamı yok. İlk önce ne olduğunu öğren ve onunla ilgili detaylı bilgi edin. Bilmiyorsanız, sınırlamaları nasıl biliyorsunuz ve sınırlamaları bilmiyorsanız, bunları nasıl aşabilirsiniz? İşe yaramaz olan vasat bir şey yapmanın ve mevcut tüm canlı aletlere karşı cahil olmanın amacı nedir?

bir yavru kuş oyunun dev adımları:

  1. Modern bir çerçevede / Motorda ustalaşın ve bunu derinlemesine anlayın (Bu aynı zamanda oyun tasarımının farklı yönlerini öğrenmenize yardımcı olacaktır, grafikler ve OpenGL bunların hepsi değildir).
  2. Onunla küçük bir oyun yapın ve bu süreçte daha fazla bilgi edinin.
  3. Motorda engellerle ve kısıtlamalarla organik olarak karşılaşın.
  4. Konu hakkında daha fazla bilgi edinin.
  5. Geliştirilmesi gereken alanları iyileştirmeye çalışın.

Yalnız yapılmış bir şeyi yapmak için kendi başınıza çalışmak, sizi hiç kimseye değerli bir geliştirici yapmaz çünkü gerçek olarak üretken olmayacaksınız veya bu konuda iyi bir öğrenici olmayacaksınız, sadece mevcut kod parçalarını kopyalayacak ve belki de öğreneceksiniz. onları okuyup anlayın. Eski Pokemon'un dediği gibi “Çok etkili değil…”.

En kötüsü, bu tür bir yaklaşıma ayak uydurmanın kolay olmamasıdır; çünkü içinde tatmin olmadığından, insanlara sınırlı bir kaynak olduğu bilimsel olarak kanıtlanmış ham irade gücüyle çalışıyorsunuz. Günlük memnuniyet sağlayan bir şey yapman gerekiyor yoksa muhtemelen devam edemezsin.

Böylece bir şeyi özetlemek için bir Motor vurgulanır çünkü bir Motorla işleri başarabilirsiniz ve bu şekilde başarılı olmanız çok daha olasıdır. Harika oyun yaratıcıları bile başkasının önceki çalışmasına güveniyordu ve bu da ilerlemenin doğası. Büyük resmi anlamanız ve kendi özel Lego parçalarınızı yapmadan önce başkaları tarafından sağlanan Lego parçalarıyla nasıl oynayacağınızı bilmeniz gerekir.


4

Amacınız bir oyun yaratmak olduğunu varsayarsak, özel motorların gerekli olduğu konusunda konuşan adam yanlıştı. Herhangi bir şey varsa, karmaşık oyunlar uzun zamandan beri sektörde olan profesyoneller tarafından tasarlanmış, uygulanmış, optimize edilmiş, test edilmiş ve bakımı yapılmış olgun bir motor gerektirir - ya da kalitelerine uygun bir oyun (en azından belirli bir oyun için) , eğer mümkünse.

Büyük oyun geliştiricileri şirket içi motorlar üretiyorlar, ancak gelecekteki oyunları için onları tekrar kullanıyorlar. Ancak bütçelerinin ve ekip boyutlarının ve diğer birçok faktörün bağımsız geliştiricilerinkinden çok farklı olduğunu aklınızda bulundurun - mevcut olanlar teknolojik olarak yetersiz kalsalar bile, kendi motorlarını inşa etmeleri çok daha ticari bir anlam ifade edebilir.

Tabii ki, hala yanlış bir anlayış var, çünkü mevcut motorlarda pek çok özellik mevcut değil, o motorda uygulanamayacakları, ancak bu genellikle yanlış.

Portal ve Antichamber gibi en yenilikçi modern oyunların bazılarının mevcut motorlar kullanılarak oluşturulduğunu unutmayın. Aion ve TERA gibi bazı karmaşık çevrimiçi oyunlar mevcut motorlar kullanılarak yapıldı. Bioshock Infinite ve Thief gibi en görsel oyunlardan bazıları mevcut motorlar kullanılarak yapıldı. Ve elbette bazıları değildi. Ancak mesele şu ki: Gördüğüm hiçbir şey gerçekten özel bir motor gerektirmiyordu .

Öte yandan, amacınız grafik programlama kavramlarını öğrenmekse tabii ki OpenGL gitmenin yoludur. Ancak o zaman bile, mevcut birkaç motorun aşina olmasının, ne yaptığınızı ve neyi hedeflemeniz gerektiğini anlamanıza çok yardımcı olacağını unutmayın.


1
-1. Oyun endüstrisi hakkında oldukça büyük iddialar. Birçoğu yanlış. Yazınızı yaklaşık bir düzine citation neededs
Panda Pajama ile

1
@PandaPajama Cevabımda oyun endüstrisi ile ilgili tek bir iddia var. Sizi çok rahatsız ediyorsa, düzeltmenizi veya hatta tamamen kaldırmanızı bekliyoruz.
TC

(Sınırlı) tecrübem bana birisinin genelleme yapamayacağı bir şey olursa oyun endüstrisi olduğunu gösterdi. Her şirketin farklı şeyleri görme biçimi vardır, hatta bir şirket içindeki farklı ekiplerin bile her şey hakkında çılgınca farklı politikaları olabilir. Bu özel durumda, şirket içi motorlar maliyet üretiyor ve bazı avantajlar ve dezavantajlar getiriyor. Net sonucun tasarruf mu yoksa gider mi olduğu hesaplanması oldukça zordur ve projeler arasında farklılık gösterecektir. Ek olarak, bütçe önemli olsa da, oyun yaparken dikkate alınan tek unsur değildir.
Panda Pajama

@PandaPajama Onaylandı, düzenlememe bakın. Kısaca, bütçe faktörünü içeren ve kararlarını şekillendirmeye yardımcı olan, var olan motorların teknik bir sınırlaması olamayacağına işaret eden, genel olarak onlar için daha fazla ticari anlam ifade edebileceğini söyledim.
TC
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.