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?
Respuestas:
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.
fuente
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.
fuente
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 ...
fuente
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.
fuente