hacer streaming de un tilemap

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

hacer streaming de un tilemap

Notapor baigos » Mar Jul 02, 2013 1:44 am

Estoy tratando de que me salga alguna idea para ahorrar memoria al cargar un tilemap graaaaandeee. Hasta ahora tengo 2 ideas:
- la primera, hacer una especie de ventana que precargue un area, y cuando hay un desplazamiento cargue de nuevo. Pero esa ventana es lo suficientemente grande como para que al desplazar minimize la cantidad de lecturas.
- la segunda, dividir en 9 secciones de tilemaps no muy grandes (un poco más grande que la pantalla), almacenados en listas. La camara siempre se situa en el tilemap del medio. Si hay desplazamiento hacia un tilemap, ese se convierte en el medio, y se vuelve a organizar la estructura de la misma manera que en el principio, pero cargando de nuevo solo aquellas areas que faltan, en la lista como tilemaps.
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am

Re: hacer streaming de un tilemap

Notapor baigos » Vie Jul 05, 2013 1:17 am

Despues de pensar encontré una forma simple y muy boluda:
- guardar el tilemap en una lista de listas (una lista 2d) o en una lista de una dimensión y calcular la posición en x e y. De esa manera elimino una fila arriba o abajo o una columna a izquierda o derecha para volver a leer del archivo.
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am

Re: hacer streaming de un tilemap

Notapor shackra » Vie Jul 12, 2013 5:41 pm

Esto es una tecnica algo dificil, pero hay que cogerle su toque. Veras, no importa que tan grande sea un mapa, a ti solo te interesa mostrar o dibujar en la pantalla aquello que el usuario puede ver. Cuando dibujas más de lo que el usuario puede ver a la vez, tienes problemas de rendimiento. Puedes leer la información del mapa y tenerla en memoria, porqué es más liviana que dibujar pixeles.

Creo que con eso en mente, puedes comenzar a hacerte una idea...
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Re: hacer streaming de un tilemap

Notapor baigos » Sab Jul 20, 2013 5:20 pm

Estoy progresando con mi idea. Lo que hice hasta ahora es guardar unas cuantas variables:
-cantidad de tiles horizontales totales del mapa
-cantidad de tiles verticales totales del mapa
-posicion en x e y de donde quiero empezar a leer en el mapa
-ancho y alto de la porción que quiero guardar en el mapa
El mapa es un mapa binario, que recorro con fread y fseek. Hago un cálculo de la posición convirtiendo x e y en una posición en el array de 1 dimensión. La fórmula es (y * numero de tiles en x) + x.
Esa porción la almaceno en una lista simple.
La idea es que ese area que defino para leer del mapa tenga siempre el mismo tamaño. Pero si yo me muevo para arriba, elimine una fila de abajo y cargue una fila arriba. Si me muevo para abajo, elimina una fila arriba y carga una fila abajo. Si me muevo a la izquierda, elimino una fila a derecha y cargue una fila a izquierda. Si me muevo a derecha, elimino una fila a izquierda y cargo una fila a derecha.
La idea es utilizar esto para mapas muy grandes, no tiene que ver con el dibujado. Para el dibujado utilizo una cámara que dibuja una porción un poco más grande que el tamaño de la pantalla.
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am

Re: hacer streaming de un tilemap

Notapor shackra » Sab Jul 20, 2013 10:39 pm

Con tu descripción me parece que vas bien. Lo que me tiene en tela de duda es que leas cada vez el mapa desde un archivo. Ten en mente que leer datos desde el disco duro puede ser muchísimo más lento que leer desde la memoria.

También considera soportar mapas del formato que genera Tiled, esta herramienta libre te resultara útil cuando diseñes tus escenarios/mapas/niveles.
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Re: hacer streaming de un tilemap

Notapor baigos » Dom Jul 21, 2013 5:13 am

esto estoy haciendo porque un tilemap muy grande puede consumir mucha ram, por eso hago este intento de streaming. Va dirigido más que nada a plataformas con poca ram. De otra manera, si no tuviera problemas con la cantidad de ram, cargar el archivo completo en un array sería la solución mas sencilla y funcional.
Mi idea es minimizar la cantidad de lecturas a disco, por eso uso una lista en vez de un array. Ahora es cuestión de seguir probando nomas.
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am


Volver a General

¿Quién está conectado?

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