Da Java OpenGL unterstützt, was ist die beste Option für die Entwicklung eines Spiels?
Java
+ OpenGL
C++
+ SDL
+ OpenGL
Ich habe Java (in der Spieleentwicklung natürlich) wegen seiner Geschwindigkeit immer gemieden. Aber ich entdeckte, dass Java OpenGL unterstützt. Also, ich denke Geschwindigkeit kann nicht mehr das Problem sein ... Was sollten Sie wählen? Gibt es Bemerkungen?
Java wäre für mich aufgrund meiner Erfahrungen in Java und dem Garbage Collector viel einfacher.
Danke
Ich würde für C ++ stimmen, weil Sie in Ihren Objekten einen zuverlässigen Destruktor haben. Dadurch können Sie viele der OpenGL-Komponenten (Puffer, Texturen usw.) umschließen. Sie können wissen, dass das Asset beim Erstellen des Objekts zugeordnet wird. Wenn das Objekt zerstört wird (oder den Gültigkeitsbereich verlässt), wird das Asset bereinigt.
Es kann sicherlich in Java gemacht werden. Minecraft wurde in Java hergestellt und hat über 25 Millionen Dollar eingespielt.
Meiner Meinung nach, wenn Sie eine Idee für ein Spiel in Ihrem Kopf haben, ist es egal, mit was Sie es schreiben (zuerst), C / C ++, Java, Stift & amp; Papier ... Wählen Sie die Sprache aus, mit der Sie sich wohler fühlen, und testen Sie Ihre Spielidee, nachdem Sie eine grobe Skizze haben und wissen, was Sie tun müssen, werfen Sie den Prototyp raus, gestalten Sie das Gameplay & amp; Architektur und dann beginnen, das eigentliche Ding zu codieren. Optimiere erst, wenn du die meiste oder die ganze Funktionalität funktionierst (im Allgemeinen gibt es immer kleinere Bugs zu jagen) und du siehst tatsächlich wo die Engpässe sind.
Ich habe es immer und immer wieder gesehen, Spieleprogrammierer gehören zu den schlechtesten vorzeitigen Optimierern überhaupt, versuchen ein paar Zyklen aus etwas Trivialem herauszupressen, während sie die größten Engpässe verpassen und dann noch mehr optimieren (an der falschen Stelle) ). Ich habe mich auch viele Male schuldig gemacht. Ich würde sagen, wählen Sie nicht C ++ (oder Java für die Angelegenheit) wegen der Geschwindigkeit, können Sie sehr gute Leistung von beiden bekommen, wenn Sie "richtig" gemacht. Bei Bedarf können Sie immer in eine andere Sprache wechseln, wenn die Sprache selbst der Flaschenhals ist oder Sie wirklich daran hindert, etwas zu tun. Java ist nicht automatisch langsam und C ++ ist nicht automatisch schnell, Sie können mit beiden (sehr) falsch gehen. Ich habe in allen Bereichen für C und C ++ gearbeitet, aber nachdem ich eine ganze Weile mit Java gearbeitet habe, verpasse ich wirklich nicht den ganzen Aufwand.
Es gibt viele (bereits optimierte und relativ einfach zu bedienende) Spiele-Engines für beide Sprachen, es ist also nicht nötig, eigene zu spielen ... es sei denn, Sie möchten es wirklich. Meiner Erfahrung nach sind die meisten Hobby-Spieleprogrammierer eher an der technischen Seite der Dinge interessiert als am eigentlichen Spiel (ich selbst);) Sobald alle technischen Hürden genommen sind und du dieses schöne Modell / Haufen Sprites bekommst / Partikeleffekte, die mit einigen Shader-Effekten laufen, scheinen den Enthusiasmus zu verblassen ... Aber lass mich dich nicht entmutigen, Spieleprogrammierung macht sehr viel Spaß, auch wenn du nie wirklich etwas beendest (ich würde nichts von mir selbst nennen) Projekte abgeschlossen).
Ich habe keine Spiele für eine Weile programmiert, aber für C ++ 2D SDL ist ein guter Kandidat, andere Option könnte
In Java gibt es mindestens Slick2D , Golden T Game Engine und für den Zugriff auf die untere Ebene LWJGL (obwohl ich denke, dass du das kannst) Zugriff auf LWJGL über Slick2D auch). Für 3D empfahl mir jemand jMonkeyEngine , aber ich habe es noch nie ausprobiert.
Ich würde mit C ++, SDL und OpenGL gehen. SDL wird im Moment mit 1.3 überarbeitet und es wird wirklich gut. Meiner Meinung nach solltest du es in C ++ tun, da du gesagt hast, dass du dich mit Java wohler fühlen würdest, wenn du dich nach einem Spiel in C ++ wohl fühlst, wäre das sehr vorteilhaft. Sie würden nicht nur ein Spiel machen, sondern gleichzeitig mehr lernen.
Es hat sich gezeigt, dass Java genauso schnell, wenn nicht schneller als C ++ ist, obwohl dies ohne eine kleine Optimierung der Parameter und eine sorgfältige Überwachung des Garbage Collectors erreicht wird. Wenn Sie Game-Design mit Java verfolgen wollen, würde ich sagen, dass dies eine gute Wahl ist, vorausgesetzt, Sie lernen, wie Sie zuerst damit umgehen.
Wenn Sie die Java-Route herunterfahren, müssen Sie die JVM möglicherweise zusammen mit Ihrem Spiel versenden. Das heißt nicht, dass Sie es nicht tun, aber viele Leute haben vielleicht kein Java installiert oder haben nicht genug Versionen für die Funktionen und die Leistung, die Sie wollen. Ich habe die Lizenzanforderungen für den Versand der JVM nicht untersucht, aber das ist wahrscheinlich etwas, was Sie untersuchen wollen, bevor Sie die Entscheidung treffen.
Sie sollten sich auch darüber im Klaren sein, dass beim Optimieren einer App, obwohl die Java-API auf allen Plattformen gleich ist, Unterschiede bestehen, da deren Implementierungen häufig das zugrundeliegende Betriebssystem verwenden. Daher bezweifle ich, dass die Verwendung von Java die Testlast für ein Spiel reduzieren würde.
Es hängt wirklich davon ab, welche Sprache du am meisten benutzt hast. Es gibt eine steilere Lernkurve mit C ++ als mit Java. Wenn Sie nicht in keiner der Sprachen, und ist eifrig, etwas Entwicklung zu tun, würde ich Java empfehlen.
Und eine kleine Randnotiz. Wenn Sie völlig neu sind, würde ich auch XNA empfehlen, aber es basiert auf DirectX. Und du musst ein paar C # wissen.
Nun, ich habe alle meine Spiele in SDL programmiert und ich würde definitiv die Verwendung von C ++ empfehlen. Obwohl Sie SFML betrachten möchten!
SFML ist bereits in OpenGL integriert, und es ist ziemlich einfach, mit der Spielprogrammierung aufzustehen.
Es hängt wirklich davon ab, welche Art von Spielen Sie erstellen möchten und mit welcher Programmiersprache Sie sich wohler fühlen.
Wenn Sie planen, in Zukunft große Spiele zu machen, ist C ++ das beste für die Gesamterfahrung. Die meisten kommerziellen Spiele sind in C / C ++ geschrieben. Microsoft hat auch XNA-Framework, das C #
verwendetIch gehe immer noch mit der Programmiersprache, mit der Sie bequemer sind, sie sind beide großartig
Wenn es Ihnen jedoch nichts ausmacht, ein bisschen mehr zu lernen, dann gehen Sie mit C ++
Das C ++ war immer die beste Option. Es ist schneller und ein bisschen einfacher zu verstehen als Java. Ich selbst benutze SDL OPENGL C ++.