Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Empezando.... SDL: Dudas sobre graficos, tiles y sprites.

Iniciado por sexus6, 21 de Octubre de 2009, 11:18:38 AM

« anterior - próximo »

sexus6

Bueno ya he empezado con mi proyectito. He optado por SDL.

Como aún es muy vago y no tiene nada por ahora, mi idea  es implementar una pantalla de prueba de juego plataformas . Muñequito, un escenario, algunos objetos que interactuar y la física (:S esto lo dejaré para el final).

Pero tengo unas cuantas dudas para empezar:

- Los mapas tiles, porque se usan en forma de tiles? Para gestionar mejor la memoria? para poder hacer scroll? Porque no se usa una sola imagen grande?.(seguro que estoy preguntando una barbaridad). Aparte he visto programas para generar estos mapas de tiles.... el resultado de estos programas son la imagen grande? o te generan algun tipo de estructura de datos (no se, una matriz por ejemplo) para por código montarlo?.

- En principio los sprites y tiles que poseo son muy pequeños. Pero tengo que usar esos (no me pregunteis porque), y son para montar pantallas de 320x200. Se que es una resolucion pequeña, pero es que esto va camino de hacer un remake de un jueguecillo antiguo, y quiero aprovechar su material gráfico. He visto el codigo de un proyecto similar, que lo tiene programado en esa resolución, pero hace una especie de zoom para aumentarlo todo. Lo que ocurre es que el código esta bastante críptico y no acabo de entender como lo hace. Alguna orientación al respecto?

- Más o menos he visto ejemplos del flow de jueguecillos, y de algunos tutoriales. En estos básicamente se va moviendo los elementos (surfaces) según los eventos, etc, etc y luego se pintan. Me gustaría saber de que forma almacenais esos surfaces para posteriormente ser pintados... algun tipo de estructura de pilas o colas para luego pintarlo todo automaticamente? No se, si me podeis dar alguna idea, guai.

Más o menos esas son mis dudas ahora que he empezado.

Muchas gracias por vuestra atención.

[EX3]

Cita de: sexus6 en 21 de Octubre de 2009, 11:18:38 AM
Como aún es muy vago y no tiene nada por ahora, mi idea  es implementar una pantalla de prueba de juego plataformas . Muñequito, un escenario, algunos objetos que interactuar y la física (:S esto lo dejaré para el final).
Hombre, yo estoy haciendo un plataformas y justamente esta vez he preferido empezar por la fisica en vez de los graficos ya que los graficos al final resulta, para mi al menos, lo mas facil. Es que a mi la fisica se me da como el culo y en un plataformas lo veo mas importante que los propios sprites :P Por eso me puse a trabajar un sistema sencillo y haciendo pruebas con simples cuadrados y rectangulos, pero vamos, define tu prioridad a lo que te interese mas aprender en este momento ;)

Cita de: sexus6 en 21 de Octubre de 2009, 11:18:38 AM
- Los mapas tiles, porque se usan en forma de tiles? Para gestionar mejor la memoria? para poder hacer scroll? Porque no se usa una sola imagen grande?.(seguro que estoy preguntando una barbaridad). Aparte he visto programas para generar estos mapas de tiles.... el resultado de estos programas son la imagen grande? o te generan algun tipo de estructura de datos (no se, una matriz por ejemplo) para por código montarlo?.
SDL a pelo si no recuerdo mal trabaja por software y no contra la grafica, por ende dos cosas: podras hacer imagenes tan grandes como la memoria te permita y, 2, tendras menos rendimiento por lo que mover imagenes tremendamente grades te sera un suplicio. Las ventajas de un sistema de tiles son varias. Una de las mas importantes es que con 4 imagenes puedes armar un mosaico tan grande como quieras e incluso animar tiles para hacer elementos dinamicos, cosa que con una imagen grande no podrias hacer. La otra es que solo estarias trabajando el area visible de la pantalla y no todo el mapa al mismo tiempo. No es lo mismo dibujar 20 tiles que 3000 por ponerte un ejemplo. Que es mas coñazo mover un mapa de tiles que una sola imagen? Pues quizas si, pero en principio seria tan facil como tener una coordenada base que luego usas para desplazar todo el conjunto de tiles.

Cita de: sexus6 en 21 de Octubre de 2009, 11:18:38 AM
- En principio los sprites y tiles que poseo son muy pequeños. Pero tengo que usar esos (no me pregunteis porque), y son para montar pantallas de 320x200. Se que es una resolucion pequeña, pero es que esto va camino de hacer un remake de un jueguecillo antiguo, y quiero aprovechar su material gráfico. He visto el codigo de un proyecto similar, que lo tiene programado en esa resolución, pero hace una especie de zoom para aumentarlo todo. Lo que ocurre es que el código esta bastante críptico y no acabo de entender como lo hace. Alguna orientación al respecto?
Hombre, uando una API acelerada por hardware (que funcione contra la grafica) puedes hacer agrupaciones de tiles a los que aplicar transformaciones mediante matrices, esto es que puedes coger e implementar tu sistema para 320x200 y despues aplicarle simplemente un zoom scalando los sprites y transformando sus coordenadas acorde a la escala para que encaje a 800x480 por ejemplo, rotar el conjunto o desplazarlo o todo a la vez. Hacerlo a pelo puede ser o no muy pesado en cuanto a rendimiento pero puede hacerse perfectamente por sofware, lo que no se si SDL facilita esto nativamente o con alguna libreria de terceros.

Cita de: sexus6 en 21 de Octubre de 2009, 11:18:38 AM
- Más o menos he visto ejemplos del flow de jueguecillos, y de algunos tutoriales. En estos básicamente se va moviendo los elementos (surfaces) según los eventos, etc, etc y luego se pintan. Me gustaría saber de que forma almacenais esos surfaces para posteriormente ser pintados... algun tipo de estructura de pilas o colas para luego pintarlo todo automaticamente? No se, si me podeis dar alguna idea, guai.
Para gustos colores :P No se decirte la forma mas optima pero si te puedo decir como lo estoy haciendo yo. Yo estoy implementandolo de forma que tengo una lista o coleccion donde almaceno todos los sprites y elementos graficos de la escena y que a la hora de pintar (aplicar los efectos y dibujar los sprites en pantalla, etc...) o actualizar estados (determinar si esta en el area visible para pintar, cambiar su posicion, actualizar su animacion, etc...) recorro uno a uno (en verdad tengo una lista por nivel de profundidad, para separar por ejemplo elementos de fondo y elementos de primer plano de los elementos intermedios, pero viene a ser lo mismo, una lista donde almaceno los elementos graficos). Otros sistemas como XNA por ejemplo implementan un sistema de proceso por lotes para trabajar con sprites (un spriteBatch) donde vas agregando los sprites y que te permite aplicar efectos, shaders y matrices de transformacion en una sola pasada a todo el conjunto almacenado de forma rapida y optima, y que luego se pinta en una sola llamada. Formas hay varias pero para empezar y salvo que te sugieran algo mejor y facil de implementar supongo que una simple lista donde agregar los elementos de la escena y recorrerla para dibujarlas uno a uno te bastaria. El resto tambien es echarle imaginacion y probar ;)

Pues nada, a la espera de ver las sugerencias de los compañeros del foro :P

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Te recomiendo el siguiente post, ahí deje un link a un libro sobre SDL, en español y para iniciarse con el tema, de seguro te será de utilidad.
http://www.stratos-ad.com/forums/index.php?topic=12385.0

PD: El libro es creative commons






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.