Einfach zu verwendende plattformübergreifende 3D-Engines für die C ++ - Spieleentwicklung? [geschlossen]


73

Ich möchte versuchen, ein 3D-Spiel zu schreiben. Ich möchte jedoch nicht mit einer so niedrigen Ebene beginnen, in der einzelne Dreiecke gezeichnet und mein eigenes 3D-Objekt geladen werden usw. Ich habe von Dingen wie Irrlicht , Crystal Space 3D und Cafu gehört , aber mit keinem habe ich Erfahrung. Ich bin auf der Suche nach Vorschlägen von Leuten, die Erfahrung mit diesen oder anderen Engines haben, auf denen sie gut geschrieben sind und die sich leicht einsetzen lassen, ohne eine Menge 3D-Mathematiktheorie lernen zu müssen und wie GPUs intern funktionieren.


16
Obwohl es möglicherweise geschlossen war, war diese Frage für mich sehr hilfreich.
Caleb Jares

4
dito, sehr guter Thread, weiß nicht, warum stackexchange diese Art von Fragen nicht mag.
Steveh

2
Ich nehme an, sie schließen gerne Fragen
Frank Cranston


Antworten:


48

Meine Meinung (nur für Open Source 3D Engines):

  • Irrlicht :
    • Leichte 3D-Engine
    • Clean C ++ ohne Abhängigkeiten und ohne AWL.
    • Nicht sehr gut dokumentiert, aber es gibt gute Tutorials.
    • Sehr klein, so dass Sie es leicht anpassen können.
    • Kein OpenGL 3.X-Treiber, Direct X 10.X oder 11.X im offiziellen SDK verfügbar.
    • Sehr gut für die mobile Entwicklung;
    • Gute Gemeinschaft
    • Einige Erweiterungen verfügbar
  • Ogre3D :
    • Große 3D-Engine
    • Es verwendet modernes C ++ wie STL, Ausnahmen und RTTI
    • Gute Dokumentation (Es gibt veröffentlichte Bücher).
    • Viele Renderer (OpenGL, DirectX und OpenGL ES ...).
    • Ogre3D hat viele Erweiterungen wie CEGUI oder Bullet Integration, Tree Nodes ...
    • Aber schwieriger, Ogre3D zu erweitern, wenn Sie etwas Besonderes wollen.
    • Große Gemeinschaft
    • Viele Erweiterungen
  • Kristallraum : Ein altes Design und schwierig zu bedienen. Nach ein paar Tagen hörte ich auf, diesen Motor zu benutzen.
  • Horde3D
    • Kleiner Motor
    • Modernes Design
    • Lichtgemeinschaft
    • Keine Erweiterungen
  • Verschmelzen
    • Kleiner Motor mit einigen Abhängigkeiten
    • Modernes Design mit modernen Effekten wie DOF oder HDR ...
    • Nur OpenGL
    • Lichtgemeinschaft
    • Bullet-Integration für die Physik
    • Sie verwenden lua, um diese engine3D zu steuern

TL; DR:

  • Für ein Desktop-Spiel (oder ein zukünftiges kommerzielles Spiel): Ogre3D
  • Für ein erstes Spiel: Irrlicht
  • Für die mobile Entwicklung: irrlicht (Ogre3D ist zu groß)
  • Für sexy Effekte: Blendelf

Um ehrlich zu sein, würde ich Irrlicht nicht für die mobile Entwicklung empfehlen. Es führt zu viele Speicherzuweisungen durch und bietet wenig bis keine benutzerdefinierten Speicherzuweisungsimplementierungen. Die Anlaufzeit aufgrund der fast 60.000 Zuweisungen beim Anlauf ist ein großes Problem.
Simon

Ich benutze Irrlicht auf Android und IOS und die Startzeit ist kein großes Problem ... Das Laden der Textur ist viel länger als zugeteilt ...
Ellis

@ Simon, können Sie erklären, worauf Sie sich bei "benutzerdefinierten Speicherzuweisungsimplementierungen" beziehen? Was ist das und warum willst du es?
temporary_user_name

2
@Aerovistae Die Speicherzuweisung erfordert Aufrufe des Betriebssystems. Dies ist ein sehr kostspieliger Vorgang. Normalerweise möchten Sie beim Erstellen einer Game-Engine Ihre eigene Speicherverwaltung durchführen, z. B. einmal einen großen Teil des Speichers zuweisen und diesen Speicher dann selbst im Programm verteilen. Auf diese Weise verschieben Sie nur Zeiger und rufen den Kernel nicht jedes Mal auf, wenn Sie zusätzlichen Speicher benötigen. Es ist ein ziemlich fortgeschrittenes Thema und erfordert erweiterte Zeiger-Aritmetik, besonders wenn Sie eine Art Anti-Fragmentierungs-Mechanismus wollen.
Dreta

3
Wenn Simon also sagt, er würde es nicht empfehlen, weil es keine benutzerdefinierten Speicherzuweisungsimplementierungen bietet, trifft dies wirklich nicht auf Anfänger oder sogar auf die meisten fortgeschrittenen Entwickler zu?
temporary_user_name

21

Der offensichtliche erste Vorschlag ist Ogre3D .


Hast du irgendwelche Erfahrungen damit gemacht? Ist es ziemlich stabil, gut geschrieben und gut für 3D-Anfänger? Ich kann ganz einfach eine Liste von 3D-Engines aufrufen (wie aus meiner Frage hervorgeht). Ich suche nach mehr Informationen darüber, welche eine gute Wahl ist und warum. Vielen Dank.
Davr

1
Aber Ogre3D ist kein Motor. Es ist eine 3D-Rendering-Bibliothek. Sie müssen entweder einen Motor wählen, der auf Oger basiert, oder einen eigenen Motor bauen.
Feuer

