Preguntas de rendimiento

Consulte acerca de programas, técnicas, algoritmos etc.

Preguntas de rendimiento

Notapor hechelion » Dom Abr 29, 2012 6:24 pm

Saludos a todos.

No sé si recordaran el proyecto en el cual estaba trabajando con cara a presentarlo en el concurso. un plataforma 2D llamado Dhu Nun
http://www.youtube.com/watch?v=AIIfh09skbs

Por temas que no vienen al caso, no alcancé a presentarlo para el concurso y como ahora no tengo una fecha limite, me gustaría reenfocar el proyecto y hacerlo compatible con Linux (originalmente el proyecto es para windows con DirectX) y es donde me surgen algunas dudas de novatillo.

Pensaba reprogramar el juego en python, para lo cual había pensado en pygames o incluso en pilas, pero por lo que he estado leyendo tendría problemas de rendimiento en ambos, de partida pygames no soporta aceleración por hardware y si le agrego pyOpenGL tengo el temor de complicarme innecesariamente con OpenGL, ya que por un lado no quiero programar a un nivel tan bajo y por lo que he leído hay ciertos problemas debido a las diferencias entre tarjetas de vídeo.

Pilas me parece la mejor opción, ya que permite aceleración por hardware sin tener que aprender OpenGL, pero mientras leía me di con un post que habla de un redimiendo de 6 FPS con un tilemapa de 2 layer a 40*40 tiles y eso me asustan bastante, pues el alpha de Dhu nun que sale en el vídeo tiene 10 layer de 256*64 tiles; en promedio, en pantalla en un instante dado se dibujan unos 2000 tiles y eso sin contar con la GUI del juego, las animaciones del personaje y de las criaturas más su AI y todo eso (sin optimizar, es el alpha) me da 30 FPS en un netbook (CPU atom 270, 1GB de ram) (en mi PC normal, lo puedo correr a 60 FPS) con lo cual creo que quedaré horriblemente lento si lo intento migrar a Pilas.

También pensaba en implementar el juego sobre Panda3D, pero al ser una librería 3D, pues creo que sería matar moscas a cañonazos.

Por estos motivos quería pedir vuestras opiniones, sé que Loserjuegos se centra principalmente en Pilas, pero también es una comunidad de programación de videjuegos en general y me gustaría saber que me recomiendan, ya que como comentaba, me interesa mucho que Dhu Nun se pueda jugar en Linux, pero hasta el momento no veo ninguna solución que me permita migrar el proyecto sin necesidad de invertir una gran cantidad de horas aprendiendo nuevas técnicas (como OpenGL) y aunque estoy dispuesto a invertirlas no quiero hacerlo con un lenguaje que a mitad de camino me voy a topar con que no me sirve o es horriblemente complicado.
Avatar de Usuario
hechelion
 
Mensajes: 29
Registrado: Vie Ene 13, 2012 3:06 pm
Ubicación: Houston

Re: Preguntas de rendimiento

Notapor hechelion » Lun Abr 30, 2012 4:52 am

He escuchado bastante sobre SDL y he visto algunas cosas bien interesantes que han hecho con SDL, pero si no estoy mal se programa desde C++ y para meter aceleración por hardware también hay que meterse a estudiar OpenGL o ¿estoy mal?.
Además, creo que no es tan fácil hacerlo multiplataforma o ¿cómo va la mano por ese lado?
Avatar de Usuario
hechelion
 
Mensajes: 29
Registrado: Vie Ene 13, 2012 3:06 pm
Ubicación: Houston

Re: Preguntas de rendimiento

Notapor kaiser » Lun Abr 30, 2012 9:35 am

Hola hechelion, me gusta mucho tu proyecto tiene muy buena pinta. A ver si finalmente te animas a portarlo a Linux. Sinceramente pienso que dibujar 2000 tiles en pantalla es tremendamente ineficiente tal vez deberías darle prioridad a encontrar una forma mejor de hacerlo. En cualquier caso mientras eso siga así no te recomiendo usar python, a mi en un Core 2 Duo a 2.2GHz menos de 3000 sprites en pantalla ya me consumían el 100% del procesador, tal vez deberías probar otros lenguajes más rápidos como C.

En cuanto a que librería usar bueno, pilas es una librería de alto nivel construida sobre un lenguaje de muy alto nivel (python), está muy bien para crear juegos rápidamente pero no creo que sea lo mejor si buscas la máxima eficiencia. pygame es la versión (más técnicamente binding o wrap) para python de SDL, son lo mismo solo que SDL se escribe en C/C++ y pygame en python. SFML es una librería muy parecida a SDL pero implementa aceleración por hardware, la versión para python se llama pySFML.

