Crea tus Juegos con 8BP

8BP:Evitar IF innecesarios y reemplazar algoritmos por precálculos

4.8
(9)

Hola amigos de 8 Bits de Poder. En la entrega de hoy del curso trataremos de evitar IF innecesarios, ya que queremos optimizar el código de nuestro juego y lo haremos utilizando precálculos en vez de algoritmos. ¡Vamos a ello! 👌

Evitar IF innecesarios

Cómo evitar IF innecesarios

Vamos a ver dos formas de hacer esto:

10 IF A=1 THEN < instrucciones cuando A=1>
20 IF A=2 THEN < instrucciones cuando A=2>
30 IF A=3 THEN < instrucciones cuando A=3>
40 <mas instrucciones >

Si puedes evitar pasar por un IF insertando un GOTO, siempre será preferible. El GOTO es un gran aliado de la técnica de lógicas masivas.

10 IF A=1 THEN < instrucciones cuando A=1> : GOTO 40
20 IF A=2 THEN < instrucciones cuando A=2> : GOTO 40
30 < instrucciones cuando A=3> : rem si A no es 1 ni 2 entonces es 3
40 <mas  instrucciones>

Otra forma de hacer esto es mediante la instrucción ON <variable> GOTO o también la instrucción ON <variable> GOSUB

10 on A GOTO 30,40,50
20 goto 60
30 rem llegamos aquí si A=1
35 goto 60
40 rem llegamos aquí si A=2
45 goto 60
50 rem llegamos aquí si A=3
60 rem aquí continua la logica

Fantastico-8BP

Pero espera… ¿Es posible que no sepas nada de 8 Bits de Poder? Puedes leer el primer artículo del curso de programación en Amstrad CPC de 8BP.

Reemplaza algoritmos por precálculos

Piensa en una pelota que bota. En lugar de usar las ecuaciones del movimiento acelerado, construye una ruta que mueve un sprite hacia abajo con un incremento de coordenada “Y” mayor en cada paso y al tocar el suelo sube con un incremento cada vez menor.

No hay ecuaciones complejas que ejecutar y sin embargo el efecto visual es el mismo. Así fue como hice los saltos del juego “fresh fruits & vegetables”. Esto es posible programarlo porque dentro del juego el universo es “determinista”. Es decir, se puede predecir en cada instante de tiempo que va a ocurrir, por muy complejas que sean las ecuaciones que gobiernan un salto de un personaje o el movimiento de un escuadrón.

En juegos donde la lógica de los enemigos requiere del uso del cálculo de alguna función (como el coseno), precalcula todo y guárdalo en un array que uses durante la ejecución de la lógica. Calcular durante la lógica del juego tiene un coste prohibitivo.

Una lógica compleja es una lógica lenta. Si quieres hacer algo complicado, una trayectoria compleja, un mecanismo de inteligencia artificial…no lo hagas, trata de «simularlo» con un modelo de comportamiento más sencillo pero que produzca el mismo efecto visual.

Por ejemplo, un fantasma que es inteligente y te persigue, en lugar de que tome decisiones inteligentes, haz que trate de tomar la misma dirección que tu personaje, sin ninguna lógica.

Si no puedes simplificar de este modo, entonces piensa que incluso la inteligencia artificial se puede transformar en “determinista”. Si un enemigo toma una decisión sobre cómo moverse en función de tu posición y tu velocidad, podríamos almacenar el resultado de ese pesado algoritmo un array y evitar todos los cálculos.

10 Rem Vx, Vy, X, Y son la velocidad y posición de mi personaje
20 rem supongamos que tengo precalculadas las decisiones para 3 velocidades,10 franjas de coordenadas X y 10 franjas en Y. Esto es menos de 1KB
30 DIM perseguir(3,3,10,100)
40 rem ' cargaría los valores en el array tras calcularlos despacio
50 nuevadireccion=perseguir(Vx,Vy,x,y): rem mecanismo en acción

El universo que estás programando es “determinista”. Por muy complejo que sea el comportamiento de enemigos y elementos de la pantalla, si su comportamiento no depende de tu interacción, entonces hay una posición para cada cosa determinada en cada instante de tiempo. Una posición que podría pre calcularse para evitar cualquier algoritmo complejo de comportamiento y el resultado sería el mismo.

La próxima semana veremos la importancia de eliminar de la ejecución los comentarios del código y cómo esto puede hacer que nuestro programa se ejecute con mayor fluidez, así como optimizar los procesos que se realizan en cada uno de los ciclos del juego.

Hasta aquí hemos llegado por hoy con el curso de programación en Amstrad CPC de 8 Bits de Poder. Si tienes alguna duda puedes escribir en comentarios y te contestaré lo antes posible.

Todos los recursos, como manuales, ejemplos y juegos compilados de este curso los puedes encontrar en el repositorio Github de 8BP.

Hasta la semana que viene amigos 😄

¿Te ha Resultado útil este artículo?

Ayúdanos a mejorar y danos tu opinión:

Mostrar más

2 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Botón volver arriba