Java 3D Spieleprogrammierung



  • Stelfer schrieb:

    wenn java so der renner in der spieleprogrammierung wäre würden doch die firmen umsteigen ...

    können = ja
    performance = mau

    wenn du mit dieser unqualifizierten aussage meinst, dass modernen grafikkarten über directx mehr performance zu entlocken ist, als über opengl und dass das dazu führt, dass eine java anwendung plattformgebunden wäre und so der größte vorteil einer VM verspielt wäre und man sich wieder c++ code in das projekt holt, dann könnte man das so stehen lassen.

    wenn man plattformunabhängig bleibt (z.b. opengl), dann nehmen sich native c++ anwendungen und java anwendungen kaum noch was. miese performance ist in 99% der fälle eh bei schlechtem design zu suchen, völlig unabhängig von der verwendeten sprache.


  • Mod

    Naja, es ist natürlich so, dass die Spieleprogrammierung traditionell eher mit C++ und so gemacht wird. Insofern ist bezüglich C++ auch mehr relevante Infrastruktur zur Spieleprogrammierung vorhanden. Aber natürlich gibt es Ansätze, Spiele auch in Java zu programmieren. Vor allem kleine, unabhängige Entwicklerteams sind da bisher aktiv. Oft sind die Projekte dann auch nichtkommerziell. Beispiele:

    Tribal Trouble: http://tribaltrouble.com/

    Wurm Online: http://www.wurmonline.com/

    Diverse kleine Spiele, nicht alle 3D: http://www.puppygames.net/

    Jake 2 (Quake 2 in java): http://bytonic.de/html/jake2.html

    Die fallen mir gerade so ein, sind alle schon relativ alt, keine Ahnung, was es da so an neueren Spielen gibt. Ich habe das in letzter Zeit nicht so sehr verfolgt. Vielleicht kennt hier ja noch jemand weitere Spiele. Würde mich persönlich interessieren.

    EDIT: Auf der Seite von der JMonkeyEngine sind auch noch ne Menge Screenshots von Java-Spielen zu sehen:

    http://jmonkeyengine.com/index.php?option=com_content&task=view&id=68&Itemid=84



  • Das größte makel an java ist einfach, dass es nicht so viel power hat, weil es mit einer virtuellen maschine arbeitet 😡
    ich arbeite selbst mit jme3 und habe gemerkt, dass das relativ wenig bringt weil man einfach nicht so viele vorgefertigte objekte einfügen kann. wenn man nicht nur mit geometrischen formen arbeiten möchte, würde ich c++ empfehlen. Ich habe aufgrund dessen einfach mal in 1 woche c++ gelernt und wenn man schon vorher java konnte ist das überhaupt kein problem. 👍



  • volker153 schrieb:

    Ich habe aufgrund dessen einfach mal in 1 woche c++ gelernt und wenn man schon vorher java konnte ist das überhaupt kein problem. 👍

    Ich möchte nicht wissen wie dein C++ Code aussieht. C++ hat sehr grosse Unterschiede zu Java.



  • Wenn man hobbymäßig Spiele entwickeln will dann ist (zumindest die erste Zeit) sowieso praktisch jede Sprache geeignet. Aber wenn du noch nie ein Spiel gemacht hast (wovon man denk ich mal ausgehen kann) würd ich nicht gleich mit 3D anfangen. Schau erstmal dass du ein einfaches Pong hinbekommst 😉



  • Mit 3D-Spieleprogrammierung Millionär werden? Kein Problem siehe Minecraft^^



  • Hey, für den Anfang kann ich dir diese Tutorials empfehlen:
    http://www.cokeandcode.com/index.html?page=tutorials



  • ja erstmal mit schach anfangen oder so hab ich auch gemacht und um millionär zu werden wie jutso meinte, brauch man erstmal ne tolle idee, um das zu überlegen kriegt man bestimmt auch erstmal kopfschmerzen^^



  • thordk schrieb:

    wenn man plattformunabhängig bleibt (z.b. opengl), dann nehmen sich native c++ anwendungen und java anwendungen kaum noch was. miese performance ist in 99% der fälle eh bei schlechtem design zu suchen, völlig unabhängig von der verwendeten sprache.

    Das halte ich für ein Gerücht.

    Alle Vektoren in Java Objekte zu packen ist definitiv langsamer als sie z.B. in Arrays zu packen und mittels Zeigerarithmetik (C++) auf sie zuzugreifen.

    C-Chris schrieb:

    Kann man mit Java überhaupt gute 3D-Spiele aufsetzen.

    Ja, man kann gute Spiele damit machen, siehe Minecraft.
    Aber wenn es um optische Qualität geht, also Performance zum entscheidenden Faktor wird, dann ist C++ trotzdem die bessere Wahl.
    Natürich vorrausgesetzt, daß man überhaupt die richtigen Leute hat, die den 3d Content des Spieles erstellen.

    Wer keinen ordentlichen 3d Content hat, dem bringt auch die beste Engine nichts.

    Kann man mit Java auch DirectX proggen?

    Mit Java native Interfaces und der Verlust der Plattformunabhängigkeit mag das machbar sein, aber das halte ich für nicht sinnvoll.
    Wer für DirectX proggen möchte, der setzt in diesem Fall besser auf C#, wenn er schon kein C++ nehmen will.

    Ansonsten bietet Java eine gute OpenGL Unterstütztung, weswegen "mit DirectX" proggen eigentlich völlig unnötig ist.

    Kann man mit Java eine ordentliche KI coden?

    Kann man, allerdings ist bezüglich der Performance mit C++ mehr möglich.
    Sprich mit C++ kann man bei einer endlichen Rechenperformance mehr aus dem Rechner rausholen, es wäre damit also eine bessere KI möglich.

    Im großen und ganzen wette ich aber mal, daß du für dein Spiel Java und OpenGL sowieso nicht ausreizen können wirst, weswegen du ohne Sorge hier auf Java setzten kannst.
    Java hat hier auch den Vorteil, daß du weniger Frust beim Proggen hast und somit auch sicher schneller ans Ziel kommst, als wenn du das gleiche mit C++ versuchst.

    Notch hat bei Minecraft von Java sicher sehr profitiert, gerade weil als ein Mann Show hier Java einem viel Zeit erspart.
    Im Nachhinein kann man aber sagen, daß es möglicherweise aus Performancegründen besser gewesen wäre, wenn er Minecraft in C++ entwickelt hätte.
    Aber fraglich ist dann, ob er überhaupt so weit gekommen wäre.
    Und Minecraft selbst läuft außerordentlich stabil, mit C++ hätte es sicher deutlich mehr Abstürze gegeben, weil im Code dies oder das übersehen worden wäre oder unfreiwillig Speicherlecks in den Code reingekommen wären.



  • Ich denke heute werde viel mehr Spiele in Java, Javascript und Actionscript gecodet als in C++. Ich würde mal schätzen das C++ noch ca. 2% der Spiele ausmacht, auch wenn das dann die "großen" Games sind wie Crysis etc.

    C++ ist spätestens seit Android von Java in der Spieleentwicklung abgehängt worden, jedenfalls was die Quantität angeht.



  • gastausdemnorden schrieb:

    Ich würde mal schätzen das C++ noch ca. 2% der Spiele ausmacht, auch wenn das dann die "großen" Games sind wie Crysis etc.

    C++ ist spätestens seit Android von Java in der Spieleentwicklung abgehängt worden, jedenfalls was die Quantität angeht.

    Das Statement ist in etwa so sinnvoll wie zu sagen, dass PCs in etwa 2% aller Computer auf der Welt ausmachen...



  • gastausdemnorden schrieb:

    C++ ist spätestens seit Android von Java in der Spieleentwicklung abgehängt worden, jedenfalls was die Quantität angeht.

    Fuer performance-kritische Abschnitte wird aber oftmals nativer C oder C++ Code verwendet weil man halt einfach performanteren Code damit erzeugen kann.

    Und nun gut - Quantitaet ist (wie die meisten wohl wissen) auch nicht alles 😉



  • gastausdemnorden schrieb:

    C++ ist spätestens seit Android von Java in der Spieleentwicklung abgehängt worden, jedenfalls was die Quantität angeht.

    Für die Mehrheit der mobilen Games ist die Performance auch nicht kritisch. 3D Mahjong und Kartenspiele gab es schon unter Windows 3.11, programmiert ohne C in 16-Bit Visual Basic. Wenn für dich die Flut an solchen Games einen Fortschritt darstellt, der den Sieg von Java in der Entwicklung des Genres begründet, dann soll es halt so sein. Aber sogar Microsoft wird trotz einer technisch bei weitem überlegenen VM seine mobile Plattform bald für natives C++ öffnen, um für bessere high-performance Games und Portierungen zu sorgen.



  • Spiele & Java schrieb:

    unfreiwillig Speicherlecks in den Code reingekommen wären.

    Was für eine naive, falsche Aussage. In modernem C++ kann es gar keine Speicherlecks geben, weil hier Smartpointer zum Einsatz kommen.



  • /rant/ schrieb:

    gastausdemnorden schrieb:

    C++ ist spätestens seit Android von Java in der Spieleentwicklung abgehängt worden, jedenfalls was die Quantität angeht.

    Für die Mehrheit der mobilen Games ist die Performance auch nicht kritisch. 3D Mahjong und Kartenspiele gab es schon unter Windows 3.11, programmiert ohne C in 16-Bit Visual Basic. Wenn für dich die Flut an solchen Games einen Fortschritt darstellt, der den Sieg von Java in der Entwicklung des Genres begründet, dann soll es halt so sein. Aber sogar Microsoft wird trotz einer technisch bei weitem überlegenen VM seine mobile Plattform bald für natives C++ öffnen, um für bessere high-performance Games und Portierungen zu sorgen.

    Du bist anscheinend noch nicht in de Zukunft angekommen. Es gibt soo viele Spiele mit 3D-Engine und OpenGL ES, die sehr wohl Performance brauchen. Kann es sein dass du dich seit ca. 10 Jahren nicht mehr weitergebildet hast, deine Antwort läßt dies stark vermuten?

    Mahjong und Kartenspeiele...lol. Der Ottonormaluser wird in 10Jahren fast ausschließloch nur noch Javaanwendungen nutzen, da so ein uralt DesktopPC fast nur noch für Leute in fragen kommen die sowas beruflich brauchen.



  • schauausdemfenster schrieb:

    Mahjong und Kartenspeiele...lol. Der Ottonormaluser wird in 10Jahren fast ausschließloch nur noch Javaanwendungen nutzen, da so ein uralt DesktopPC fast nur noch für Leute in fragen kommen die sowas beruflich brauchen.

    Da wär ich mal extrem vorsichtig.
    Free lunch is over 😉
    http://www.gotw.ca/publications/concurrency-ddj.htm



  • Fakt ist Java ist schnell genug für alle möglichen Arten von Software inklusive 3D-Games auf Smartphones/Tablets und das schon jetzt. Ich bezweifle, dass da nochmal ein großes C++ Boom unter den mobilen Geräten kommen wird. Immer mehr Leute werden für alltägliche Aufgabe keinen Standardmäßigen PC mehr einsetzten, wozu auch?

    C++ wird somit immer mehr in die Systemschiene und weg von den Anwendungen gedrängt, was ja auch vernünftig ist. Die Welt dreht sich nun einmal weiter, ob das einigen passt oder nicht.

    Ich denke schon das die Masse der Software(Apps) in Zukunft nicht in C++ geschrieben sein werden. Die Tablets sind überall, selbst schon mittlerweile im Kinderzimmer, wie ich auf der Spielemesse gesehen habe. Die Schule wird auch immer mehr Java-Anwendung mit Tablets nutzen.

    Ich würde gerne in ca. 5 Jahren noch mal hier reinschneien und schauen ob sich die Spiele/Softwareindustrie nicht doch erheblich mehr Java als C++ widmet.



  • meinekugelsagt schrieb:

    Ich würde gerne in ca. 5 Jahren noch mal hier reinschneien und schauen ob sich die Spiele/Softwareindustrie nicht doch erheblich mehr Java als C++ widmet.

    Wohl kaum. Aber nicht unbedingt weil man die Performance braucht, sondern weil Java einfach eine ziemlich hässliche Sprache ist. Kein Destruktoren, keine Operatorüberladungen, keine freien Funktionen, Klassen als Namespaces missbraucht, ohne Ende Code-Redundanz mit erzwungenem new und ohne ein C++ "auto", ..
    Dazu kommt dann noch der Müllsammler, der sich immer genau dann entscheidet mal nen ordentlichen Putz zu machen, wenn es so gar nicht passt.
    Aber Java ist toll. 🤡 👍



  • Lol, ich kenne wenig die in C++ für Android coden und ich glaube mit C++ als Kernsprache würde sich nicht so viele Entwickler in den neuen Appmarkt drängen, C++ ist die übelste und häßlichste Sprache die es im Moment gibt. Die Mehrheit wird über kurz oder lang auf Android umsteigen, weil sie nix anderes brauchen für ihre 0815-Anforderungen und hier gibt Java den Ton an. Der Trend ist doch ganz klar zu erkennen und ich glaube nicht das Windows in 10 Jahren noch DIE große Rolle spielen wird wie heute.

    Tablets kommen so langsam immer mehr in Krankenhäusern, Schulen, Privat, Behörden, Altersheimen, Kinderzimmer und und und. PCs wird es weiterhin geben aber bei weitem nicht mehr in dem Umfang wie heute, wozu auch???



  • androiden schrieb:

    Lol, ich kenne wenig die in C++ für Android coden

    Was daran liegen *könnte*, dass das NDK nur für "performance-critical portions of your apps" gemacht wurde, also warum sollte sich jemand den Sprachmischmasch antun wollen. Ich z.B. würde lieber C++ nutzen, aber so lohnt das einfach nicht.


Anmelden zum Antworten