Como construir motor estrategia ???? help me ^^

Holal, estoy haciendo un juego de estrategia / rol, en tiempo real, y la idea era hacerlo en isometrico, pero estoy teniendo demasiados problemas... a ver si alguien tienen una genial idea o sabe como se hace...

El tablero de un juego, como el del Ages of empires 1, es en isometrica, esto son simplemente cuadrados medio de lados, lo qeu serian "diamantes" en castellano... bueno, lo que pretendia hacer era dividir la pantalla en diamantes, por ejemplo 100 x 100 de 8x8pixeles, y guardar los datos de cada uno en una matriz... cuando me pongo en cualquier zona del diamante, el cursor deveria ponerse en un pixel del medio, y si cambio de diamanet, el cursor, deveria saltar directamente al otro pixel del medio... tengo implementado esto a lo burro, y es tan lento que no es jugable... si alguien sabe como puedo hacer para distribuir "diamantes" pro la pantalla y que al pinchar se seleccionen, que me ayude porfavor si no, continuare provando cosas que se me ocurren.... >_<

gracias
preparalo como si fuera normal, sin isometricas ni nada y luego haces el motor que lo renderize en isometrico

el mapa seria una array multidimensional:

mapa[100][100]

oooooooooo
oooooooooo
oooooooooo
oooooooooo
oooooooooo
oooooooooo
oooo1ooo1o
oooo2ooooo
oooooo333o
oooooooooo

1=torres
2=castillo
3=casas


algo asi es lo k digo, luego con el motor que lo dibuje en isometrica ^^
Una cosa que poca gente se plantea a la hora de hacer juegos isometricos es usar 3D. Tu puedes hacer todo el suelo sobre cuadrados planos y luego rotas la cámara y tendrías exactamente el mismo efecto. A parte que ganarías un montón de efectos como zooms y rotaciones
estoy de acuerdo con webez.

Una vez aprendes un poco de 3D, ya no vuelves a las 2D.

Sobretodo si eres un patata de grafista como yo.

xD
jandujar escribió:estoy de acuerdo con webez.

Una vez aprendes un poco de 3D, ya no vuelves a las 2D.

Sobretodo si eres un patata de grafista como yo.

xD


Idem :)
Tienes 2 opciones principalmente. Una de ellas es usar 3D como te comentan por aqui arriba. La otra es usar un modo de tiles 2D, rotar el plano 45º y jugando con la interrupcion de HBLANK 'tumbar' el plano para que de el efecto de la perspectiva. De todas formas de ambas maneras el resultado va a ser posiblemente un poco feo, ya que quedara bastante deformado el grafico y en algo tan pequeño como 8x8 se notara mucho. Yo optaria por usar un modo de tiles 2D sin mas historias y hacer los graficos en isometrico, si te lo montas bien no se va a notar la diferencia y es mucho mas sencillo.
Gracias a todos/as, la idea es hacerlo en 2d, hacer los graficos en isometrico, lo unico que no tengo muy claro, porque lo que hago ahora, consume demasiados recursos, y es muy muy muy lento (tanto que falla muchisimas veces...) no me sirve, mi problema es que no se muy bien como seleccionar un determinado tile, o sea, yo hago los mapas con un programa externo para crear mapas de tiles (8x8), despues lo cargo enterop en la ds, pero para seleccionar un tile en cooncreto, me he montado una historia muy chunga, si alguien sabe como deveria montarmelo, o si ya hay algun ejemplo por ahi... seria de agradecer ;)
Haciendolo todo por hardware deberia ser bastante rapido. Si quieres explica un poco como lo has hecho y copia algo de codigo a ver si hay una solucion mas rapida.
por hardware???

yo me he monmtado una matriz de 640000 elementos, y cada x e y de la matriz, son la x e y del pixel en que pinchamos, despues, miramos el dato que hay en esa posicion en la matriz, y asi obtengo por ejemplo un 8 que significa que ese es el tile 8. asi, todos los pixeles que envuelven al pixel central del tile, los cambio por ese pixel central para que al seleccionar cualquier pixel del tile, en realidad siempre seleccione el del medio. (est es lo lento y lo que me parece qu eocupa demasiada memoria...)

despues, ya teniendo que tile es, tengo una lista de tiles, y en cada dato de un elemento, tengo algo de informacion de lo que hay en ese tile...


por cierto, el mapa que hago es de 100x100 (me refiero a 100 tiles de 8x8) en total :10000 tiles lo cual a la hora de hacer mapas nuevos, es un engorro, porque me toca ir apuntando en cada posicion de la lista de tiles que me creo que he puesto en el editor externo que uso paa crear el mapa.
ALA!!!!
que salvaje!!!

una matriz de 640000 elementos.

No me estraña que te vaya lento.

Yo lo que hacia en el "follarium_v2" era tener una matriz de tiles, cada tile ocupa 8 pixeles -> 256/8 = 32 tiles , 192/8 = 24 tiles

por lo tanto necesito un mapa de 32x24 tiles.

Si el mapa fuese 100x100 tiles pues una matriz de 100x100.

Entonces cuando apreto la pantalla y me da las posiciones X e Y,

Calculo la tile de esta manera: (suponiendo que el mapa es de 32x24tiles)

tilex=stylus.X/8;
tiley=stylus.Y/8;

Y enconces cambiaria la tile del mapa[tilex][tiley];

Si tu mapa es mas grande tendrás que tener un "offsetX" y "offsetY") que es el desplazamiento que tienes respecto a la X y la Y y tendras que sumar estos offset a tilex y tiley.

No se si me he explicado bien.
si, pero es qu emis tiles, no son cuadrados, son los tipicos de la vista isometrica, son cuadrados rotados 45º. y no encuentro ninguan ecuacion para saber cada pixel a que tile corresponde... (aunque en relaidad los tiles de la NDS solo pueden suer cuadrados creo... )
Además te estarías quedando sin memoria.

Si usas int son 4 bytes-> 640000*4=2560000 bytes-> 2,44 Mbytes en un array.

Lo que tienes que hacer es trabajar con "casillas" (además en éste caso al estar en isométrico una casilla no coincidirá con un sólo tile no?). Después utilizas una ecuación sencilla para transformar pixels en casillas, y según la casilla seleccionada pues haces lo que debas (por ejemplo poner un sprite que sea un rombo rojo en la posición que corresponda).


Como es isométrico utilizaría una ecuación así (es posible que algo esté mal)

casillaY=touchY/casilla.altura
casillaX=(touchX-touchY*inclinación)/ancho.casilla

En la que inclunación es cuantos pixels a la derecha te desplazas por cada uno que subes (no se si se entenderá).
Gracias, esta noche al llegar a casa lo provare, si alguien ve algun fallo o que algo es mejorable, que lo comente profavor.

Muchas gracias, a ver si puedo hacer algo mas rapidito ^^

-Edit-

no me funciona muy bien, las X salen negativas, porque la Y es mayor y al restar...
12 respuestas