Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: DCelso on January 29, 2010, 06:33:52 PM

Title: ejemplo de plataformas básico usando tiles
Post by: DCelso on January 29, 2010, 06:33:52 PM
Hola a todos, estoy buscando un ejemplo muy básico de un plataformas usando la técnica de baldosas, he intentado hacerlo de cero, pero tengo la mente tan "sucia" que siempre termino usando collision para una colisión perfecta de pixeles, usando métodos de anticipación de movimientos y cosas avanzadas que complican el entendimiento de la técnica de "tiles" a ver si alguien me echa una mano y me encuentra algo basiquísimo que reaprobechar. :D
Las premisas de las que se parte son las siguientes:
Un png que contiene muchos sprites o tiles de 8x8, en ellos están los tiles para crear el escenario, los sprites obstáculos, objetos, enemigos y personajes. extraer las imágenes para crear el fpg ya lo tengo hecho (creo que incluso tenemos varios ejemplos por el foro), no haría falta podríamos decir que tenemos un fpg con todos los sprites.
Un archivo de texto para crear el mapa de 32x32 tiles en el que línea a línea se va indicando qué tile del png anterior usar para crear el mapa.
Otro archivo de texto en el que se indican las posiciones de los obstáculos, objetos, enemigos y personajes que tendrá el mapa.

muy sencillo, sería algo como dibujar el mapa, poner los personajes, obstáculos y objetos en el mapa, mover al personaje y enemigos y realizar las colisiones a nivel de "tiles" (es decir no usar mapa de durezas, sino identificar el tile en el que estoy o estaré y actuar en consecuencia)

Esto es básicamente el inicio de programación de juegos para cualquier plataforma de recursos limitados y se hace en pocas líneas.

Intento rehacer el motor interno del manic miner que tengo para el APagame, lo he empezado varias veces de cero harto de ponerle parches pero el código que obtengo al final es verdaderamente un caos y no hay quien lo entienda, vamos, contrario a la filosofía que quiero darle a los juegos apagame ;D.

Gracias de antemano.
Title: Re: ejemplo de plataformas básico usando tiles
Post by: Drumpi on January 30, 2010, 03:16:42 AM
Si por "pocas lineas" entendemos 2000, yo si tengo un ejemplo básico hecho para la detección de durezas, que sirve para un personaje de 1 tile de altura, y que funciona con un tileset de durezas de 22 tiles, entre las que se encuentran tiles huecos, sólidos, rampas, medias rampas, lo mismo pero transpasables de abajo a arriba pero no de arriba a abajo, chorros de aire ascendentes y escaleras (y está preparado para albergar otros 19 tiles iguales, pero en el agua).

No, en serio, parece fácil pero no lo es tanto, recuérdamelo al acabar el concurso y te paso el esquema que utilizo para ello.
La solución más sencilla es cargar el FPG con los tiles de durezas, y leer los pixels "a la antigua", como si fuera un mapa de durezas normal (rojo para el suelo, azul para las paredes...) sólo que primero debes saber qué mapa debes leer, y luego en qué posición de ese tile quieres obtener el pixel, no se si me explico.
Ahora, si usas pocos tiles de durezas, la cosa se simplifica muchísimo. Los problemas más gordos vienen por culpa de bajar rampas y de no caerse de los bordes hasta que has pasado completamente los tiles que tienes debajo.

Obviamente, el motor que tengo es un estandar, sirve para cualquier plataformas (y tengo otra versión para personajes de dos tiles de altura, pero traspasan ligeramente las paredes), y había pensado subirlo de manera que, con el motor de tiles, añadiendo un par de lineas, y llevando el control de la velocidad horizontal y vertical del personaje, se pueda hacer un plataformas con tiles, pero para eso hace falta tiempo que no tengo.

