Buenas.
La información que muestro en este hilo está sacada de mi experiencia, pero sobre todo, del resultado del análisis del código del propio juego.
Tron escribió:1. El "querer ir a Pengo" no explica la velocidad de las abejas. Por ejemplo, si juegas el juego en EASY y luego juegas en HARDEST, puedes ver claramente que las abejas se mueven mucho más rápido en HARDEST. También me gustaría saber si hay alguna diferencia de velocidad entre EASY y MEDIUM.
A ver si lo explico de forma más detallada.
El bucle de juego se ejecuta a toda velocidad. En cada vuelta de ese bucle, se mira a ver si se debe mover cada Sno-bee. La forma de saberlo es incrementando un contador que tiene cada Sno-bee. Si ese contador llega a un cierto valor(*), comprueba si el Sno-bee está en una posición múltiplo de bloque (múltiplo de 8 en la posición de las X, múltiplo de 16 en el caso de las Y). Si está en esa posición, el Sno-bee elegirá 1) huir del bloque de hielo que se le ha lanzado, 2) moverse por los pasillos, 3) como rompedor, ir hacia el Pengo o seguir rompiendo los muros, 4) ir hacia el Pengo en el 7/8 de las veces si está en una columna o fila aledaña, 5) ir hacia el Pengo si está en la misma fila o columna, 6) huir (al final del Act) en una dirección, y 7) correr por el muro hacia una esquina.
La dificultad (EASY, MEDIUM, HARD y HARDEST) lo que modifica es el valor(*) del límite del contador de animación. Aquí se aplica la fórmula ya comentada antes:
límite del contador de animación en cada vuelta = 12 - ( (número de Act - 1) / 4 + dificultad )
De esta manera, a medida que aumente el número de Act, sumada a la dificultad indicada por los switch de la placa, se reduce el límite del contador de animación, por lo que el Sno-bee hará más decisiones y se moverá más deprisa.
La diferencia entre EASY y MEDIUM, entonces, es fácil de comparar. Suponiendo que estamos en el Act 1:
limite en EASY = 12 - 0 = 12
límite en MEDIUM = 12 - 1 = 11
Bueno, parece muy poco, pero recordemos que cada vuelta del bucle de la lógica del programa se ejecuta muy rápido (ahora mismo no sé la frecuencia, no depende de ningún reloj o interrupción hardware, sino a la velocidad que marque el procesador Z80), así que por eso vemos a los Sno-bees cada vez más rápidos. E ir cada vez más rápido, más veces ocurre que están en múltiplo de bloque de hielo, haciendo que "piensen" más a menudo.
Es más fácil verlo entre el Act 1 y 16:
limite en EASY = 12 - ( (1 - 1) / 4 + 0 ) = 12
limite en EASY = 12 - ( (16 - 1) / 4 + 0 ) = 9 (un 33 % más rápido)
Ese valor de 9 es el mismo que el Act 1 en el modo HARDEST:
limite en HARDEST = 12 - ( (1 - 1) / 4 + 3 ) = 9
El valor en el modo más difícil, en el último Act:
limite en HARDEST = 12 - ( (16 - 1) / 4 + 3 ) = 6 (el doble de rápido que el Act 1 en modo EASY).
Tron escribió:2. Tienes razón. He experimentado esta abeja de rebote solamente una vez mientras que juega el juego. Normalmente los diamantes son alineados por Pengo o no en absoluto, y la posibilidad de ver esto sucede es extremadamente rara.
Hay algunos jugadores que después de juntar los bloques, miran a ver la posibilidad de convertirlo en bocadillo con un movimiento rápido de uno o dos bloques. Pero también juegan con un cronómetro al lado. Si están por debajo de los 30 segundos, no merece la pena, y es mejor acabar con los Sno-bees que resten. Y tampoco merece la pena si podemos matar a los dos últimos Sno-bees de un solo golpe, porque el premio son 1600 puntos, que seguro que son más que la suma de todos los bloques de hielo.
Tron escribió:3. Estoy de acuerdo. De mi experiencia, Hechos 5, 9 y 13, las abejas parecen ser "más inteligentes" de lo normal. Aunque debo decir que los Hechos 14, 15 y 16 pueden ser muy difíciles comparados con la Ley 13.
Sí.. cierto. El causante es la parte "/4" de la fórmula anterior. En esas fases "notamos" que los Sno-bees son "distintos" de las fases precedentes.
En el caso de los Act 14, 15 y 16, lo que vemos es una versión "acelerada" de los Sno-bees que aparecen en la 13.
Cuando yo digo que la 13 es la más difícil... es una apreciación personal. Quiero decir que en ese Act es como una mezcla perfecta (para los Sno-bees) entre aumento de velocidad y el tomar nuevas decisiones. Las fases siguientes, aunque los Sno-bees son más rápidos, también implican que "piensan" más veces, por lo que su comportamiento es más errático, no tan directo como en la 13.
Tron escribió:4. Usted es correcto que esto puede suceder. Sólo una vez, he asombrado a una abeja en movimiento, y se movió en una posición de diamante.
El juego no tiene una "física" completa, por lo que pasan estos casos. El juego usa, por una parte, la memoria de pantalla para ver dónde hay bloques, y por otro lado, las coordenadas de los sprites, para pintarles.
Tron escribió:5.You está correcto esto puede suceder, sin embargo no estoy seguro de entender su respuesta de la manera que he visto las abejas se mueven a través de los bloques. Por ejemplo, y esto sucede muy a menudo, una abeja se mueve a través de un bloque sin romper el bloque. Si Pengo está esperando con otro bloque para matar a la abeja, Pengo ya no puede matar a la abeja.
ABEJA >>>> BLOQUE (que no se rompe) BLOQUEO ... PENGO EN ESPERA DE EMPUJAR BLOQUE.
En los Hechos más rápidos como 13-16, cuando esto sucede, a veces es un Pengo muerto. ¿Es posible que la animación sea incorrecta, y Pengo todavía puede empujar su bloque para matar a la abeja? He intentado y no he tenido éxito.
No, no se puede.
Para que un bloque se pueda empujar, debe tener el camino despejado.
La animación del Sno-bee es correcta, y es lo que vemos. Lo que pasa es que no ocurre la animación del bloque de hielo rompiéndose. Y si no lo hace, el bloque sigue estando allí.
La única opción posible es... huir.
Una situación parecida es la que me pasaba a mi, hace tiempo. Tuve una temporada que solía empujar el bloque de hielo antes de que el Sno-bee estuviera dentro de la ruta del bloque deslizante. La consecuencia es que el bloque pasa por debajo del Sno-bee. Este se da la vuelta y mata al Pengo.
La solución fue... aprender a empujar el bloque cuando el Sno-bee esté en su mayor parte dentro de la ruta del bloque.
Tron escribió:6, 9 y 10. Cuando se juega en MAME o Arcade, es bastante obvio que sólo hay un número determinado de laberintos. Si están en RAM, entonces se escribe el código que proporciona sólo un número determinado de laberintos. En MAME y Arcade, a veces se obtiene el mismo laberinto dos veces seguidas.
Sí, cierto. La generación es aleatoria, pasillo por pasillo. En teoría... deberían ser 256, pero como siempre empiezan por la esquina inferior izquierda, eso limita bastante el número de ellos.
Sería interesante hacer una recopilación gráfica...
Tron escribió:7. Aceptar para no matar la pantalla de Pengo. Sin embargo, por experiencia, cuando en la Ley 17 o 33 o superior, etc, las abejas se comportan de manera diferente para el mismo laberinto, ya veces son "inteligentes" de lo que normalmente sería, como la Ley 5, 9 o 13.
Le aseguro que el Act 1 siguiente a un Act 16, los Sno-bees son exactamente los mismos que el primer Act 1 de la partida. No hay en ninguna parte del código, ningún cálculo referido al total de Act jugados.
Tron escribió:11. He notado que cuando las abejas generan para iniciar el laberinto, Pengo se mueve más rápido por un corto período, y luego se ralentiza. ¿Por qué pasó esto?
Humm... ¡no me había dado cuenta!
Es, sencillamente, porque el juego empieza a realizar muchas operaciones. Se nota sobre todo cuando los Sno-bees empieza a romper bloques. Las animaciones de los bloques, más el propio movimiento del Sno-bee, hace que el Pengo vaya más lento.
Si un Sno-bee no está haciendo nada (está oculto, a punto de aparecer de un huevo), el programa hace un bucle vacío de unas pocas vueltas (5), sin hacer nada.
Código: Seleccionar todo
; -----------------------------------------------------------------------------
;; Comportamiento Snobees: 0 : una espera muy breve
.org $3353
snobee_behaviour_wait:
ld b,5
85: djnz 85b
ret
Naturalmente, este bucle es muy pequeño comparado con todo lo que hace en una situación de juego normal, así que sí que lo notamos en el movimiento del Pengo. Y volveremos a ver cómo acelera el Pengo al final de las fases, cuando solo queden uno o dos Sno-bees.