Ich habe das Internet durchsucht, aber es gibt nicht sehr viele Ressourcen für die Entwicklung von Java-Spielen, bei weitem nicht so viele wie in C ++. Tatsächlich sind die meisten Engines in C ++ geschrieben. Ich habe versucht, ein mit jMonkeyEngine erstelltes Spiel zu spielen, aber das Spiel war so langsam, dass mein Computer abstürzte. Ich hatte keine anderen Java-Anwendungen und nichts zu ressourcenintensiv. Im Gegensatz dazu kann mein Computer die meisten modernen 3D-Spiele mühelos spielen. Wenn ich jetzt weiterhin Java lerne und verbessere und es sich herausstellt, dass ich später C ++ lernen muss, kann es schwierig sein, den Wechsel vorzunehmen.
Ist Java eine akzeptable Sprache für die Entwicklung von Serious Games? Mit ernst meine ich qualitativ hochwertige Grafiken, ohne viel Verzögerung auf modernen Computern. Ich möchte auch überlegen, Spiele für Konsolen zu entwickeln.
quelle
Antworten:
Ja, überprüfen Sie diese Liste auf einen Beweis. Dies sind einige Spiele, die mit Java unter Verwendung der Lightweight Java Game Library (LWJGL) erstellt wurden. Es ist ein Low-Level-Framework, das OpenGL für hochwertige Grafiken und OpenAL für Sounds bereitstellt. Es bietet auch Eingabe-API. Mit diesen können Sie ganz einfach mit der Entwicklung ernsthafter Spiele in Java beginnen.
Ich schreibe gerade mein zweites 3D-Spiel als Hobbyprojekt in Java und ich liebe es einfach. Früher habe ich meine Spiele mit C ++ geschrieben, aber nach dem Umstieg auf Java gibt es kein Zurück mehr. Die Unterstützung mehrerer Betriebssysteme mit Java kann sehr einfach sein. Mein früheres Java-Spiel, das ich ein Jahr lang unter Windows entwickelt habe, lief sofort unter Linux und unter OS X mit nur einem Fehler, ohne dass irgendetwas auf diesen Plattformen kompiliert werden muss.
Auf der anderen Seite haben Sie mit Java einige Probleme.
quelle
Nicht wirklich. Hier ist das Wichtigste: Erstens gibt es in Bezug auf die vorhandenen Bibliotheken für Java im Vergleich zu praktisch allem , was für C ++ erforderlich ist, nur sehr wenig .
Zweitens eignet sich Java als Sprache einfach nicht gut für die Spieleentwicklung. Ich meine, wenn Sie sich beispielsweise mit GPU-Puffern befassen, bietet Java keine Sprachfunktion, mit der Sie sicherstellen können, dass sie korrekt gesperrt sind und entsperrt oder entsorgt, was C ++ tut. Außerdem gibt es ein Leistungsproblem - und der GC ist nicht deterministisch, was für ein Spiel sehr schlecht ist.
Ich habe noch nie ein Nicht-Indie-Spiel gesehen, das vor der Ausführung viel Zeit in einer Sprache verbracht hat, die nicht mit nativem Code kompiliert wurde, und selbst die Indie-Spiele, die dies tun, sind eine Seltenheit. Deshalb glaube ich im Moment, dass dies einfach nicht möglich ist.
Ja, absolut wird es. Java und C ++ unterscheiden sich trotz ihrer oberflächlichen syntaktischen Ähnlichkeiten erheblich . Java-Erfahrung ist beim Erlernen von C ++ so gut wie nichts.
Gameplay über Grafik ist eine gute Wahl, und Sie können es am Erfolg von Spielen wie Terarria und Minecraft sehen. Wenn Sie jedoch srs-Grafiken erstellen möchten, ist dies in Java nicht möglich.
quelle
Wenn Sie sich für Java entschieden haben, weil Sie C ++ nicht verstehen konnten, sind Ihre Java-Programme für hochwertige Grafiken nicht schnell genug. Eine höhere Sprache sollte verwendet werden, um produktiver zu sein, und nicht, um die niedrigere Sprache zu verstehen.
Ich halte es nicht für eine ganz schlechte Idee, ein Spiel in Java zu schreiben, besonders wenn das Spiel einfach ist, aber Sie werden sofort auf Leistungsprobleme in Java stoßen, wenn Sie es als Krücke verwenden.
Schwere Grafiken: Möglich, aber Sie werden in Java / LWJGL das Gleiche tun wie in C ++ / GL: Schreiben von Bytes in GPU-Puffer und / oder Verwenden der veralteten Anzeigelisten wie in Minecraft. Wenn Sie die Speicherverwaltung nicht verstehen, werden Sie dies auch nicht richtig tun.
Schnelles Spiel ohne Verzögerung: Keine leichte Aufgabe in jeder Sprache, und es ist wahrscheinlicher, dass Sie sich in beide Richtungen in den Fuß schießen, ohne darüber nachzudenken.
Nein, Java wird auf Konsolen nicht verfügbar sein.
quelle
Ein erfahrener Programmierer kennt in der Regel viele Programmiersprachen - das Erlernen zusätzlicher Programmiersprachen ist nicht allzu schwierig, wenn Sie eine Programmiersprache gut kennen. Ich würde jedoch nachdrücklich empfehlen, dass C ++ nicht Ihre erste Sprache ist und wahrscheinlich auch nicht die zweite.
Dies liegt daran, dass C ++ einen großen Teil seiner Effizienz dadurch erzielt, dass es keine signifikanten Laufzeitfehler überprüft. Wenn Sie beispielsweise in Java auf ein Element am Ende eines Arrays zugreifen, wird immer eine Ausnahme ausgelöst, die dem Programmierer genau mitteilt, was nicht stimmt. In C ++ haben Sie möglicherweise Glück und es stürzt sofort ab, aber sehr häufig werden einige andere Daten unbemerkt gelöscht und der Fehler wird erst viel später angezeigt .
Ich würde vorschlagen, dass Sie vorerst bei Java bleiben (oder zu C # wechseln, wenn Sie das bevorzugen). Auf diese Weise können Sie Dinge schneller erledigen als mit C ++, und die Leistung auf einem PC sollte kein Problem darstellen.
Denken Sie daran, C ++ zu lernen, nachdem Sie einige Projekte in sichereren Sprachen abgeschlossen haben. C ++ ist das, was Sie für die meisten professionellen Spieleentwicklungsjobs benötigen.
Mit Ausnahme von C # / XNA müssen Sie für ein Spiel, das Sie mindestens auf eine Konsole geschrieben haben, eine Firma mit einem Büro einrichten und über ein großes Budget für Entwicklungshardware und andere Ausgaben verfügen.
quelle
Haftungsausschluss: Dies beantwortet Ihre Frage nicht genau. Ich habe jedoch versucht, einige Punkte (kurz) zu erwähnen, die für Sie von Interesse sein könnten.
Der Grund, warum Sie so viel über C ++ sehen, ist, dass C ++ immer noch der Industriestandard ist - die häufigste Sprache für Konsolen usw.
Java wird nicht häufig verwendet. Minecraft ist ein ziemlich beliebtes Spiel, das es mit Java zu etwas ganz Besonderem gemacht hat. Aber grafisch ist es nicht so toll. Spiral Knights ist nicht schlecht - auch in Java gemacht, mit bedeutenden Grafiken.
Wenn Sie Java mögen, ist C # in der Syntax sehr ähnlich, mit dem Vorteil, dass es mit C ++ interoperieren kann - so dass bei Bedarf einfache Dinge in C ++ erledigt werden können. Unity kann C # für die Skripterstellung verwenden, und XNA ist eine ausgezeichnete Wahl.
Auch hier ist Java nicht weit verbreitet. Wenn Sie den Stil und die Syntax mögen, werden Sie feststellen, dass C # ein sehr ähnliches, sehr angenehmes Programmiererlebnis ist.
Ich hoffe deine Träume machen es, es macht eine Menge Spaß auf dem Weg :)
quelle
Dies beantwortet Ihre Frage nicht. Die Grafik- und Konsolenprobleme scheinen etwas zu sein, das Sie unbedingt berücksichtigen müssen. Auch GC wirkt sich auf die Leistung aus. Aber worüber schreibe ich:
Wenn Sie große, komplexe OO-Programme schreiben, schreiben Sie sie in Java fünfmal schneller als in C ++. Außerdem wird die Wartung erheblich vereinfacht. Ich wechselte (zugegebenermaßen für Nicht-Spiel-Software) und meine Produktivität stieg sprunghaft an. C #, eine andere gute Alternative, ist schwieriger zu erlernen als Java, da es viel mehr davon gibt. Wenn Sie es wissen, können Sie Code sogar schneller als in Java schreiben. Es bietet Ihnen eine Menge Tricks. Ich finde jedoch, dass diese Tricks die Wartung erschweren können. Und dann gibt es noch ein Java-Dokument, das bei den Sun-Bibliotheken und Ihrem eigenen alten Code hilft . C # hat nichts Vergleichbares.
Ich habe in Java ein haariges Spiel gemacht und fand die Sprache perfekt, aber meine Grafiken waren einfach und es war kein Shooter, bei dem eine Zehntelsekunde für die Spieler eine Ewigkeit war. Ich gehe davon aus, dass ich später noch viel hinzufügen werde, während ich denke, dass die meisten Leute einfach ein brandneues Spiel schreiben.
quelle
Guck mal, die einfache Antwort auf "Ist Java für Spieleentwickler brauchbar ?" Ist ein klares Ja. Sie können eine beliebige Programmiersprache verwenden, um Spiele zu erstellen. Das heißt nicht, dass Sie sollten .
Wahrscheinlich sollten Sie genau die Dinge lernen , die Sie von C ++ abhalten (Speicherverwaltung auf niedriger Ebene, kein Garbage Collector, auf Zeiger, Strukturen als Arrays usw. achten müssen) , wenn Sie die Ressourcen eines Computers am effizientesten nutzen möchten . Ihre Spiele funktionieren am besten, wenn Sie die Ressourcen des Computers am effizientesten nutzen.
Java führt einige Dinge aus (z. B. die Überprüfung der Array-Grenzen), die die Ausführung nur verlangsamen. In diesem optimierten Java Perlin-Beispielcode für Rauschen kommentierte der Autor "(der Array-Zugriff ist viel langsamer als der Mitgliederzugriff)". Diese Art von Dingen ist ziemlich kontraintuitiv, da sie aus einem C ++ - Hintergrund stammen. Aber in Java sind solche Dinge.
Ich sage, hör auf, der Kugel auszuweichen, lerne C ++ und benutze es.
quelle
Sie sollten es in der Sprache tun, die Sie am besten können, bis Sie sich eine formale Ausbildung (Bachelor of Science?) In Informatik leisten können, wobei der Schwerpunkt auf dem Spieledesign liegt. Sie könnten möglicherweise Ihr Spiel verwenden, um ein Stipendium zu erhalten, insbesondere wenn Sie sagen können: "Ich habe dies ohne eine formale Ausbildung in Java getan."
Moderne JVMs, auch die von Oracle, haben viele, viele Funktionen, um die Bedenken zu berücksichtigen, die die Leute hier angesprochen haben. Sie können verschiedene Garbage Collectors verwenden, um ein deterministischeres Garbage Collector-Verhalten zu erzielen. Ich habe keine umfangreichen Erfahrungen mit den 3D-Bibliotheken - nur ein wenig mit Java3D -, aber niemand hier scheint sich darüber beschwert zu haben. Die Escape-Analyse ermöglicht jetzt die Aufhebung von Sperren und eine viel schnellere / vernachlässigbare Zuordnung von Objekten mit sehr kurzer Lebensdauer.
Das Problem ist, ob Sie sich für Java von C ++ entscheiden, Sie müssen lernen, wie man Parallelität richtig verwendet und ein gutes Verständnis der Speicherverwaltung besitzt. Immerhin können Sie genauso leicht mit vermasseln,
malloc
wie Sie mit könnennew
. Ich weiß nicht, wie die Tools für C ++ aussehen, aber die Profilerstellungstools für Java sind recht einfach zu verwenden, kostenlos und in die IDE integriert. Sie können sie verwenden, um Leistungsprobleme aufzuspüren und zu lernen .quelle