Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Halcon07 en 11 de Marzo de 2008, 12:56:32 AM

Título: Necesito ayuda con el manejo de la isometria
Publicado por: Halcon07 en 11 de Marzo de 2008, 12:56:32 AM
Hola de nuevo compañeros. 8) En esta oportunidad vengo a pedirles apoyo tecnico en cuanto al manejo de juegos en entorno isometrico, ya que de tesis de grado me he propuesto realizar un juego de esa magnitud...tal vez no es tanto como lo que espera hacer pero el tiempo me tiene colgado, lo que mas necesito de urgencia es apoyo en el manejo de colisiones, estoy manejando la libreria dx_lib32 en vb.net 2005 y pues eh conseguido hacer las colisiones cuadradas pero no me esplico como manejarlas en rombo...en diagonal...
Ayuda por favor  :x
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Prompt en 11 de Marzo de 2008, 09:22:17 AM
Tienes todo mi apoyo... si era eso lo que deseabas... xD no es broma!

Yo no se mucho de este tema, vale? pero... mientras alguien te contesta, se me ocurre lo siguiente.

Los juegos isometricos que yo estoy acostumbrado a ver, son con una malla en la pantalla cuadricular. Lo que es isometrico, esa sensación la dan los "objetos" en 2D, los tiles. Toda la lógica transcurre en 2D y con esta cuadricula.

Evidentemente es muy dificil tener una buena perspectiva, otra opción es mantener esta cuadricula y sus colisiones lógicas poniendolas en 3D y rotandolo todo, o moviendo la camara, lo pones todo en 2D con billboards si es necesario y mantienes el movimiento de la camara fijo, sin dar la posibilidad de rotarlo solo sigue al personaje.

Esto ultimo no es lo habitual. Creo... Un saludo! y animo!
Título: Necesito ayuda con el manejo de la isometria
Publicado por: [EX3] en 11 de Marzo de 2008, 11:20:45 AM
Cita de: "Prompt"Evidentemente es muy dificil tener una buena perspectiva, otra opción es mantener esta cuadricula y sus colisiones lógicas poniendolas en 3D y rotandolo todo, o moviendo la camara, lo pones todo en 2D con billboards si es necesario y mantienes el movimiento de la camara fijo, sin dar la posibilidad de rotarlo solo sigue al personaje.

Esto ultimo no es lo habitual. Creo...
Posiblemente sea lo habitual pero con dx_lib32 le va ser imposible manejar 3D me temo :lol: Mas bien creo que es lo primero. Como bien dices la perspectiva la representa la escena en pantalla pero no su logica:

(http://img398.imageshack.us/img398/590/isodx3.png)
.........Logica..........................Escena

Lo mas complejo seria en cierta manera el mover los objetos en la escena ya que tendrias que moverte tanto en x como en y para recorrer en isometrica pero la logica trabajaria en plano, lo que resultaria mas facil. Para el caso solo tendrias que ingeniartelas para hacerte una funcion que convirtiera las coordenadas logicas xy en coordenadas isometricas (no me digas como :lol:). De esta forma la perspectiva no te seria problema para calcular colisiones o mover objetos.

Aun asi date un paseo de vez en cuando por Google por que recuerdo haber visto alguna que otra web hablando sobre desarrollos de motores isometricos y supongo que trataran formas de implementar colisiones y demas historias.

Salu2...
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Buffon en 11 de Marzo de 2008, 11:21:38 AM
tal como ha dicho prompt.

Una cosa es la estructura de datos que utilizas para guardar la información y otra como la representas por pantalla.

Desde el punto de vista de un ingenierio te diría que utilizaras el diseño en tres capas, pero pensando que vas a programar un juego y hay ciertas reglas o restricciones que te vas a tener que saltar.

http://es.wikipedia.org/wiki/Arquitectura_de_tres_niveles

desde el punto de vista de un juego, la presentación es lo que muestras a los usuarios, negocio sería donde realizas todas las comprobaciones IA, COLISIONES, movimiento etc, base de datos se encargaría de guardar puntuaciones y otras cosas que requieran de guardar información de forma física.

para entendernos, cada una de las tres capas tiene un ENORME controlador que precisamente controla todas sus clases, y la única forma que hay de acceder a información de otra capa es mediante ese controlador.
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Buffon en 11 de Marzo de 2008, 11:31:43 AM
Cita de: "[EX3"]
Cita de: "Prompt"Evidentemente es muy dificil tener una buena perspectiva, otra opción es mantener esta cuadricula y sus colisiones lógicas poniendolas en 3D y rotandolo todo, o moviendo la camara, lo pones todo en 2D con billboards si es necesario y mantienes el movimiento de la camara fijo, sin dar la posibilidad de rotarlo solo sigue al personaje.

