Ich möchte ein browserbasiertes Multiplayer-Spiel erstellen. Das Schöne an der Verwendung eines Applets ist, dass ich den Client und den Server in derselben Sprache (Java / Closure / Scala / etc) erstellen kann. Ich weiß, dass es HTML5 und Javascript gibt, aber serverseitiges Javascript ist nicht so ausgereift wie die JVM-Plattform, und die Browserunterstützung ist immer noch etwas unzuverlässig.
Applets scheinen nicht weit verbreitet zu sein (außer Runescape), aber gibt es einen Grund, warum sie ungeeignet sind, oder liegt es nur an dem schlechten Ruf, den sie in ihren Kinderschuhen entwickelt haben?
Antworten:
Sie sind offensichtlich nicht ungeeignet dafür, wie RuneScape und Minecraft und andere kleinere Java-Applet-Spiele zeigen. Es gibt auch Bibliotheken für hardwarebeschleunigte 3D-Grafiken ( LWJGL , JOGL ). Es ist einfach keine beliebte Sprache in der Spieleentwickler-Community.
Sie müssen jedoch Ihre unterstützten Plattformen berücksichtigen. Windows und Linux haben großartige Java-Plugins, Mac hat ein anständiges (funktioniert meiner Erfahrung nach in Safari nur mit voller Geschwindigkeit), aber offensichtlich würden Plattformen wie das iPad und Googles Chrome OS völlig vermisst, weil sie dies nicht tun und wahrscheinlich auch nicht Haben Sie jemals die Java VM auf ihnen.
quelle
Ich benutze Java zum Schreiben von Spielen und ich habe C ++ zum Schreiben von Spielen verwendet und festgestellt, dass Java in Ordnung ist, solange Sie sich der Stärken und Schwächen von Java bewusst sind. Die beiden großen Vorteile der Programmierung in Java sind für mich die Entwicklungsgeschwindigkeit und die Bereitstellbarkeit / Portabilität. Die Kompilierungszeiten sind viel schneller als in VC ++ (kann noch nicht für XCode oder Clang sprechen), was bedeutet, dass ich Probleme viel schneller ausbügeln kann. Da Eclipse ständig kompiliert, mache ich auch weniger Tippfehler. Ich habe noch nie einen C ++ - Code geschrieben, der auf einem anderen System oder Compiler "nur funktioniert". In Java ist dies die Norm.
Auf der anderen Seite hat Java einige große Nachteile. Effizienz wird oft als Grund dafür angeführt, Java nicht zu verwenden, aber ich habe festgestellt, dass Java eine recht gute Leistung erbringen kann, solange Sie auf bestimmte Weise codieren. Das Problem ist, dass die bestimmte Art und Weise, wie Sie codieren müssen, gegen das verstößt, was viele Java-Leute für gutes Design halten würden.
Das Herzstück von Java ist der "Garbage Collector", ein Speicherverwaltungssystem. Wenn Sie effizienten Code schreiben, möchten Sie vermeiden, dass jedem Frame in einer beliebigen Sprache dynamische Zuordnungen vorgenommen werden. Dies gilt insbesondere für Java. Wenn Sie den Garbage Collector wegen schlampiger Neuheiten ausschalten, können Sie sich von glatten Frameraten verabschieden. Zweitens (und am ärgerlichsten) unterstützt Java keine erstklassigen Benutzerdatentypen. Jeder Benutzerdatentyp in Java wird im Wesentlichen als Zeiger auf eine Klasse instanziiert, die auf dem Heap zugeordnet ist. Dies ist für die Cache-Parallelität schrecklich, da Sie keine Elemente wie ein Array von Vector3-Objekten haben und diese gleichzeitig im Speicher haben können - Sie können ein Array von Vector3-Zeigern haben, aber das ist überhaupt nicht dasselbe. Im Allgemeinen müssen Sie stattdessen Offsets in großen Arrays primitiver Typen verwenden.
quelle
An Java-Applets für ein Webspiel ist nichts auszusetzen. Ich habe ein Open Source Roguelike-Spiel ( Tyrant ) in Java geschrieben und es funktioniert sehr gut als Applet.
Einige große Pluspunkte von Java in meiner Erfahrung:
Die Portabilität ist ausgezeichnet - angesichts der Komplexität von Tyrant war es ziemlich beeindruckend, dass ich genau den gleichen kompilierten Code für Windows, Mac und Linux erhalten konnte.
Sie müssen sich keine Gedanken über Browser-Macken machen.
Mit ein wenig Cleverness können Sie denselben Code sowohl als Applet als auch als eigenständige Desktop-Anwendung ausführen
Die Leistung ist unter der Annahme einer modernen JVM großartig.
Alle üblichen Pluspunkte von Java in Bezug auf eine große Auswahl an Open Source-Bibliotheken / APIs usw.
Beachten Sie Folgendes:
Sie müssen Ihr Applet signieren / privilegierte Berechtigungen erhalten, wenn Sie beispielsweise Daten im lokalen Dateisystem speichern oder auf native Bibliotheken zugreifen möchten. Dies kann für einige Benutzer ein Hindernis sein.
Die Startzeit ist tendenziell etwas langsamer als bei Flash oder JavaScript. Auf der anderen Seite ist die Leistung besser, sobald die JVM betriebsbereit ist.
Java ist eine Müllsammelsprache, daher gibt es gelegentlich sehr leichte GC-Pausen. Nicht wirklich ein Problem für Gelegenheits- / Rollenspiel- / Strategiespiele, aber möglicherweise ein Problem für leistungsstarke 3D-FPS-Titel, bei denen Sie versuchen, eine konstante jitterfreie Framerate von 120 FPs beizubehalten.
quelle
Wenn Sie vorhaben, dass das Spiel Freeware ist, oder bereit sind, selbst Geld damit zu verdienen, ist Java in Ordnung. Es gibt jedoch kein etabliertes, weit verbreitetes Spielsponsoring-Modell wie Flash, so dass es etwas schwieriger wäre, Geld zu verdienen.
quelle