4
Ich habe umfangreiche Erfahrung mit Ogre3d; Es ist sehr stabil und gut geschrieben und erledigt großartige Aufgaben (Szenen-Culling, Laden von Maschen, Werbetafeln / Partikeln). Fire ist insofern richtig, als es keine Game Engine ist. Aber Ogre kann (und wird oft) in andere Bibliotheken integriert werden, um eine zu erstellen. Es ist ein fantastischer Schritt über dem "Zeichnen einzelner Dreiecke und Schreiben meines eigenen 3D-Objektladers", aber es ist nur eine Render-Bibliothek. Wenn Sie das möchten, ist es eine großartige Bibliothek mit einer aktiven und unterstützenden Community.
Karantza

3
@Fire OGRE: Objektorientierte Grafik-Rendering-Engine. Es ist ein Motor. Es gibt überall Singletons. Auf jeden Fall ein Motor.
Ricket

3
@Ricket Ja, eine Grafik- Engine, aber keine Spiel-Engine, was er höchstwahrscheinlich meinte, da dies in den Oger-Dokumenten stark betont wird. Auch das Singleton (Anti) Muster hat sicherlich nichts damit zu tun, ob es eine Engine ist oder nicht.
Raoul

7

Open Scene Graph ist eine ziemlich gute, sehr gut gestaltete, plattformübergreifende 3D-Engine. Im Gegensatz zu Ogre3D bietet es beispielsweise keine "Game Engine" -Funktionen und konzentriert sich darauf, eine sehr schöne Abstraktion über OpenGL zu sein.

  • Es ist recht leicht und erzwingt kein Framework: Sie können so wenig oder so viel davon verwenden, wie Sie möchten, und es über SDL, SFML, wxWidgets, QT ...
  • Es ist eine großartige Lernerfahrung: Wenn Sie die Bibliothek lernen, verstehen Sie immer mehr über das zugrunde liegende OpenGL und die Art und Weise, wie es entworfen wurde
  • Ziemlich einsatzbereit: Es verfügt über Lader für gängige 3D-Formate
  • Shader freundlich

Schauen Sie sich die umfangreiche Musterliste an .


4

In Bezug auf Game Engines:

  • Torque3D : Viele Funktionen, aber einige halten es für schwierig, mit dem Code zu arbeiten.
  • C4 Engine : Preiswerte, exzellente Autorenunterstützung, aber die Tools könnten ein bisschen Arbeit vertragen.
  • DIY: Wähle eine Reihe von Bibliotheken aus und klebe sie mit deinem Spiel zusammen.

Da Ogre3D vorgeschlagen wurde, gibt es auch eine leichte Alternative Horde3D .

Vorteile:

  • Das Design ist solide und wird Ogre3D bei starkem Rendering wahrscheinlich übertreffen (falls nicht bereits geschehen).
  • C API, wodurch Bindungen für Sprachen wie Python einfach und leicht zu pflegen sind (interner Code ist C ++)

Nachteile:

  • Benötigt mindestens OpenGL 2.0-Unterstützung
  • Kleinere Community
  • Instabile Codebasis (größere architektonische Änderungen sind noch nicht abgeschlossen)

2
Vermeiden Sie Torque 3D, wenn Sie Ihre geistige Gesundheit schätzen. Die Skript-Engine ist ein Albtraum, mit dem man sehr frustriert arbeiten kann.
Jared Updike

4

Irrlicht bietet ein bisschen mehr als Ogre3D und ist gleichzeitig ein bisschen praktischer (z. B. fühlt es sich nicht so an, als würde man nur einen Motor starten und ihn laufen sehen, es fühlt sich eher so an, als ob man derjenige wäre) man führt befehle aus, wie es meiner meinung nach sein sollte).

Ich denke, es wäre großartig, mit zu beginnen!


4

Ich weiß, dass Sie nach C ++ gefragt haben, aber Panda3D funktioniert auch mit C ++, auch wenn es zunächst auf die Arbeit mit Python abzielt. Es ist eine Spiele-Engine, aber was auch immer ...


2

Die offensichtliche Wahl, wenn Ogre3D für Sie zu niedrig ist, wäre NeoAxis: http://www.neoaxisgroup.com/

Es wird von Ogre unterstützt, ist jedoch eine komplette Spieleentwicklungsplattform.

Es zielt auf .NET ab, sodass Sie C #, verwaltetes C ++ und VB verwenden können.

Also mach das. :)

Ogre3D kann auf einer Reihe von Mobilgeräten wie iPhone und Android ausgeführt werden. Es ist also nicht zu groß.

Verwechseln Sie Größe nicht mit Leistung.

Ich bin nicht sicher, ob IrrLicht einen offiziellen iPhone-Support hat, aber Ogre3D.


Wenn es auf .NET ist, können Sie IronPython nicht zur Liste der Sprachen hinzufügen? Python ist eine fabelhafte Skriptsprache.
Jared Updike

2
.NETZ? Schließt das nicht plattformübergreifend aus?
Davr

.Net nicht, aber Neo-Axis verwendet C ++ / CLI.
Jsimmons

Ich habe heute mit dem führenden Entwickler von Neoaxis gesprochen und sie kündigen die Unterstützung für Mac OS X im September an. :)
jacmoe


1

Gute Antworten bisher, aber ich werde Marmelade hinzufügen . Es macht Mobile ziemlich gut. Eine Reihe von großen Studios haben ein Konsolenspiel herausgebracht, also hat es Anmeldeinformationen. Es gibt sogar einen einheitlichen Editor, Shiva3D , der ebenfalls plattformübergreifend funktioniert .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.