Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Uso De Tiles Para Aventura Gráfica?

Iniciado por SiPoX, 20 de Diciembre de 2005, 10:41:38 AM

« anterior - próximo »

SiPoX

 Buenas!

Metido ya en materia.. y dando vueltas a las estructuras de datos necesarias y demás.. me surge una dudilla. :) Bien.. supongamos que tengo un escenario (imagen de fondo) sobre la que se superpondrán e interactuarán los personajes y objetos. Para mover esos personajes.. de algún modo habrá ke indicarle las posiciones x e y de destino... eso está claro... pero.. sería necesario dividir ese fondo en tiles o simplemente jugar con las coordenadas de cada objeto? Por un lado pienso en el volumen del objeto.. y entonces sí veo necesarios tiles para que quede definido el área de click de cada objeto.. y también para mover el fondo a un lado u otro si no cabe todo en pantalla según el movimiento del personaje... pero.. por otra parte.. igual no es el mejor modo de hacerlo.. estuve practicando con un matamarcianos... de ahí que lo único que se me ocurra es hacerlo también con tiling.. pero supongo que habrá otro modo mejor.. alguna idea? cómo se suele
hacer?

Los gráficos son en 2D, tipo aventura gráfica. ;) :)
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

TheAzazel

 Para una aventura grafica que tengo por ahi medio disenada (otro proyecto mas que alguna dia vera la luz), el control de objetos, posiciones y demas lo llevaba con un mapa de durezas, asi el control es absoluto y puedes idear un sistema para que se genere automaticamente... o al menos semi. Digamos que pondrias de un color por donde puedes andar(blanco) y de otro color por donde no puedes andar(negro), y luego cada objeto, le asocias un ID que sea el valor RGB que tiene en el mapa de durezas. Asi de un plumazo, puedes interactuar con ese objeto pixel a pixel y saber rapidamente cual es.

Espero que te sirva de ayuda :P

Saludos

[Vil]

 Si no me equivoco, sipox pregunta por como andar a unas coordenadas x a y dentro de un mapa de durezas y como esquivar (busqueda de caminos) a objetos... Pues puedes o dividir en tiles o hacerlo por nodos. Por nodos es mas comodo (y casi todas las aventuas lo hacen asi, por ejemplo las de Lucas) porque controlas mas a las posiciones a las q se puede llegar. Por tiles tienes tambien aventuras como los gobblins, q tambien queda muy bien, pero el escenario queda mas "cuadriculado" o más isometrico o como sea. Yo en mi aventura uso tiles, pero es en 3d... creo q para 2d mejor con nodos.
De como programar esa busqueda de caminos... lo siento pero solo se para tiles, y con el algoritmo Made In Vil... asi q no te sabria ayudar mas

senior wapo

 La verdad es que en aventuras gráficas se suele usar una sola imagen de fondo prerenderizada o escaneada y retocada.

A la hora de dibujar el personaje, las partes que están tapadas no se dibujan. Esto lo detectas a parte con mapas de durezas, zbuffers o mascaras a las que se les ha practicado una conversión a scanlines (una especie de s-buffer).

En cuanto a las colisiones y busquedas de caminos en una aventura gráfica leete mis respuestas en este hilo antiguo:

Pathfinding+colisiones en Aventuras Gráficas (Lucasarts/Sierra)

SiPoX

 Hum.... gracias! pero todavía tengo algunas dudillas al respecto... en la filosofía a seguir..

Por un lado... sobre el mapa de durezas... si asigno un id con el color rgb que tiene ese objeto.. un mismo objeto solo podrá tener un color, no? O tratarlo como dos objetos diferentes en el mapa, pero como uno lógico, a la hora de interactuar con él?.  Supongo que la idea es que al pinchar... obtenga el rgb del pixel, compare con ese mapa de durezas presente en una estructura o similar y en base a eso actue de una forma u otra según de lo que se trate... cierto? :)

Más o menos me hago una idea... pero dónde puedo encontrar info sobre ello? He buscado por google.. pero nada demasiado relevante para afianzar el concepto. ;) :)

La idea inicial era dividir el fondo en tiles.. teniendo por debajo un matriz... en la que guardaría la info lógica sobre lo que se ve en pantalla. Vil, podrías indicar a qué te refieres con nodos?

senior wapo, el mapeado que explicas en el otro topic, se hace mediante diseño o se implementa mediante programación? Quiero decir que si la imagen está de alguna forma con esos polígonos o es a través de código como se mapea de forma lógica según los pixels del dibujo.

"A la hora de dibujar el personaje, las partes que están tapadas no se dibujan." En ese problema también había pensado.. si algún objeto del fondo tiene que quedar por delante de algún personaje... :S

pd.- miraré por los enlaces dados en el otro post... en busca de documentación. ;) :) Graciaaas!
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

[Vil]

 A ver, por partes.