Un esquema rápido sería:
-Obtener las velocidades horizontal y vertical del personaje en base al estado actual y a las teclas pulsadas.
-Comprobar si se va a cambiar de tile y en qué dirección.
-Comprobar que se puede avanzar en esa dirección (el siguiente tile está libre, si subimos una rampa que no choquemos contra el techo...).
-En el nuevo tile, comprobar que estamos colocados correctamente (que no hayamos subido mucho y nos choquemos con el techo, que no atravesemos el suelo de una rampa, que no estemos demasiado pegados a la pared del tile contiguo...).
-Actuar según tiles especiales.
-Repetir.
Title: Re: ejemplo de plataformas básico usando tiles
Post by: l1nk3rn3l on January 30, 2010, 02:25:42 PM
en el bennupack hay varios en seccion Ejemplos Medium y Ejemplos AVAnzados
Title: Re:ejemplo de plataformas básico usando tiles
Post by: gecko on August 02, 2012, 08:55:44 PM
Perdón por el reflote... pero me interesa de lo que estas hablando Drumpi!

Hay algo de codigo que se pueda ver? o algun ejemplo?

En tu motor de tiles utilizas durezas pixel por pixel o programas los comportamientos de acuerdo al tile? (por ejemplo si es una rampa mover en X lo mismo que en Y, y cosas de ese estilo, que vi que se hacen)

Lo pregunto aca mismo para no abrir un nuevo thread.
Title: Re:ejemplo de plataformas básico usando tiles
Post by: fulgorelizz on August 02, 2012, 09:17:47 PM
 ;) yo tengo una idea, pero a mi siempre me regañan xD jajajaja siempre splinter me arma bronca por lo que digo aca, jeje bueno yo estoy desarrollando un shoot them up , en 512x384 (ampliado a 1024*768) se ve super bien, a 60,1 en fps, y uso es un armador de escena, tengo una pentium 4, uso sector de 512* un alto fijo de nivel, en este caso archivos bmp 5120*900, todo en negro o color 0 para bennu lo que hace un archivo bastante liviano de referencias al scroll, genero algo llamado print_part que me imprime todas las partes del scroll como procesos cuyos ghrafico esta asignado en el mismo proceso y que sigue el siguiente comportamiento, si !out_region(id,0) entonces el graph=grafico_asignado de lo contrario graph=0; esto evita llenar de informacion por pixeles mi memoria, la dureza la evaluo asi como se evalua en dr malvado. mi archivo de dureza en este caso de 2560*450 con un color de dureza para limitar el movimiento del protagonista, tambien es bastante liviano, mi pc es un p4 de 2gb y video 512. corre tranquilazo, se ve muy bien. es una idea que manejo, es por cuestion de estetica que uno quiera hacer escenarios mas complejos tipo mega man x4 o contra 3, castlevania, me estoy ideando algo bien chulo, bueno esa es mi idea, ahora bien si quieres hacer algo tipo mario bros 1, los tiles te sientan super bien!! o un rpg tipo zelda supongo que tambien te iria de maravilla.
Title: Re:ejemplo de plataformas básico usando tiles
Post by: gecko on August 02, 2012, 10:07:49 PM
Claro, lo que vos tenes es todo en un solo mapa, deberia funcionar bien.

Yo quiero saber como resolver el tema de las durezas pero en mapas de tiles...
Title: Re:ejemplo de plataformas básico usando tiles
Post by: SplinterGU on August 02, 2012, 10:15:36 PM
Quote from: fulgorelizz on August 02, 2012, 09:17:47 PM
;) yo tengo una idea, pero a mi siempre me regañan xD jajajaja siempre splinter me arma bronca por lo que digo aca, jeje bueno yo estoy desarrollando un shoot them up , en 512x384 (ampliado a 1024*768) se ve super bien, a 60,1 en fps, y uso es un armador de escena, tengo una pentium 4, uso sector de 512* un alto fijo de nivel, en este caso archivos bmp 5120*900, todo en negro o color 0 para bennu lo que hace un archivo bastante liviano de referencias al scroll, genero algo llamado print_part que me imprime todas las partes del scroll como procesos cuyos ghrafico esta asignado en el mismo proceso y que sigue el siguiente comportamiento, si !out_region(id,0) entonces el graph=grafico_asignado de lo contrario graph=0; esto evita llenar de informacion por pixeles mi memoria, la dureza la evaluo asi como se evalua en dr malvado. mi archivo de dureza en este caso de 2560*450 con un color de dureza para limitar el movimiento del protagonista, tambien es bastante liviano, mi pc es un p4 de 2gb y video 512. corre tranquilazo, se ve muy bien. es una idea que manejo, es por cuestion de estetica que uno quiera hacer escenarios mas complejos tipo mega man x4 o contra 3, castlevania, me estoy ideando algo bien chulo, bueno esa es mi idea, ahora bien si quieres hacer algo tipo mario bros 1, los tiles te sientan super bien!! o un rpg tipo zelda supongo que tambien te iria de maravilla.

