Aaaaah, estoy ciegooo

Started by Drumpi, June 13, 2010, 11:42:17 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos:

Pues nada, una cuestión tonta de las mías.
El siguiente código es un minijuego de averiguar la clave, pero tengo problemas en level_1b.inc. Por alguna razón que no logro ver, el proceso l1_teclado ignora la colisión con el proceso l1t_cucaracha, cuando unas pocas lineas después sí que funciona con otros procesos usando el mismo sistema.
He leido el código durante 3 horas, he descansado y he vuelto a mirarlo, e incluso me he ido a cenar, he visto una peli y he vuelto a mirar sin resultado.
Seguro que es una tontería, pero no veo el fallo.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

panreyes

¿Sabes que se cambió el modo en el que collision funciona para poder recoger todos los ids de todos los procesos con los que se colisiona?

Con esto quiero decir: sólo te dará por bueno una colisión en cada frame. Luego te devolverá 0

Drumpi

¿Eso significa que ahora no se puede comprobar la colisión con dos tipos distintos de procesos? :(
De todas formas, lo raro es que me hace bien la SEGUNDA comprobación después del frame, no la PRIMERA, que es la de la cucaracha.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Quote from: PiXeL on June 13, 2010, 11:45:23 PM
¿Sabes que se cambió el modo en el que collision funciona para poder recoger todos los ids de todos los procesos con los que se colisiona?

Con esto quiero decir: sólo te dará por bueno una colisión en cada frame. Luego te devolverá 0

¿Estás seguro de eso? ¿Desde cuándo? ¿Por qué?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

panreyes

Mexplico. Suponiendo una única instancia de cada uno de estos dos procesos:

process uno();
begin
loop
  if(collision(type dos)) /*este siempre funcionará*/ end
  if(collision(type dos)) /*y este nunca funcionará*/ end
  frame;
end
end

process dos();
begin loop frame; end end

Windgate

Te entiendo, ¿Pero por qué ese cambio?

Anteriormente era muy sencillo usar WHILE ( collision ( type lo_que_sea ) ) y contabilizar el número exacto de procesos en colisión durante el mismo FRAME...
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

eso siempre fue asi, ese funcionamiento nunca se cambio... es solo cuestion de logica y coherencia, si estas barriendo una cosa, debes barrer esa cosa y luego barrer otra.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Windgate on June 14, 2010, 02:16:48 AM
Te entiendo, ¿Pero por qué ese cambio?

Anteriormente era muy sencillo usar WHILE ( collision ( type lo_que_sea ) ) y contabilizar el número exacto de procesos en colisión durante el mismo FRAME...

antes y ahora, eso es lo que hay que hacer.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: PiXeL on June 14, 2010, 01:13:11 AM
Mexplico. Suponiendo una única instancia de cada uno de estos dos procesos:

process uno();
begin
loop
  if(collision(type dos)) /*este siempre funcionará*/ end
  if(collision(type dos)) /*y este nunca funcionará*/ end
  frame;
end
end

process dos();
begin loop frame; end end


si hay 1 sola instancia es logico que pase eso, pero si pones otro collision mas si te reportara la colision... por que? simplemente porque cuando el colision termina y ya no encuentra mas, da 0, sino siempre estarias en un ciclo eterno y no se podria hacer un while collision... elemental mi querido PiXeL
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues si la cosa no ha cambiado, sigo sin ver por qué no detecta colisión con la cucaracha y sí con las teclas. Me consta que se guarda bien la ID en la variable que chequeo, y me consta que se superpone, y todo está correcto... salvo en lo que he metido la pata, que no sé lo que es. Empiezo a pensar que tiene alguna relación el que cada proceso tenga una resolution distinta, cosa que no debería afectar, pero también probé poniéndole a la cucaracha una resolution=1.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no recuerdo que pasa si tiene resolucion diferente, no hay cambios en colision desde fenix o las beta iniciales de bennu...

le voy a echar un ojo a tu codigo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Que conste que no he hecho "correciones raras" de las mías a la espera de confirmar mi error o fallo de Bennu, que luego me dices que no reporto ;D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

je, esperame que lo miro en un rato...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

si te refieres a esta porcion de codigo...

       if (teclas[mouse_left][2]==1)
            //temp=collision(l1t_cucaracha_id);
            //say(itoa(temp));
            if (collision(l1t_cucaracha_id))
                say("hola");
            else

a mi si que me funciona, me pone "hola"

ah, cierto, esto ya lo habiamos visto, ahora recuerdo, un proceso de 1x1 nunca va a colisionar, se necesita al menos un grafico de ancho 2.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

#14
Esto se merece un

¡¡PLOINK!!

En toda regla ^^U
¿Y eso? ¿es alguna limitación, algun bug o por decisión propia? Tiene miga la cosa, un mapa de 2x2 con un único pixel no-transparente hace lo mismo pero hay que saberlo.

Bueno, mañana sigo con este y el otro.

UPS, lo olvidé: GRACIAS SPLINTER :)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)