Lo que digo de los nodos, es lo que explica seniorwapo en su post. Debes de hacerte un pequeño editor en el que creas los nodos, y te los exporte a un archivo (creo q es lo q menos problemas te dara a la larga). Un programita q te cargue la imagen y vayas poniendo nodos y uniendo nodos. Puede ocuparte algo de tiempo, pero a la larga te puede servir para colocar objetos, definir el tamaño del personaje en cada nodo, etc... El como hacer la busqueda de caminos para ir de nodo a nodo... eso ya mira en el post de seriorwapo, q yo no tengo ni idea.

Sobre reconocer el "area" de un objeto para hacer click encima. Puedes hacerlo por mapas de durezas (hay mas posibilidades, y no toy convencido de q esta sea la mejor...) q te aconsejo sea distinto del mapa de "por donde se puede andar". Tendrias un mapa que dice por donde se puede andar, y otro distinto para reconocer los objetos (este ultimo no se yo si serviria para todo, ahora te comento).

El mapa con el que "reconoces" objetos, el problema seria cuando tengas un objeto detras de otro, y cojas el primero. Ejemplo: cofre q dentro tiene algo. Seleccionas el cofre, lo abres y el objeto cofre deja de existir, pero dentro tiene un "medallon" q es mas pequeño pero estaba detrás del area del cofre. Por ello te aconsejo q para detectar objetos, o te lo montes por zonas rectangulares (cada objeto con 2 coordenadas, las esquinas de esa zona) o que detectes la "colision" del cursor con una imagen del objeto super puesta

se q lo toy liando... mi capacidad explicativa merma cuando llevas 4 horas estudiando bioquimica, pero sigo intentandolo:

Mi consejo para no complicar: cada objeto tiene definida un area cuadrada con x1,y1 x2,y2 (q detectas facilmente si el cursor esta dentro sabiendo si la coordenada x del cursor es >x1 and Cada objeto puede estar "activo/presente" o no. Si no lo esta, por mucho q estes en su area, nada de nada.

Asi en el ejemplo del cofre y el medallon:

tenemos el cofre con un area, y el medallon con otra (q se "verian" como rectangulos uno dentro de otro).
Primero el cofre esta "activado" y medallon "desactivado" luego solo detectas al cofre con el cursor. Cuando lo abres, desactivas cofre, activas medallon y ya solo se puede seleccionar medallon. No se si me explico...


El tema de objetos q estan "delante" y "detrás". Eso se soluciona normalmente con mapas de durezas. Es decir, q tu mapa de durezas no va aser blanco y negro.
En el caso de que negro sea NO puedes pasar y blanco SI, lo modificaria a negro NO puedes pasar y cualquier otro color SI puedes pasar.

Ahora, si tu tienes una mesa, en la parte q se puede andar detras de la mesa (te taparia) pondria otro color que no fuera blanco. De esta forma detectaria si el personaje pasa por ese colorRGB y pondria la imagen mesa con una Z diferente para q se viera por delante del personaje. Si no estas en ese colorRGB esta en la Z normal, q el personaje pasa por delante...

Se q me podria currar imagenes chulas explicativas (he hecho ya unas cuantas de aventuras 2D sin usar ningun "creador de aventuras") pero no tengo tiempo... asi q intenta entender esto, postea dudas, y esta tarde o mañana cuando tenga tiempo... pienso un poco como explicar esto en vez de escribir a lo loco y te pongo imagenes.

SiPoX

 Ya estoy haciendo pruebecillas.. a ver si este finde sigo con ellas... ;) :)

Creo que he pillado todo menos

CitarDebes de hacerte un pequeño editor en el que creas los nodos, y te los exporte a un archivo (creo q es lo q menos problemas te dara a la larga). Un programita q te cargue la imagen y vayas poniendo nodos y uniendo nodos.

Saludos! ;) :)
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)

tamat

 Pues se refiere a que dado que su solución (la de los nodos) requiere que a cada fondo del juego se le asocie una estructura de datos especial que contiene información sobre por donde puede caminar, como de grande se vería el personaje al pasar por ese punto y demás, pues necesitaras poder editarla de alguna manera.

La manera guarra sería a pelo, escribiendo por cada imagen la información en un archivo de texto "a ojo", poniendo las coordenadas de cada punto del nodo (o grafo si así lo entiendes mejor), peor sería ponerlo todo directamente en el código.

Lo que él recomienda es que te hagas un programa especial que sea un editor de fondos de tu juego, el programa carga tu imagen, la pone de fondo y tu vas poniendo nodos y uniendolos, al acabar cuando le das a guardar debería generarte un archivo en el disco duro que sugiero tenga el mismo nombre que la imagen pero con alguna extensión como TXT o XML o INF, y dentro toda la información introducida.

Así si más adelante quieres cambiar algo de un fondo pues ejecutas tu mini-editor, cambias los nodos y vuelves a guardar.
Por un stratos menos tenso

SiPoX

 Ahm... okis.. ahora sí... je,je,je.. ;) :) Gracias!
gamevelop: punto de encuentro para la industria del videojuego

Eduardo Millán: mi perfil ;)






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.