te pido perdon si consideraste que te he regañado, no era mi intencion, sino aportar una mejora (si es que cabe) a lo que se plantea, siempre para mejorar no para regañar...

te pido nuevamente disculpas por mis formas.
Title: Re:ejemplo de plataformas básico usando tiles
Post by: SplinterGU on August 02, 2012, 10:16:30 PM
Quote from: gecko on August 02, 2012, 10:07:49 PM
Claro, lo que vos tenes es todo en un solo mapa, deberia funcionar bien.

Yo quiero saber como resolver el tema de las durezas pero en mapas de tiles...

las durezas deberian ser tileadas tambien.
Title: Re:ejemplo de plataformas básico usando tiles
Post by: gecko on August 02, 2012, 10:22:16 PM
Yo ahora mismo tengo una funcion que le paso las coordenadas x,y dentro del scroll y me devuelve la dureza del pixel que corresponde del tile que corresponde. Y con esto deberia pode hacer funcionar todo joya.

Ahora lo que vi que hay algunos que hacen es detectar el tipo de tile, y programar comportamientos especiales para esos tiles. Por ejemplo si es una rampa 45 grados, a medida que se avanza en X, tambien se va cambiando la coordenada Y. Pero todo a nivel programacion digamos, sin "mirar" los pixels del grafico, solamente sabiendo el tipo de tile. Se entiende? Creen que sea algo mas eficiente? mas simple?
Title: Re:ejemplo de plataformas básico usando tiles
Post by: fulgorelizz on August 02, 2012, 10:24:36 PM
Quote from: SplinterGU on August 02, 2012, 10:15:36 PM
Quote from: fulgorelizz on August 02, 2012, 09:17:47 PM
;) yo tengo una idea, pero a mi siempre me regañan xD jajajaja siempre splinter me arma bronca por lo que digo aca, jeje bueno yo estoy desarrollando un shoot them up , en 512x384 (ampliado a 1024*768) se ve super bien, a 60,1 en fps, y uso es un armador de escena, tengo una pentium 4, uso sector de 512* un alto fijo de nivel, en este caso archivos bmp 5120*900, todo en negro o color 0 para bennu lo que hace un archivo bastante liviano de referencias al scroll, genero algo llamado print_part que me imprime todas las partes del scroll como procesos cuyos ghrafico esta asignado en el mismo proceso y que sigue el siguiente comportamiento, si !out_region(id,0) entonces el graph=grafico_asignado de lo contrario graph=0; esto evita llenar de informacion por pixeles mi memoria, la dureza la evaluo asi como se evalua en dr malvado. mi archivo de dureza en este caso de 2560*450 con un color de dureza para limitar el movimiento del protagonista, tambien es bastante liviano, mi pc es un p4 de 2gb y video 512. corre tranquilazo, se ve muy bien. es una idea que manejo, es por cuestion de estetica que uno quiera hacer escenarios mas complejos tipo mega man x4 o contra 3, castlevania, me estoy ideando algo bien chulo, bueno esa es mi idea, ahora bien si quieres hacer algo tipo mario bros 1, los tiles te sientan super bien!! o un rpg tipo zelda supongo que tambien te iria de maravilla.

te pido perdon si consideraste que te he regañado, no era mi intencion, sino aportar una mejora (si es que cabe) a lo que se plantea, siempre para mejorar no para regañar...

te pido nuevamente disculpas por mis formas.

8) tranquilo splinter!! debo reconocer que de esto uds saben mas que yo, yo no le dedico al desarrollo de videojuegos tanto tiempo como me gustaria dedicarle, asi que mientras me las ingenio, y si consigo por aca pos aprendo ... jeje tranquilo!! aprender es bueno, estoy seguro que has enseñado mucho  ;D yo soy uno de los que ha aprendido de ti!!  ;)
Title: Re:ejemplo de plataformas básico usando tiles
Post by: SplinterGU on August 02, 2012, 10:42:44 PM
me alegro saberlo... gracias.