Espero haberte ayudado.

Un saludo!
De la API al IDE y del IDE a la API.
Avatar de Usuario
kaiser
 
Mensajes: 121
Registrado: Mié Nov 24, 2010 7:47 pm
Ubicación: Madrid (España)

Re: Preguntas de rendimiento

Notapor hechelion » Lun Abr 30, 2012 8:54 pm

Gracias Kaiser.

Lo del rendimiento lo tengo claro, a lo que iba un poco es que sé que en windows con directX puede llegar a eso y mantener el juego jugable a 30FPS, por lo cual, esperaría tener el mismo rendimiento en Linux o por lo menos similar y es un poco lo que estoy buscando, no tanto para poder dibujar 2000 tiles al mismo tiempo, si no, por que me queda la seguridad que (mejorando el diseño del nivel) aún tengo capacidad para meter partículas y otras cosas que mejoren el juego gráficamente.

Tal como dices, creo que tendré que irme a C o C++, en este momento le he puesto los ojos a una librería llamada CMR32pro que funciona como wrapper para SDL y OpenGL aunque igual le voy a dar una mirada a SMFL y ver como anda con python ya que por mi experiencia personal prefiero trabajar con python (tengo más experiencia con python que con c++, así que me sería más fácil desarrollar en el primero).

Gracias por la recomendación.
Avatar de Usuario
hechelion
 
Mensajes: 29
Registrado: Vie Ene 13, 2012 3:06 pm
Ubicación: Houston

Re: Preguntas de rendimiento

Notapor shackra » Jue Sep 13, 2012 5:42 am

Primero que nada, creo que portaras el juego al sistema operativo GNU/Linux, ya que no creo que el kernel Linux pueda hacer algo con algo que no sea un modulo.

Segundo, hay mil kilometros de diferencia entre 2000~ titles y 2000~ sprites, de que puedes dibujar 2000~ titles en Python con pygame o PySFML puedes hacerlo, pero debes manejar la tecnica de screen scrolling para recortar el mapa de 2000 rectangulos que dibujaste al tamaño de la pantalla del jugador o la memoria de la computadora del mismo terminara explotando.

Sí en todo caso quieres usar OpenGL, puedes darte una vuelta y mirar Pyglet o Cocos2D...
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Re: Preguntas de rendimiento

Notapor orenji » Jue Sep 13, 2012 9:33 pm

hechelion escribió:Gracias Kaiser.

Lo del rendimiento lo tengo claro, a lo que iba un poco es que sé que en windows con directX puede llegar a eso y mantener el juego jugable a 30FPS, por lo cual, esperaría tener el mismo rendimiento en Linux o por lo menos similar y es un poco lo que estoy buscando, no tanto para poder dibujar 2000 tiles al mismo tiempo, si no, por que me queda la seguridad que (mejorando el diseño del nivel) aún tengo capacidad para meter partículas y otras cosas que mejoren el juego gráficamente.

Tal como dices, creo que tendré que irme a C o C++, en este momento le he puesto los ojos a una librería llamada CMR32pro que funciona como wrapper para SDL y OpenGL aunque igual le voy a dar una mirada a SMFL y ver como anda con python ya que por mi experiencia personal prefiero trabajar con python (tengo más experiencia con python que con c++, así que me sería más fácil desarrollar en el primero).

Gracias por la recomendación.


Saludos hechelion


Antes que nada quiero decirte que me gusta el arte/diseño 3d de tu personaje, así que bien por ti :D .

Otra cosa que te quería mencionar es que no soy un experto en programación, solo se lo básico pero intentare dar lo mejor, si me equivoco en algo soy todo oidos. ahi vamos.

Según tengo entendido los tiles son pedacitos de gráficos que juntos forman una imagen. Si no equivoco esto era para ahorrar memoria. Ahora bien no tengo idea cuantos tiles usara un juego moderno en 2d comercial para tener idea mas o menos de un promedio normal de tiles usados en los juegos, esos que vienen para las consolas.

Quizás a ti te convenga usar menos tiles, si es posible, y usar una imagen entera mas grande en aquellos lugares donde no importa si es un tile o que. De esta manera creo que podríamos ahorrar un poco de recursos de cpu. Aunque creo que aumentaría la cantidad de memoria, pero quizás el aumento no fuera tan grande, creo que es cuestión de probar.

Bueno esta fue mi humilde aportación. Saludos.
orenjigames.wordpress.com - Mi blog donde pongo mis códigos entre otras cosas.
orenji
 
Mensajes: 8
Registrado: Mar Sep 04, 2012 9:59 pm


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados