Java + SDL

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Java + SDL

Notapor Artifex » Mar Mar 03, 2009 6:15 pm

Hace unos dias investigando sobre la librerias SDL, me encontre con que hay un port para utilizarlas con Java http://jsdl.sourceforge.net/ Pero me pregunto

¿Realmente aporta alguna ventaja SDL a Java?
¿Vale la pena intentar usarlas con Java o de plano me regreso a C [c++] y Python?

En pocas palabras:
¿Que ventaja y desventaja tiene el usar SDL con Java?

Saludos y gracias por su respuesta.
Artifex
 
Mensajes: 7
Registrado: Mar Mar 03, 2009 6:09 pm

Notapor endaramiz » Mar Mar 03, 2009 7:14 pm

:shock: Es la primera vez que lo oigo. Pondría la mano al fuego a que hay mucho más material (ejemplos, tutoriales...) para sdl en C/C++ y pygame que para SDL en Java.

No puedo decirte más por falta de información.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor hugoruscitti » Mié Mar 04, 2009 1:18 am

Personalmente, me parece mas interesante utilizar python y pygame; porque
si tienes algún inconveniente mas personas podrán ayudarte y aportar ideas
para que puedas aprender.

De todas formas, recuerda que todo lo que aprendes con python y pygame
luego se puede aplicar a otros lenguajes como java. Lo importante es
que puedas poner en práctica los conceptos que aprendes sobre juegos. Luego
tu propia experiencia que servirá para aprender con velocidad otros
lenguajes, relacionando lo que conoces con las cosas nuevas y diferentes.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

@hugoruscitti

Notapor Artifex » Mié Mar 04, 2009 6:08 am

Tienes razón... se me paso que el foro en su mayoría es de Python+PyGame :roll:

Es solo que buscando sobre SDL di con su pagina y la verdad es que el contenido es genial, así que quise aprovechar y ver si me podían orientar [De echo por eso puse otra duda en otra sección del foro].

Pero enterado, y por cierto muchas gracias por tu respuesta y tu consejo, creo que es de lo mas acertado. Perderé mas tiempo aprendiendo las particularidades de tal o cual lenguaje o librería que aplicando algo mas conocido y que puede brindar resultados mas inmediatos, los cuales me pueden ayudar a entender los conceptos subyacentes para el desarrollo de videojuegos.

Saludos.
Artifex
 
Mensajes: 7
Registrado: Mar Mar 03, 2009 6:09 pm

Notapor Adri » Jue Mar 05, 2009 3:00 pm

¡Hola!

Aprovecho el post para presentarme en el foro. Espero aportar algo a la comunidad aunque no tengo mucha experiencia en lo que respecta a videojuegos, pero es algo que intentaré cambiar.

Bueno, hace relativamente poco descubri pygame, y en cierto modo fue lo que me incitó a interesarme por la programación de videojuegos, por la sencillez que aporta. Después de juguetear un poco con la libreria decidí intentar hacer algo "grande" y me encontré con una traba muy importante: el rendimiento. En cuanto la cosa se complica la aplicación empezaba a ir lenta (Igual soy yo que todavia estoy un poco pez).

C++ con SDL aportaría una notable mejora de rendimiento, aparte de dar al programador un mayor control sobre la aplicación. La pega... que no es independiente de la plataforma y sería necesario volver a compilar cada vez que se cambie de operativo.

Con Java y python no existe ese problema... y la ventaja de Java respecto a Python... me da la impresión de que las aplicaciones Java pueden tener mayor rendimiento (no estoy seguro), o puede ser por las propias caracteristicas del lenguaje. Java es un lenguaje fuertemente tipado y puramente orientado a objetos, que puede ser que a muchos les resulté más fácil hacer código en Java que en python.

Bueno aprovecho también para preguntar una cosilla: he visto por ahí que muchas aplicaciones usan sdl para todo menos para los gráficos que usan opengl. ¿por qué?

Un saludo
Adri
 
Mensajes: 4
Registrado: Jue Mar 05, 2009 2:42 pm

Notapor endaramiz » Jue Mar 05, 2009 9:50 pm

Adri escribió:¡Hola!

Aprovecho el post para presentarme en el foro. Espero aportar algo a la comunidad aunque no tengo mucha experiencia en lo que respecta a videojuegos, pero es algo que intentaré cambiar.

Bienvenido al foro! Yo veo más correcto crear un post nuevo ya que a la hora de buscar en el foro, es mucho más fácil encontrar algo si está bajo un título descriptivo.
Respecto a lo de la experiencia no te preocupes, muchos (incluido yo) hemos comenzado casi desde 0 en esta web.

Adri escribió:Bueno, hace relativamente poco descubri pygame, y en cierto modo fue lo que me incitó a interesarme por la programación de videojuegos, por la sencillez que aporta. Después de juguetear un poco con la libreria decidí intentar hacer algo "grande" y me encontré con una traba muy importante: el rendimiento. En cuanto la cosa se complica la aplicación empezaba a ir lenta (Igual soy yo que todavia estoy un poco pez).

Dependiendo de la resolución de la pantalla (incluyendo los bytes por píxel) es normal que vaya un poco lento. En ocasiones, se puede optimizar. Pero si quieres hacer, por ejemplo, un scroll vertical, la optimización es mínima.

Adri escribió:C++ con SDL aportaría una notable mejora de rendimiento, aparte de dar al programador un mayor control sobre la aplicación. La pega... que no es independiente de la plataforma y sería necesario volver a compilar cada vez que se cambie de operativo.

Hombre, tampoco es que sea una gran labor hacer una compilación, como con SDL el código si puede ser portable...

