Cerrada. Esta pregunta es
fuera de tema . Actualmente no acepta respuestas.
Comentarios
Respuesta
Sí, consulte esta lista para ver una prueba. Esos son algunos juegos creados con Java usando The Lightweight Java Game Library (LWJGL). Es un marco de bajo nivel, que proporciona OpenGL para gráficos de alta calidad y OpenAL para sonidos. También proporciona API de entrada. Con estos puedes empezar fácilmente a desarrollar juegos serios en Java.
Actualmente estoy escribiendo mi segundo juego 3D como un proyecto de hobby en Java, y me encanta. En el pasado, solía escribir mis juegos con C ++, pero después de cambiar a Java no hay vuelta atrás. Soportar múltiples sistemas operativos con Java puede ser muy fácil, por ejemplo, mi juego Java anterior, que desarrollé en Windows durante un año, funcionó en Linux de inmediato y en OS X con solo un error sin necesidad de compilar nada en esas plataformas.
Por otro lado, con Java tienes un par de problemas.
- Recolector de basura. Como han dicho otros, la administración de memoria no determinista es un problema y debe codificar eso en mente.
- Falta de bibliotecas de terceros. La mayoría de las bibliotecas disponibles no son compatibles con Java. Por otro lado, siempre tiene la opción de llamar a estas bibliotecas nativas desde Java también, pero es más trabajo hacerlo. También hay puertos Java o envoltorios listos para usar disponibles para bibliotecas populares, por ejemplo, estoy usando JBullet – Puerto Java de Bullet Physics Library . Por otro lado, Java tiene una enorme biblioteca de clases incorporada, lo que reduce la necesidad de bibliotecas de terceros que no están relacionadas con el juego. La falta de bibliotecas no ha sido un problema para mí, pero puedo imaginar que puede serlo para otros.
- Java no es compatible con las consolas de juegos populares y hasta ahora no hay un cambio fácil a las de Java. que yo sé. Por otro lado, Android, que es una plataforma móvil popular, usa alguna forma de Java. Esta es una opción también, pero no excepto el mismo código Java para que funcione tanto en una PC como en un dispositivo Android.
- Comunidad más pequeña. La mayoría de los programadores de juegos usan C ++ y, en mi experiencia, a menudo no les gusta Java. Don » No espere recibir tanta ayuda de otros. No espere conseguir un trabajo en el desarrollo de juegos sin conocimientos de C ++.
Respuesta
Realmente no. Aquí «Es la cosa: en primer lugar, hay muy poco en términos de bibliotecas existentes para Java en comparación con prácticamente todo que es para C ++.
En segundo lugar, Java como lenguaje simplemente no se presta bien para el desarrollo de juegos; quiero decir, por ejemplo, si está tratando con búferes de GPU, Java no proporciona una función de lenguaje que lo ayudará a asegurarse de que estén correctamente bloqueados y desbloqueados o eliminados, lo cual C ++ lo hace. Además, existe el problema de rendimiento, y el GC no es determinista, lo cual es muy malo para un juego.
Nunca he observado ningún juego que no sea independiente que haya pasado mucho tiempo en un juego. lenguaje que no fue compilado en código nativo antes de la ejecución, e incluso los juegos independientes que lo hacen son una rareza.Entonces, mi creencia en este momento es que simplemente no se puede hacer.
Además, si continúo aprendiendo y mejorando Java ahora, y resulta que más tarde Debo aprender C ++, ¿será difícil hacer el cambio?
Sí, absolutamente lo será. Java y C ++ son muy diferentes, a pesar de sus similitudes sintácticas superficiales. La experiencia Java no cuenta prácticamente nada cuando se aprende C ++.
La jugabilidad con gráficos es una opción viable, y se puede ver en el éxito de juegos como Terarria y Minecraft. Pero si tiene la intención de crear gráficos srs, entonces no será factible en Java.
Comentarios
Respuesta
Entonces, hablo en serio desarrollo de juegos, ¿Java sigue siendo una opción viable? He intentado varias veces aprender C ++, pero realmente no me gusta el idioma. No sé realmente por qué, pero por lo general, cada vez que trato de aprender, nunca puedo comprender los temas.
Si su razón para elegir Java es que no puede entender C ++, sus programas Java no serán lo suficientemente rápidos para gráficos de alta calidad. Usar un lenguaje de nivel superior debería ser porque te hace más productivo, no porque no puedas entender el lenguaje de nivel inferior.
No creo que sea una idea del todo mala escribir un juego en Java, especialmente si el juego es simple, pero inmediatamente te encontrarás con problemas de rendimiento en Java si lo usas como muleta.
Entonces, en resumen, ¿se puede tomar Java en serio, para un desarrollo de juegos serio. Esto incluye gráficos pesados, juego rápido sin demoras y, posiblemente, y fácil cambio a consolas?
-
Gráficos pesados: posible, pero vas a hacer lo mismo en Java / LWJGL que en C ++ / GL: escribir bytes en búferes de GPU y / o usar el listas de visualización obsoletas como lo hace Minecraft. Si no comprende la gestión de la memoria, tampoco lo hará correctamente.
-
Juego rápido sin demoras: no es una tarea fácil en ningún idioma, y es más probable que se pegue un tiro en el pie de cualquier manera sin pensar en ello.
-
No, Java no estará disponible en consolas.
Comentarios
- Como pregunta paralela, ¿qué reemplazó las listas de visualización cuando estaban obsoletas?
- @Suds: canalización programable, creo.
- ¡Ya lo cubrí! VBOs : gamedev.stackexchange.com/questions/22170/…
- Las plataformas móviles podrían ser consideradas consolas. Me doy cuenta de que probablemente estaba hablando de los tres grandes, pero Android usa Java y se crean muchos juegos para él.
- @ Amplify91 sí, algunos juegos están escritos en Java para Android. Pero la mayoría juegos y probablemente todos los juegos multiplataforma o con uso intensivo de gráficos están escritos en C ++ usando el NDK de Android.
Respuesta
Un exper El programador experimentado generalmente conocerá muchos lenguajes de programación; aprender lenguajes de programación adicionales no es demasiado difícil una vez que conoce uno bien. Sin embargo, recomendaría encarecidamente que C ++ no sea su primer idioma, y probablemente tampoco el segundo.
Esto se debe a que C ++ obtiene gran parte de su eficiencia al no realizar ninguna comprobación significativa de errores en tiempo de ejecución. Por ejemplo, acceder a un elemento al final de una matriz en Java siempre generará una excepción que le indicará al programador exactamente qué está mal.En C ++ puede tener suerte y se bloqueará inmediatamente, pero con mucha frecuencia eliminará silenciosamente algunos otros datos y el error no aparecerá hasta mucho más tarde .
Le sugiero que se quede con Java por ahora (o cambie a C # si lo prefiere). Eso le permitirá hacer las cosas más rápido que con C ++, y el rendimiento en una PC no debería ser un problema.
Piense en aprender C ++ después de haber completado algunos proyectos en lenguajes más seguros. C ++ es lo que necesitará para la mayoría de los trabajos de desarrollo de juegos profesionales.
Tenga en cuenta que, con la excepción de C # / XNA, obtener un juego que escribió en una consola como mínimo requiere que configure una empresa, con una oficina y tener un gran presupuesto disponible para hardware de desarrollo y otros gastos.
Comentarios
Respuesta
Descargo de responsabilidad: Esto no responde exactamente a su pregunta. Sin embargo, he intentado mencionar (brevemente) algunos puntos que pueden ser de su interés.
La razón por la que ve tanto sobre C ++ es porque C ++ sigue siendo el estándar de la industria, el lenguaje más común para consolas, etc.
Java no se usa con frecuencia. Minecraft es un juego bastante popular que se hizo grande con Java; pero no es tan bueno gráficamente. Spiral Knights no está mal, también está hecho en Java, con gráficos significativos.
Si te gusta Java, C # es muy similar en sintaxis, con la ventaja de que puede interoperabilidad con C ++, por lo que se pueden hacer cosas de bajo nivel en C ++ si es necesario. Unity puede usar C # para secuencias de comandos, y XNA es una excelente opción.
Una vez más, Java no se usa ampliamente. Si lo desea el estilo y la sintaxis, creo que encontrará que C # es una experiencia de codificación muy similar y muy agradable.
Espero que sus sueños lo logren, es muy divertido en el camino 🙂
Comentarios
Respuesta
Mira amigo, la respuesta simple a «Es Java viable for game dev «es un sí obvio. Puedes usar cualquier lenguaje de programación para hacer juegos. Eso no significa que deba .
Probablemente las mismas cosas que lo alejan de C ++ ( administración de memoria de bajo nivel, sin recolector de basura, tener que prestar atención a punteros, estructuras como matrices, etc.) son las cosas que debe aprender si desea explotar una computadora recursos más eficientemente .Tus juegos se ejecutarán mejor si estás explotando los recursos de la computadora de la manera más eficiente.
Java hace algunas cosas (como la verificación de los límites de la matriz) que simplemente lo hacen funcionar más lento. En este código de ejemplo de ruido Java Perlin optimizado, comentó el autor «(el acceso a la matriz es mucho más lento que el acceso a los miembros)». Este tipo de cosas es bastante contrario a la intuición, ya que proviene de una experiencia en C ++. Pero en Java, esas cosas son.
Yo digo que deje de esquivar la bala, aprenda C ++ y úselo.
Respuesta
Esto no responde a su pregunta; los problemas de gráficos y consola parecen ser algo que debe tener en cuenta. También GC afecta el rendimiento. Pero sobre lo que escribo:
Si está escribiendo programas OO grandes y complejos, los escribirá 5 veces más rápido en Java que en C ++. Además, el mantenimiento será mucho más sencillo. Cambié (ciertamente por software que no es de juegos) y mi productividad se disparó. C #, otra buena alternativa, es más difícil de aprender que Java porque hay mucho más. Cuando lo sabes, puedes escribir código incluso más rápido que en Java; te ofrece muchos trucos. Sin embargo, encuentro esos trucos puede dificultar el mantenimiento. Y luego está el documento Java, que ayuda con las bibliotecas de Sun y su propio código antiguo. C # no tiene nada parecido.
Hice un gran juego peludo en Java y encontré el lenguaje perfecto, pero mis gráficos eran elementales y no era un juego de disparos donde una décima de segundo era una eternidad para el jugadores. Además, espero agregar mucho más después, mientras que creo que la mayoría de la gente simplemente escribe un juego nuevo.
Responder
Debes hacerlo en el idioma que mejor conozcas hasta que puedas pagar una educación formal (¿Licenciatura en Ciencias?) en Ciencias de la Computación, enfatizando el diseño de juegos. . Posiblemente podrías usar tu juego para obtener una beca, especialmente si puedes decir «Hice esto sin ningún entrenamiento formal en Java»
JVM modernas, incluso el de Oracle, tiene muchas, muchas características para abordar las preocupaciones que la gente ha planteado aquí. Puede utilizar diferentes recolectores de basura para obtener un comportamiento de recolector de basura más determinista. No tengo una amplia experiencia con las bibliotecas 3D, solo un poco con Java3D, pero nadie aquí parece haberse quejado de ellas. El análisis de escape ahora permite la elisión de bloqueos y una asignación mucho más rápida / insignificante de objetos de muy corta duración.
El problema es que, ya sea que elija Java o C ++, tendrá que aprender a utilizar correctamente la concurrencia y comprender bien la gestión de la memoria. Después de todo, puedes equivocarte con malloc
con la misma facilidad que con new
. No sé cómo son las herramientas para C ++, pero las herramientas de creación de perfiles para Java son bastante fáciles de usar, gratuitas e integradas con el IDE. Puede usarlas para rastrear problemas de rendimiento y aprender .
Comentarios