Welche 3D-Engine in welcher Programmiersprache



  • Hallo, ihr!
    Vorab: Ich habe schon STUNDEN damit verbracht Google danach auszufragen und auch diverse Diskussionen gelesen, aber das Ergebnis war nicht wirklich befriedigend.

    Ich würde mich gerne mal an die 3D-Programmierung heranwagen.

    Zu mir:
    Ich programmiere seit einigen jahren in Java und bin bis jetzt auch zufrieden damit.
    In Sachen 3D aber bin ich mir unsicher, ob ich das in Java angehen sollte?
    Ist es empfehlenswert da in Java weiter zu machen?
    Oder sollte ich besser C++ / C# / sonstiges dafür verwenden und wenn ja, welche Engines sind da zu empfehlen (nachdem ich die Sprache selbst beherrsche)...
    Ich bin einfach dadurch verunsichert, dass dieses Themenfeld so groß ist 🙂

    Wenn Java, welche Engine? ----> Java3D, JOGL, JME3, Arodr3D
    Wenn nicht welche Sprache? ----> C++, C# ....
    Und welche Engine DANN? -------> Ogre, Cafu Engine, Crystal Engine, Unreal Engine...
    Oder gleich Direct3D / OpenGL (und wenn ja, welches?^^

    So und so ähnlich waren meine bisherigen Überlegungen und sie alle führten dazu, dass ich am Ende gar nichts mehr wusste

    Könnt ihr mir da etwas weiterhelfen?
    Danke schonmal 🙂



  • Vergiss Java; ganz schnell.

    C++ und DirectX/3D 11

    Viel Arbeit, viel Kontrolle. Viel Wert.



  • Ich hoffe doch sehr, dass das "vergiss Java" nur auf die 3D-Entwicklung bezogen war.

    Wenn nicht, ist dein Beitrag kaum mehr als heiße Luft...
    Entschuldige, dass ich so reagiere, aber Java an sich ist eine super Sache.

    Wenn es allerdings nur auf die 3D-Entwicklung bezogen war, ignoriere obigen Absatz und danke für die Antwort :).



  • Kommt drauf an was du willst.

    Willst du einigermaßen schnell etwas schaffen bzw. überhaupt ans Ziel kommen: Nimm eine fertige Engine/Framework und die Sprache, die die Engine unterstützt und du am besten kannst.

    Geht es dir eher darum was zu lernen: Nimm Direct3D9 oder 11. Aber wirklich nur, wenn du leidensfähig bist.



  • Die Sprache ist ziemlich egal, solange du nichts im Hochleistungsbereich machst. Insofern ist auch Java okay, wenn du das am Besten kannst. Die Algorithmen sind in allen Sprachen die Selben. Und wenn du jetzt anfängst Dinge in einer Sprache zu machen, die du nicht kennst, wirst du eh langsamer als du mit Java jemals sein könntest.

    Alles andere halte ich erstmal pauschal für Ideologie :).

    Wenn du bei Java bleibst, solltest du vielleicht auf eine Engine setzen, die auf OpenGL aufbaut. Sonst verspielst du ja den Plattformvorteil sofort wieder 🙂





  • C# soll Java ja quasi nachempfunden sein...
    Klappt da der Umstieg vielleicht schnell genug?
    Wenn nähmlich der Tipp von Hi zutrifft, lohnt sich ein Umstieg ja evtl.

    Zu Ogre3d dafür müsste ich z.B. C++ lernen, das wäre viel^^
    Es gibt auch einen Ogre3d Wrapper für java, ogre4j, aber da ist die letzte Aktivität von 2009...
    Danke für die vielen Antworten!



  • Wer hat dir das denn erzählt? C# ist eine von Microsoft entwickelte Sprache um optimal mit dem hauseigenen NetFramework zu arbeiten, Java ist da nicht wirklich etwas nachempfunden, gerade aus dem Grund heraus, dass Java auch nur eine C++ artige Sprache ist, die im Ursprung als plattformunabhängige und um einige Konzepte erleichterte Sprache gedacht war(es auch noch ist) (deshalb dürfte übrigens der Umstieg nicht groß schwer fallen, da man sich von Java zu C++ nicht viel anpassen muss, viel eher gilt es nur einige Konzepte zu verstehen, die C++ hat, Java jedoch nicht (Pointer, kein Garbage Collector etc etc).


  • Mod

    gnest schrieb:

    C# soll Java ja quasi nachempfunden sein...
    Klappt da der Umstieg vielleicht schnell genug?
    Wenn nähmlich der Tipp von Hi zutrifft, lohnt sich ein Umstieg ja evtl.

    ob java oder c# oder VB ist jacke wie hose, ich denke bei einem umstieg gewinnst du nicht viel, esseiden die engine die du dir ausgesucht hast ist speziel auf c# ausgelegt.

    Zu Ogre3d dafür müsste ich z.B. C++ lernen, das wäre viel^^
    Es gibt auch einen Ogre3d Wrapper für java, ogre4j, aber da ist die letzte Aktivität von 2009...

    du willst ja sicher keine riesen spiele machen die man irgendwo verkauft, sondern hauptsaechlich am entwickeln spass haben (sorry falls das ein poeses vorurteil ist), deswegen benutzt die sprache die dir gefaellt, versuch ein paar engines aus und mach einfach das spiel, sonst wirst du beim umsteigen eventuell 10mal versuchen und in probleme laufen bzw dinge die du nicht magst, die du vor dem umstieg nicht kennen konntest. auch die anderen sprachen haben keine 100% genialen engines und tools usw.



  • Was genau willst du machen?


  • Mod

    Kevinus schrieb:

    Wer hat dir das denn erzählt?

    hat microsoft quasi gesagt, als sie den rechtstreit mit sun verloren hatten, haben sie einen c-artigen syntax (so wie es java ist) fuer ihre visual basic runtime geschrieben. da die VB runtime natuerlich ein ziemlich schlechtes image bei professionellen entwicklern hat, heisst das ab da .Net. Deswegen konnte man mit der ersten irkanation von C# auch nicht mehr machen als VB konnte.

    C# ist eine von Microsoft entwickelte Sprache um optimal mit dem hauseigenen NetFramework zu arbeiten

    das war VB.

    Java ist da nicht wirklich etwas nachempfunden, gerade aus dem Grund heraus, dass Java auch nur eine C++ artige Sprache ist, die im Ursprung als plattformunabhängige und um einige Konzepte erleichterte Sprache gedacht war(es auch noch ist) (deshalb dürfte übrigens der Umstieg nicht groß schwer fallen, da man sich von Java zu C++ nicht viel anpassen muss, viel eher gilt es nur einige Konzepte zu verstehen, die C++ hat, Java jedoch nicht (Pointer, kein Garbage Collector etc etc).

    Das klingt irgendwie unsinnig, damit bescheinigst du MS quasi ein versagen beim versuch einen konkurenten zu Java zu schaffen, wenn c++ und java sich mehr aehneln wuerden als c# und java.
    Nach MS idee ist c# eine, natuerlich, bessere inkarnation der ideen die als urstein von java gelten, sie zielen entsprechend auf die gleichen leute ab. deswegen hast du bei beiden "generics" statt templates, references statt pointer, garbage collection und ein framework das jede erdenkliche kleinigkeit schon implementiert hat.

    (und ja, ich programmiere alle drei, deswegen ist es kein vorurteil, schon alleine deswegen weil android nur java erlaubte und win phone 7 auch noch ein wenig braucht bis mehr als c# drauf laeuft).



  • Ja stimmt, ich will vor allem neue Dinge kennen lernen und anwenden.
    Also ich habe mich mal vor ca. 1 Jahr mal mit dem opengl binding jogl auseinandergesetzt, aber auch nur kurz.
    Damals habe ich ein Dreidimensionales, rotierendes Koordinatensystem erstellt und eine Pyramide hineingepackt.
    Nun würde ich gerne etwas mehr mit Graphiken z.B. 3D Modellen machen, nun weiß ich beispielsweise nicht, ob ich eine Game-Engine (und wenn, welche) oder jogl verwenden soll.
    JME3 hatte ich mir angeschaut, sieht auch echt cool aus, aber die IDE die man dafür brauch ist total verbuggt.
    Das ist der bisherige stand. 😞



  • Außerdem glaube ich, dass JOGL nicht mehr weiterentwickelt wird (letzter Build 2010)

    Sry wegen Doppelpost



  • Du kannst dir ja mal jMonkey anschauen, nur weil ich da grad unlängst drüber gestolpert bin...



  • gnest schrieb:

    Außerdem glaube ich, dass JOGL nicht mehr weiterentwickelt wird (letzter Build 2010)

    Auf http://jogamp.org/ die 2.0-rc2 ist vom März 2011. Ansonsten gibt es da noch lwjgl (http://lwjgl.org/), das zwar meistens schneller weiterentwickelt wurde, allerdings keine offizielle Signaturen bekommt, und daher bei Applets und Webstart Anwendungen Sicherheitswarnungen zeigt.



  • http://en.wikipedia.org/wiki/Mobile_3D_Graphics_API
    http://homepage.mac.com/aberfield/dmj/index.html

    Ideologie (unabhängig von den Links oben und der gewählten Api): Content, Performance, einigermaßen vollständing, nicht halbgar.

    (Zum schlechten Ruf von VB haben u.a. fehlerhafte und halbgare Programme Programme (oder Konzept?) beigetragen. Das gilt in ähnlicherweise vermutlich für Java. Spiele, die erst auf zwei Jahre später erscheinender Hardware einigermaßen vernünftig laufen, und mit Unvollständigkeit und Bugs glänzen, sind eine ziemliche Unart, die man sich gar nicht erst angewöhnen sollte.)



  • @Tobiking2 Okay, z.Z. schwanke ich so zwischen JOGL und LWJGL.
    Kennst du dich damit aus?
    Welches hat denn mehr zu bieten, das Wort Lighweight bei LWJGL lässt darauf schließen, dass es eher sparsam eingerichtet ist...
    Dann besser JOGL?

    PS: Danke für die vielen Tipps und Ratschläge!
    Nach einem Post wie diesem habe ich ewig im I-Net gesucht 👍 👍 👍


  • Mod

    vielleicht kannst du dich auch nach android 3d engines umschauen da das nur java war am anfang, koennte es dort welche geben (die man nicht unbedingt findet wenn man nach "java" als keyword sucht).



  • So, habe jetzt die optimale Engine gefunden 😃
    Die jPCT java 3d engine.
    Coole Sache, einfach zu erlernen!
    Kann ich jedem empfehlen, der mit Java 3D-Spiele programmieren will...
    Danke nochmal an alle für die Hilfe, der Thread kann geschlossen werden.
    (Oder als Erledigt markiert, oder wie das im Forum hier gemacht wird 🙂 )



  • JME3 hatte ich mir angeschaut, sieht auch echt cool aus, aber die IDE die man dafür brauch ist total verbuggt.

    Braucht ist das falsche Wort. Du kannst die JMonkeyEngine auch komplett ohne die IDE nutzen (so habe ich es auch getan). Aber jPCT soll auch ziemlich stark sein 🙂

    Bezüglich Java und Performance: Sobald irgendwas in einer Schleife steckt, die viele tausend mal aufgerufen wird, ist Java dank HotSpot durchaus konkurrenzfähig mit C++ 😉


Anmelden zum Antworten