Adri escribió:Bueno aprovecho también para preguntar una cosilla: he visto por ahí que muchas aplicaciones usan sdl para todo menos para los gráficos que usan opengl. ¿por qué?

Básicamente por lo que te he dicho antes. Con SDL, en situaciones delicadas, puede llegar a ser lento el tratar/imprimir gráficos. Sin embargo, cosas como los eventos es mucho más fácil tratarlos con SDL que con OpenGL. Por eso se hace esa combinación, para aprovechar lo mejor de las dos bibliotecas.

Ojo, con esto tampoco te quiero decir que ni Pygame ni SDL sean una buena opción a la hora de hacer videojuegos.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor Juan Carlos » Vie Mar 06, 2009 2:32 am

Hola, y bienvenido al foro.

Con respecto a lo de Java y Python. Java posee un mejor bytecode que el de Python. Este bytecode es un codigo compilado a medias, que permite ejecutar la aplicacion mucho mas rapido. (mas rapido que una aplicacion puramente "interpretada" pero no tan rapido como una aplicacion puramente "compilada" como los lenguajes C, o C++)

Es importante aclarar que existen aplicaciones hechas en Java y son bastante lentas, por lo que la ventaja del bytecode es pequeña.

Con respecto a la portabilidad, es muy sutil la diferencia. Por ejemplo, un programa hecho en C, o C++, se debe compilar en cada computadora.
Mientras, los lenguajes Java y Python son "portables" siempre que el usuario de nuestro programa tenga el interprete instalado (el interprete de Python o la Maquina virtual de Java JVM). Si el usuario no tiene el interprete, debera instalarlo.

Como vez, cada lenguaje tiene su pro y su contra.

Saludos

Nota: "Java que es un lenguaje puramente orientado a objetos". Una palabra: "Smalltalk"
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Dudas y mas dudas...

Notapor Artifex » Vie Mar 06, 2009 5:32 am

Antes que otra cosa, gracias a todos por sus respuestas...

Solo unas pequeñas dudas [+]:

¿Java es mas rapido que Python?

En cuestion de facilidad, ¿quien es mas "accesible" Java, o C, o C++? [obviamente no pregunto por Python, por que este es sumamente "natural" e "intuitivo"]

¿Para un proyecto medianamente serio, es recomendable Java?[obviamente para proyectos serios no hay mas que C/C++]

Para un proyecto de cochera... ¿vale la penas aprender C++?

¿Es preferible usar C en lugar de C++? Lo digo por comentarios de gente como Miguel de Icaza o Linux Torvald que casi casi se la tienen jurada a C++

¿Que hay de cierto en los temas de fugas de memoria y errores de punteros con C++?

Gracias a todos de nuevo por sus respuestas, y si me pueden orientar se los agradeceria.

PD: No quiero ni pretendo crear flames o andar de troll ni nada por el estilo, es solo que deseo conocer la opinion de gente que ya empezo por este interesante camino de la programacion de videojuegos.

Saludos.
Artifex
 
Mensajes: 7
Registrado: Mar Mar 03, 2009 6:09 pm

Notapor Juan Carlos » Vie Mar 06, 2009 12:45 pm

Hola, bien como explique antes, Java es un poco mas rapido que Python debido a las optimizaciones del bytecode de Java.

En cuanto a la "accesibilidad", el orden de los lenguajes, de mas facil a mas dificil seria:

Python > Java > C++ > C

Hay quienes pueden discutir esto. Yo personalmente me baso en las facilidades de los lenguajes (no es las librerias que trae).

Con respecto al lenguaje para proyectos "serios", deberias preguntarte:

-Uso un lenguaje que conozco o uso un lenguaje nuevo y lo aprendo?
-Es muy largo el proyecto, que valoro mas? La velocidad de ejecucion o la velocidad a la hora de programar?
-Cada lenguaje trae sus ventajas y desventajas, que ventajas valorizo mas?

Ejemplo, C++ y C manejan manualmente la memoria y punteros haciendo de estos, un lenguaje mas potente pero mas facil de producir errores. Java y Python manejan automaticamente la memoria, menos potencia pero tambien menos problemas.
La pregunta seria: realmente necesito la potencia (ventaja) de los punteros de C++, tolerando los errores que estos pueden acarrear (desventaja)?
O, talvez, me intereza mas el manejo de memoria automatica (ventaja) aun perdiendo control sobre esta (desventaja)?

Esta en ti la decision, piensa que valorizas mas. No te guies solo por la "eficiencia". Recuerda que puedes, por ejemplo hacer un 90% de tu programa en Python y el 10% restante en C++. De esa manera construyes un software rapido y sin muchos problemas (ventajas de python) y en donde se detecte una ineficiencia notable, se codifica en C++ para hacer el codigo mas rapido (ventaja de C++).

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor Geo » Sab Mar 07, 2009 7:05 am

Adri escribió:importante: el rendimiento. En cuanto la cosa se complica la aplicación empezaba a ir lenta (Igual soy yo que todavia estoy un poco pez).

El objetivo de pygame es introducirse de manera sencilla a la programación de juegos, no crear juegos de máximo rendimiento de próxima generación. Si no estás desarrollando algo muy complejo y tienes poco rendimiento, es momento de checar porque probablemente el problema sea tu código.

Adri escribió:Bueno aprovecho también para preguntar una cosilla: he visto por ahí que muchas aplicaciones usan sdl para todo menos para los gráficos que usan opengl. ¿por qué?

Con OpenGL se tiene acceso completo al hardware especializado para gráficos (aceleración), mientras que con SDL no.
La imaginación es el límite.
Visita mi blog en inglés o en español.
Geo
 
Mensajes: 244
Registrado: Jue Ago 10, 2006 3:51 am
Ubicación: México


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron