Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: cybernoid en 11 de Marzo de 2009, 09:19:44 am



Título: Colisiones
Publicado por: cybernoid en 11 de Marzo de 2009, 09:19:44 am
Hola chicos!,

Me gustaria saber como haceis las detecciones de collisiones sprite vs patron y sprite vs sprite

es decir, las hacéis a nivel de pixel o de bloque

en el caso de los patrones y sprites utilizais doble deteccion primero por bloque y luego a pixel?

Este año no podre pasar por RM :( me piro a paris :D sabeis algun sitio donde pudiera haber material MSXero? algun rastro?






Título: Re: Colisiones
Publicado por: pitpan en 11 de Marzo de 2009, 10:28:21 am
En cuanto a las colisiones, las de sprite-sprite procuro hacerlas por hardware porque es bastante más fácil y económico en cuanto a recursos, aunque no siempre fiable, según te organices. Además, algunos VDPs funcionan a su manera (ver post sobre desarrollo compatible).

En las colisiones con patrones, lo suyo es hacerlas a nivel de patrones, y pasar a nivel de píxels sólo si es imprescindible. Ten en cuenta que una colisión pixel sprite - pixel patrón puede ser algo compleja y lenta, y la BIOS te servirá de muy poco para estos propósitos.

En cuanto a París, estuve por allí este fin de semana y no encontré ningún MSX en las galerías Lafayette ;)

No sé, quizás en el mercado de pulgas puedas encontrar algo, pero me parece que el principal sólo funciona los domingos por la mañana. En cuanto a tiendas de segunda mano, ni idea.

Lo único que hay que decir en cuanto a prevención es que los ordenadores MSX franceses tienen teclado AZERTY y, además, la salida de vídeo es PERITEL, que igual no te funciona bien en televisores PAL puros.

La mejor opción será que te pases por Passion MSX o MSX Cafe y preguntes directamente. Allí están todos los MSXeros franceses. Igual te puedes tomar hasta unos cafés con los frikis francófonos. ;)


Título: Re: Colisiones
Publicado por: Jon_Cortazar en 11 de Marzo de 2009, 11:18:26 am
Para las colisiones sprite vs patrón lo que suelo hacer es registrar un offset en X e Y, con valores 0-7. Así, cada vez que sumo 1 pixel en X, incremento también el offset. Cuando ese offset llega a 8 (es decir, que vuelve a ser 0), significa que el sprite a avanzado un patrón, y que tengo que comprobar lo que hay. Idem para la Y. Así es básicamente como lo hago yo. Para colisiones entre sprites, compruebo las coordenadas entre ambos. La verdad es que nunca lo he hecho por hardware, salvo en algún miniprograma de BASIC (ON SPRITE GOSUB xx y demás)


Título: Re: Colisiones
Publicado por: cybernoid en 11 de Marzo de 2009, 11:32:56 am
oka, gracias

la verdad es que por hardware no me interesa, ya que si un muñeco esta formado por 2 sprite a la porra con la detección :P

vaya robsy, no habia pensado en el tema del teclado frances :(  nada, mejor me olvido de traerme algún MSX, pero igualmente andaré a la caza del cartucho :)



Título: Re: Colisiones
Publicado por: SapphiRe_MSX en 12 de Marzo de 2009, 02:56:48 pm
la verdad es que por hardware no me interesa, ya que si un muñeco esta formado por 2 sprite a la porra con la detección :P

Hombre, si lo haces en código máquina y mueves los sprites al mismo tiempo y en el vblank, si puedes detectar colisiones de sprites por hardware. Basta con que diseñes los sprites de forma que nunca solapen dos pixels encendidos.


Título: Re: Colisiones
Publicado por: k0ga en 13 de Abril de 2009, 08:34:15 pm
Para las colisiones sprite vs patrón lo que suelo hacer es registrar un offset en X e Y, con valores 0-7. Así, cada vez que sumo 1 pixel en X, incremento también el offset. Cuando ese offset llega a 8 (es decir, que vuelve a ser 0), significa que el sprite a avanzado un patrón, y que tengo que comprobar lo que hay. Idem para la Y. Así es básicamente como lo hago yo. Para colisiones entre sprites, compruebo las coordenadas entre ambos. La verdad es que nunca lo he hecho por hardware, salvo en algún miniprograma de BASIC (ON SPRITE GOSUB xx y demás)


Juas, mira que te complicas la vida, ¿no es mas facil hacer la and de 7 y comprobar si es 0? :P


Título: Re: Colisiones
Publicado por: Jon_Cortazar en 14 de Abril de 2009, 10:34:03 am
Juas, mira que te complicas la vida, ¿no es mas facil hacer la and de 7 y comprobar si es 0? :P

Pues va a ser que si, lol! k0gulator number one!  ;)


Título: Re: Colisiones
Publicado por: pitpan en 14 de Abril de 2009, 12:50:07 pm
La técnica del AND la empleé para un motor básico para plataformas que después no utilicé para nada, pero que quizás sirvió para inspirar a algún MSXero en la sombra ;)

Es la más rápida y efectiva, y resuelve bastante bien muchos de los temas, aunque añadir detalles a la interacción con el escenario supone complicar siempre el motor. De hecho, la mejor solución sería siempre leer directamente a nivel de píxels, pero es demasiado lento y obliga a emplear colores separados para fondo y escenario. Lo único que he hecho a nivel de pixels es el inefable G-MONKEY, al más puro estilo GORILLA ;D