Cuestion de rendimiento en mi RPG

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

Cuestion de rendimiento en mi RPG

Notapor Aborgna » Jue Jul 28, 2011 5:38 am

Buenas, llevo un tiempo leyendo el foro y respondi algunas consultas de otras personas, pero ahora me toca preguntar a mi. :D

Estoy programando un RPG isometrico con pygame, es la segunda cosa que programo (la anterior fue un tetris :)) asi que esperaba tener algunos problemas de rendimiento por como armaba las cosas, en la parte del menu que cree hay unos 60 cuadros por segundo por mas que saque el limite a la funcion clock.tick, pero el tema es que al agregar la parte que imprime el mapa de fondo los fps bajaron hasta 20, por mas que solo se imprime la parte que se muestra en pantalla.

Queria saber si tienen algun consejo de como optimizar la impresion, el codigo de mi proyecto esta en http://code.google.com/p/lavo-rpg/ o http://www.mediafire.com/?dddba83fisuqzbs por si lo quieren ver (con f8 te muestra los fps).
Avatar de Usuario
Aborgna
 
Mensajes: 11
Registrado: Lun May 23, 2011 4:08 pm
Ubicación: Buenos Aires, Argentina

Re: Cuestion de rendimiento en mi RPG

Notapor Aborgna » Jue Jul 28, 2011 9:51 pm

Recien logre aumentarle bastante los fps haciendo que cada mapa cuando se crea genere una imagen con todos los tiles impresos, y a esa imagen le puse transparencia por colorkey y el flag pygame.RLEACCEL, los fps aumentaron a 130 :D
Avatar de Usuario
Aborgna
 
Mensajes: 11
Registrado: Lun May 23, 2011 4:08 pm
Ubicación: Buenos Aires, Argentina

Re: Cuestion de rendimiento en mi RPG

Notapor Juanxo » Vie Jul 29, 2011 10:48 pm

buenas aborgna:

me alegro de que haya mejorado tu rendimiento, pero debes tener en cuenta una cosa:
- Al crear una imagen del tamaño de todo el mapa estás consumiendo recursos a lo bestia de manera innecesaria, lo que podría dejar con muy poca memoria a las gráficas menos potentes. Lo que hacía yo era dibujar solo los tiles que eran visibles en ese frame, lo que reducía en gran medida el número
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Cuestion de rendimiento en mi RPG

Notapor Aborgna » Sab Jul 30, 2011 6:38 pm

Creo que no explique bien lo que estoy haciendo.

El mapa general lo dividí en varios "submapas" de 32x32 casillas (que se escala para tener el mismo alto que la pantalla) el cual edito con el TME y los guardo como "+000+000.tmx", "+001-003.tmx", "+008+004.tmx", etc. (serian las coordenadas "x" e "y" en el mapa grande).
Tengo una clase que gestiona esos submapas y que en cada ciclo, dependiendo de la posicion del jugador, crea una lista con las coordenadas de los submapas que aparecen en pantalla. Esa lista la compara con un diccionario que tiene como claves las coordenadas y como valores un objeto de clase "mapa", borra los objetos sobrantes y crea los faltantes.

Cuando se crea un objeto "mapa", este lee el archivo que le corresponde segun sus coordenadas e imprime los tiles correspondientes en una imagen grande que tiene [alto de la pantalla]*2 x [alto de la pantalla] y esta es la imagen que imprime cuando llame a la funcion "imprimir" de cada objeto "mapa".

Lo hice así para poder extender el mapa infinitamente para cualquier lado sin necesidad de tocar el codigo, lo que si tiene de malo es que imprime la parte de los submapas que no entra en pantalla, pero resultó ser mas eficiente que imprimir los tiles visibles de cada submapa.


PD.: Parece que no está andando el RSS, desde el 28 que no me aparece ningun mensaje nuevo.
Avatar de Usuario
Aborgna
 
Mensajes: 11
Registrado: Lun May 23, 2011 4:08 pm
Ubicación: Buenos Aires, Argentina


Volver a General

¿Quién está conectado?

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

cron