C ++ oyun geliştirme için çapraz platform 3D motorları kullanmak kolay mı? [kapalı]


73

3D oyun yazarken elimi denemek istiyorum. Ancak, bu kadar düşük bir seviyede bireysel üçgen çizmeye başlamak ve kendi 3B nesne yükleyicimi yazmak gibi şeyleri istemiyorum. Irrlicht , Crystal Space 3D ve Cafu gibi şeyler duydum ama hiçbiriyle ilgili deneyimim yok. Bir ton 3D matematik teorisi ve GPU'ların dahili olarak nasıl çalıştığını öğrenmek zorunda kalmadan, bu motorlar üzerinde tecrübesi olan veya motorları iyi yazılmış olan ve kullanmaya başlaması kolay olan kişilerin önerilerini arıyorum.


16
Kapatılmış olsa da, bu soru bana çok yardımcı oldu.
Caleb Jares

4
ditto, very thread, stackexchange'in bu tür soruları neden sevmediğini bilmiyorum.
steveh

2
Sanırım sorduğum soruları kapatmak istiyorlar
Frank Cranston


Yanıtlar:


48

Görüşüm (sadece açık kaynaklı 3D motorlar için):

  • Irrlicht :
    • Hafif 3d motor
    • C ++ 'ı bağımlılıklar olmadan ve STL olmadan temizleyin.
    • Çok iyi belgelenmiş değil, ancak iyi dersler var.
    • Çok küçük, böylece kolayca özelleştirebilirsiniz.
    • Resmi SDK'da OpenGL 3.X sürücüsü, Direct X 10.X veya 11.X mevcut değildir.
    • Mobil gelişim için çok iyi;
    • İyi topluluk
    • Birkaç uzantı mevcut
  • Ogre3D :
    • Büyük 3d motor
    • STL, istisnalar ve RTTI gibi modern C ++ 'ı kullanır.
    • İyi belgeler (Yayınlanmış kitaplar var).
    • Birçok oluşturucu (OpenGL, DirectX ve OpenGL ES ...).
    • Ogre3D, CEGUI veya Bullet entegrasyonu, Ağaç düğümleri gibi birçok uzantıya sahiptir.
    • Ama spesifik bir şey istiyorsanız Ogre3D'yi uzatmak daha zor.
    • Büyük topluluk
    • Birçok uzantı
  • Kristal uzay : Eski bir tasarım ve kullanımı zor. Birkaç gün sonra bu motoru kullanmayı bıraktım.
  • Horde3D
    • Küçük motor
    • Modern dizayn
    • Işık topluluğu
    • Uzantı yok
  • Blendelf
    • Bazı bağımlılıklara sahip küçük motor
    • DOF veya HDR gibi modern efektler içeren modern tasarım ...
    • Sadece OpenGL
    • Işık topluluğu
    • Fizik için mermi entegrasyonu
    • Bu motoru yönlendirmek için lua kullanıyorsunuz

TL; DR:

  • Bir masaüstü oyunu (veya gelecekteki ticari oyun) için: Ogre3D
  • İlk oyun için: Irrlicht
  • Mobil gelişim için: irrlicht (Ogre3D çok büyük)
  • Seksi efektler için: Karışım

Dürüst olmak gerekirse, mobil geliştirme için Irrlicht'i tavsiye etmem. Çok fazla bellek ayırma işlemi gerçekleştirir ve çok az veya hiç özel bellek ayırma uygulamaları sunar. Başlangıçta başlangıçta yapılan yaklaşık 60.000 ayırma nedeniyle, başlangıç ​​zamanı büyük bir konudur.
Simon

Irrlicht'i Android ve IOS'da kullanıyorum ve başlangıç ​​zamanı büyük bir sorun değil ... Doku yükleme tahsis edilenden çok daha uzun ...
Ellis

@Simon, "özel bellek ayırma uygulamaları" ile neyi kastettiğinizi açıklayabilir misiniz? Bu nedir ve neden istiyorsun?
temporary_user_name

2
@ Aerovistae Bellek ayırma işlemi işletim sistemine çağrı yapılmasını gerektirir, bu çok maliyetli bir işlemdir. Genellikle bir oyun motoru oluştururken, kendi bellek yönetiminizi yapmak isterdiniz, bir kez büyük bir bellek yığını ayırır ve sonra o belleği programa kendiniz dağıtırsınız. Bu yolla, sadece işaretçiler arasında hareket ediyorsun ve her ekstra bellek istediğinde çekirdeği çağırmıyorsun. Oldukça gelişmiş bir konudur ve özellikle bir çeşit anti parçalanma mekanizması istiyorsanız, gelişmiş işaretçi aritmetik gerektirir.
dreta

3
Öyleyse, Simon özel bellek ayırma uygulamaları sunmadığı için önermediğini söylediğinde, bu gerçekten yeni başlayanlar için, hatta çoğu orta geliştirici için geçerli değil mi?
temporary_user_name

21

Açık başlangıç ​​önerisi Ogre3D'dir .


Bununla ilgili herhangi bir deneyiminiz oldu mu? Oldukça sağlam, iyi yazılmış ve 3B yeni başlayanlar için iyi mi? Kolayca 3B motorların bir listesini kolayca çıkarabilirim (benim soruma göre), hangisinin iyi bir seçim olduğu ve neden olduğu hakkında daha fazla bilgi edinmek istiyorum. Teşekkürler.
davr

1
Fakat Ogre3D bir motor değil. Bu bir 3d render kütüphanesidir. Ya ogre üzerine kurulu bir motoru seçmeli ya da kendi motorunuzu inşa etmelisiniz.
Yangın

4
Ogre3d ile kapsamlı deneyimlerim oldu; Bu var çok kararlı ve iyi yazılmış ve (sahne itlaf örgü yükleme, reklam panoları / partiküller) sıradan görevleri bakımı büyük bir iş yapar. Ateş, bu bir Oyun Motoru değil; fakat Ogre bir tane yapmak için diğer kütüphanelerle birleştirilebilir (ve çoğu zaman da olabilir). Bu, "bireysel üçgenler çizmek ve kendi 3B nesne yükleyicimi yazmak" üzerinde harika bir adım, ancak sadece bir oluşturma kütüphanesi. İstediğin buysa, aktif ve destekleyici bir topluluğa sahip harika bir kütüphane.
Karantza

3
@Fire OGRE: Nesne yönelimli Grafik İşleme Motoru. Bu bir motor. Her yerde tekiller var. Kesinlikle bir motor.
Ricket

3
@Ricket Evet, bir grafik motoru, ancak muhtemelen büyük olasılıkla kastedilen bu belgelerde açıkça vurgulandığı bir oyun motoru değil. Ayrıca, singleton (anti) modelinin motorla ya da olmamakla kesinlikle alakası yoktur.
Raoul,

7

Açık Sahne Grafiği , oldukça iyi, çok iyi tasarlanmış, çapraz platformlu bir 3D motordur. Örneğin, Ogre3D’nin aksine “oyun motoru” özellikleri sunmuyor ve OpenGL’in üzerine çok güzel bir soyutlama olmaya odaklanıyor.

  • Oldukça hafiftir ve sizin için bir çerçeveyi zorlamaz: istediğiniz kadar az veya çok kullanabilirsiniz ve SDL, SFML, wxWidgets, QT ...
  • Bu harika bir öğrenme deneyimi: Kütüphaneyi öğrendikçe, altta yatan OpenGL ve tasarlanma şeklini daha fazla anlıyorsunuz.
  • Kullanıma hazır: ana 3D formatlar için yükleyiciler var
  • Gölgelendiriciler dostu

Örneklerin kapsamlı listesine bir göz atın .


4

Oyun motorları açısından:

  • Torque3D : Birçok özellik var, ancak bazıları kodun çalışılması zor olduğunu düşünüyor.
  • C4 Motoru : Ucuz, mükemmel yazar desteği, ancak araçlar biraz çalışma yapabilir.
  • DIY: Bir kitaplık seti seç ve bunları oyununla birleştir.

Ogre3D'nin önerildiğinden beri, hafif bir alternatif Horde3D de var .

Artıları:

  • Tasarım sağlamdır ve ağır işleme için Ogre3D'den daha iyi bir performans sergileyecektir (zaten değilse)
  • Python gibi diller için bağları basit ve bakımı kolay kılan C API'si (dahili kod C ++)

Eksileri:

  • En az OpenGL 2.0 desteği gerektirir
  • Küçük topluluk
  • Kararsız kod tabanı (büyük mimari değişiklikler hala gerçekleşiyor)

2
Akıl sağlığınıza değer veriyorsanız Torque 3D'den kaçının. Komut dosyası motoru çalışmak için çok sinir bozucu, karışık bir kabus.
Jared Updike

4

Irrlicht , Ogre3D'den biraz daha fazlasını sağlar ve aynı zamanda biraz daha pratiktir (örneğin, sadece bir "motor çalıştırıyorsun" ve çalıştığını hissetmiyormuş gibi hissetmez) Bir çalışan komutlar, bence olması gerektiği gibi).

Bence başlamak harika olurdu!


4

C ++ istediğini biliyorum, ama Panda3D aynı zamanda ilk kez python ile çalışmayı hedeflese bile C ++ ile çalışıyor. Bu bir oyun motorudur, ama her neyse ...


2

Açıkçası, eğer Ogre3D sizin için çok düşük seviyedeyse NeoAxis olacaktır: http://www.neoaxisgroup.com/

Ogre tarafından desteklenmektedir, ancak tam bir oyun geliştirme platformudur.

C #, yönetilen C ++, VB kullanabilmeniz için .NET'i hedefliyor.

Öyleyse bunun için gidin. :)

Ogre3D, iPhone ve Android gibi çeşitli mobil cihazlarda çalışabilir. Yani çok büyük değil.

Performans için boyutta hata yapmayın.

IrrLicht'in resmi bir iPhone desteği olup olmadığından emin değilim, ancak Ogre3D kullanıyor.


.NET'te ise, IronPython'u dil listesine ekleyemiyor musunuz? Python muhteşem bir betik dilidir.
Jared Updike

2
.AĞ? Bu platformlar arası değil mi?
davr

Net değil, ama Neo-Axis C ++ / CLI kullanır.
jsimmons

Bugün Neoaxis lider geliştiricisiyle konuştum ve bu Eylül ayında Mac OS X desteğini duyurduğunu açıkladılar. :)
jacmoe


1

Şimdiye kadar iyi cevaplar, ancak Marmelat ekleyeceğim . Çok iyi mobil yapıyor. Bir sürü büyük stüdyo, onunla konsol oyunu çıkardı, bu yüzden referansları var. Bunun üzerine inşa edilmiş birlik benzeri bir editör bile var, çapraz platform için de izin veren Shiva3D .

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.