Gibt es einen guten Grund, warum ich kein Java-Applet für ein Spiel verwenden sollte?


9

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?


1
Vielleicht, weil nur wenige Leute Web-Spiele in Java machen und Flash bevorzugen?
Die kommunistische Ente

Java ist heutzutage in Browsern einfach nicht mehr so ​​leicht verfügbar (im Vergleich zu Flash oder auf jeden Fall Javascript), und es besteht eine gute Chance, dass Ihre Zielgruppe es nicht installiert hat. Sie können Java immer noch auf der Serverseite verwenden, was Sie wollen. Unabhängig von der clientseitigen Technologie verstehe ich das Argument nicht, dass "serverseitiges Javascript nicht so ausgereift ist wie die JVM-Plattform".
Falstro

Antworten:


9

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.


Außerdem müssen Sie über Ihren Zielmarkt nachdenken - die Minecraft-Spieler können natürlich mit java.com umgehen und es installieren, aber viele der "Internet Explorer-Leute" sind es möglicherweise nicht.
Jari Komppa

Minecraft ist jedoch insofern gut gemacht, als diese Benutzer einfach die ausführbare Version herunterladen können, die die JRE enthält und keine solche Installation benötigt. es funktioniert einfach ™.
Ricket

2
Ich denke, dass Java eine großartige Lösung ist, um auf GPU im Browser zuzugreifen, ohne den Benutzer zu zwingen, etwas zu installieren (80-85% der Benutzer haben Java installiert ... einschließlich Explorer Noobs auch :))
Notabene

6

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.


3

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.


1

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.


Rieche ich eine Gelegenheit? :)
Ricket

Ich bin mir nicht sicher, ob das Sponsoring-Modell ein gutes Geschäft für die Schöpfer darstellt. Es ist besser, Ihre Arbeit zu einem vernünftigen Preis zu verkaufen, als einen Cent von einer Portalseite zu nehmen, die einen Cent aus der Werbung macht.
Luther

Luther: Richtig. Nur weil ein Modell etabliert ist, heißt das nicht, dass es das beste ist.
Gregory Avery-Weir
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.