Esto ultimo no es lo habitual. Creo...
Posiblemente sea lo habitual pero con dx_lib32 le va ser imposible manejar 3D me temo :lol: Mas bien creo que es lo primero. Como bien dices la perspectiva la representa la escena en pantalla pero no su logica:

(http://img398.imageshack.us/img398/590/isodx3.png)
.........Logica..........................Escena

Lo mas complejo seria en cierta manera el mover los objetos en la escena ya que tendrias que moverte tanto en x como en y para recorrer en isometrica pero la logica trabajaria en plano, lo que resultaria mas facil. Para el caso solo tendrias que ingeniartelas para hacerte una funcion que convirtiera las coordenadas logicas xy en coordenadas isometricas (no me digas como :lol:). De esta forma la perspectiva no te seria problema para calcular colisiones o mover objetos.

Aun asi date un paseo de vez en cuando por Google por que recuerdo haber visto alguna que otra web hablando sobre desarrollos de motores isometricos y supongo que trataran formas de implementar colisiones y demas historias.

Salu2...

te puedes crear una matriz de posición respetando el angulo de perspectiva.

vaya frase he soltado xD
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Sante en 11 de Marzo de 2008, 08:04:51 PM
En su día publiqué una serie de tutoriales sobre programación isométrica que a lo mejor te pueden servir de algo, no son muy avanzados, pero bueno: http://www.wired-weasel.com/users/serhid/blog/?page_id=4

En cuanto a colisiones, yo separaría toda la lógica del juego (que seguiría usando el mapa cuadrado dividido en casillas) de su representación isométrica. Las colisiones las podrías hacer en base a casillas, o en base al "área" que ocupe cada objeto o personaje en el plano 2D. Aunque como en todo, dependiendo de lo que busques tienes muchas opciones más simples o más complejas.

Un saludo.
Título: Necesito ayuda con el manejo de la isometria
Publicado por: davirro en 11 de Marzo de 2008, 08:17:13 PM
Hace un tiempo hice un sencillo codigo de ejemplo sobre un mapa isometrico pero hecho en Blitz3D y ayudado por los tutoriales de Sante.
El mapa lo trataba en 2D pero a la hora de dibujar traducia los datos a isometrico con un algoritmo.
Si quieres puedes verlo aqui

http://balearinnova.com/gamedevelopers/viewtopic.php?f=28&t=65
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Halcon07 en 12 de Marzo de 2008, 01:28:04 AM
Muchas gracias a todos por el apoyo, espero pueda comprender todo y manejarlo en lo que necesito, ojala la libreria de vb me lo permita, que confio en que si :lol: o si alguien tubiera algun ejemplito manejado alli seria de aun mas ayuda gracias... :P
Título: Necesito ayuda con el manejo de la isometria
Publicado por: Halcon07 en 12 de Marzo de 2008, 01:28:22 AM
Muchas gracias a todos por el apoyo, espero pueda comprender todo y manejarlo en lo que necesito, ojala la libreria de vb me lo permita, que confio en que si :lol: o si alguien tubiera algun ejemplito manejado alli seria de aun mas ayuda gracias... :P
Título: Necesito ayuda con el manejo de la isometria
Publicado por: [EX3] en 12 de Marzo de 2008, 10:42:30 AM
Cita de: "Halcon07"ojala la libreria de vb me lo permita, que confio en que si :lol:
Para la logica, de dx_lib32 solo necesitaras la funcion de interseccion de cajas para calcular colisiones, para lo grafico tienes la funcion de dibujo avanzada que transforma un grafico a proyeccion caballera e isometrica (un ahorro para el asunto de hacerte graficos si no tienes grafista a mano). Por lo demas simplemente tendras que traducir el algorritmo de conversion de coordenadas que mencionan arriba de C++ a VB6.0.

Salu2...