Java 3D Spieleprogrammierung



  • 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.



  • Ich denke auch nicht das Android/iOS ewig die Gewinner im Mobilesektor bleiben werden. Ich kann mir gut vorstellen dass es auch hier mal was wirklich freies geben wird, oder auch Microsoft kommt mit Windows8 dort an.

    Warum sollte es nicht ein schickes Mobileframework für C++ geben, Ressourcen sparen und Sicherheit müssen sich doch nicht ausschließen?



  • Natürlich ist es möglich mit JAVA 3D Spiele zu entwickeln, die C++ Spielen in nichts nach stehen...

    Ich habe ein JAVA 3D MMORPG im Diablo Stil geschrieben: http://www.forgottenelements.com
    Verwendet dafür habe ich lediglich Plain Old JAVA (client und server), die JPCT 3D Engine (http://www.jpct.net) und einen Server mit Tomcat und Datenbank.
    Möglich ist alles! ... wenn man nur will...

    Hier ein aktueller Screenshot:
    http://www.forgottenelements.com/images/screenshots/pic1.jpg

    http://www.forgottenelements.com


Anmelden zum Antworten