¿Hay una buena razón por la que no debería usar un applet de Java para un juego?

9

Quiero hacer un juego multijugador basado en navegador. Lo bueno de usar un applet es que puedo hacer que el cliente y el servidor estén en el mismo idioma (java / closet / scala / etc). Sé que hay html5 y javascript, pero javascript del lado del servidor no es tan maduro como la plataforma jvm y el soporte del navegador todavía es un poco escaso.

Los applets no parecen ser ampliamente utilizados (a excepción de Runescape), pero ¿hay alguna razón por la que no son adecuados o es solo debido a la mala reputación que desarrollaron en su infancia?

ryeguy
fuente
1
¿Quizás porque pocas personas hacen juegos web en Java y prefieren Flash?
El pato comunista
Java simplemente ya no está disponible en los navegadores en la actualidad (en comparación con Flash, o javascript), y es muy probable que su público objetivo no lo tenga instalado. Sin embargo, aún puede usar Java en el lado del servidor todo lo que quiera, independientemente de la tecnología del lado del cliente, no entiendo el argumento de que "javascript del lado del servidor no es tan maduro como la plataforma jvm".
falstro

Respuestas:

9

Obviamente, no son inadecuados para ello, como lo demuestran RuneScape y Minecraft y otros juegos de applets Java más pequeños. También hay bibliotecas para gráficos 3D acelerados por hardware ( LWJGL , JOGL ). Simplemente no es un lenguaje popular en la comunidad de desarrollo de juegos.

Sin embargo, debe tener en cuenta sus plataformas compatibles. Windows y Linux tienen excelentes complementos de Java, Mac tiene uno decente (en mi experiencia, solo funciona a toda velocidad en Safari), pero obviamente plataformas como el iPad y Chrome OS de Google se perderían por completo porque no lo hacen, y probablemente no lo harán. alguna vez, tenga la máquina virtual Java en ellos.

Ricket
fuente
Además, debe pensar en su mercado objetivo: los jugadores de Minecraft obviamente pueden manejar ir a java.com e instalarlo, pero mucha de la "multitud de exploradores de Internet" podría no estarlo.
Jari Komppa
Sin embargo, Minecraft está bien porque esos usuarios simplemente pueden descargar la versión ejecutable, que incluye el JRE y no necesita dicha instalación; simplemente funciona ™.
Ricket
2
Creo que Java es una excelente solución para acceder a GPU en el navegador sin obligar al usuario a instalar algo (80-85% de los usuarios tiene Java instalado ... incluidos los noobs del explorador también :))
Notabene
6

Yo uso Java para escribir juegos y he usado C ++ para escribir juegos y he encontrado que Java está bien siempre y cuando se tenga en cuenta cuáles son las fortalezas y debilidades de Java. Las dos grandes ventajas para mí, la programación en Java son la velocidad de desarrollo y la capacidad de implementación / portabilidad. Los tiempos de compilación son mucho más rápidos que en VC ++ (todavía no puedo hablar por XCode o Clang), lo que significa que puedo resolver los problemas mucho más rápido. Además, como Eclipse se compila constantemente, cometo menos errores tipográficos. Nunca he escrito un fragmento de código C ++ que 'simplemente funcione' en otro sistema o compilador. En Java, esta es la norma.

Por otro lado, Java tiene algunos inconvenientes importantes. La eficiencia a menudo se considera una razón para no usar Java, pero descubrí que siempre que codifique de cierta manera, Java puede funcionar bastante bien. El problema es que la forma determinada de codificar va en contra de lo que mucha gente de Java consideraría un buen diseño.
En el corazón de Java está el 'recolector de basura', es el sistema de gestión de memoria. Al escribir código eficiente, debe evitar hacer asignaciones dinámicas a cada cuadro en cualquier idioma y esto es particularmente cierto en Java. Si apaga el recolector de basura debido a las novedades descuidadas, puede despedirse de las velocidades de fotogramas suaves. En segundo lugar (y lo más molesto), Java no admite tipos de datos de usuario de primera clase. Cada tipo de datos de usuario en Java se instancia esencialmente como un puntero a una clase, asignada en el montón. Esto es horrible para la concurrencia de caché, ya que no puede tener cosas como una matriz de objetos Vector3 y tenerlas concurrentes en la memoria; puede tener una matriz de punteros Vector3 pero eso no es lo mismo en absoluto. En general, debe utilizar desplazamientos en grandes matrices de tipos primitivos.

Lutero
fuente
3

No hay nada malo con los applets de Java para un juego web. Escribí un juego roguelike de código abierto ( Tyrant ) en Java y funciona muy bien como applet.

Algunos grandes puntos positivos de Java en mi experiencia:

  • La portabilidad es excelente: dada la complejidad de Tyrant, fue bastante impresionante que logré obtener exactamente el mismo código compilado para funcionar bien en Windows, Mac y Linux.

  • No tiene que preocuparse por las peculiaridades del navegador.

  • Con un poco de inteligencia, puede hacer que el mismo código se ejecute tanto como un applet o como una aplicación de escritorio independiente

  • El rendimiento es excelente asumiendo una JVM moderna.

  • Todos los puntos positivos más habituales de Java en términos de gran variedad de bibliotecas de código abierto / API, etc.

Solo tenga en cuenta lo siguiente:

  • Tendrá que firmar su applet / obtener permisos privilegiados si desea hacer cosas como almacenar datos en el sistema de archivos local o acceder a bibliotecas nativas. Esto puede ser una barrera para algunos usuarios.

  • El tiempo de inicio tiende a ser un poco más lento que Flash o JavaScript. Por otro lado, el rendimiento es mejor una vez que la JVM está funcionando ...

  • Java es un lenguaje recolectado de basura, por lo que ocasionalmente tiene pausas muy leves de GC. No es realmente un problema para los juegos casuales / de rol / de estrategia, pero podría ser un problema para los títulos 3D FPS de alto rendimiento en los que intentas mantener una velocidad de fotogramas constante de 120 FPs sin fluctuaciones ...

mikera
fuente
1

Si está planeando que el juego sea gratuito o está preparado para manejar el hecho de ganar dinero solo, Java está bien. Sin embargo, no tiene un modelo de patrocinio de juegos establecido y extendido como Flash, por lo que ganar dinero sería un poco más difícil.

Gregory Avery-Weir
fuente
¿Huelo una oportunidad? :)
Ricket
No estoy seguro de si el modelo de patrocinio presenta un buen trato para los creadores. Es mejor vender su trabajo a un precio razonable que tomar una miseria de un sitio de portal que hace una miseria de la publicidad.
Luther
Luther: bastante cierto. El hecho de que se establezca un modelo no significa que sea el mejor.
Gregory Avery-Weir