BurgerTime - Mi Juego en Basic
|
 |
 |
 |
Con Motivo del concurso de Juegos en Basic, y tras casi una decada sin programar para el spectrum, hace un par de fin de semanas me lance a la aventura...
El juego no es gran cosa en si, es una conversino de una recreativa, es tan lento que es injugable, y le falta muchos retoques, pero estoy muy orgulloso.
Participa en el Concurso de Basic 2003.
He quedado Sexto!!!, no esta mal, hacia la mitad, aunque a ultima hora hubo un monton de entradas para el concurso con demasiado nivel, Felicidades a los ganadores y otra vez sera...
Historia de su Creacion
Burger Time es una de esas joyas que descubres con los años gracias al MAME, (y que debio ser famosa en su epoca por que hay una referencia en un episodio de futurama X'D )
Asi que un fin de semana que no podia hacer nada y tenia un ordenador cerca, me arme con un lapiz y papel y decidi hacerlo, pues lo veia tecnicamente posible y era una idea perfecta para el concurso de basic (no era un snake X'D)
Luego gracias al bmp2scr de LCD hice la caratula, imprimi el codigo, le di un repaso, alguna idea nueva, y con el tiempo lo estoy retocando...
Comentarios del codigo
Por motivos de velocidad el Codigo no tiene comentarios, asi que
pondre aqui algunas ideas para aquellos que quieran cotillear un poco las tripas del programa, ademas esto me servira a mi por si mas adelante lo modifico.
¿y donde estan esos comentarios? bueno, pues como una de las optimizaciones es reordenar el codigo, no tiene sentido que ponga nada aqui, pues todos los dias cambio las cosas de sitio, cuando este acabado lo describire, paciencia...
Trucos Utilizados para la optimizacion
Uno de los problemas del basic es su lentitud, hay varios trucos que permiten mejorar un poco esta situacion, veamos algunos de los que utilize:
- Sin lineas de Rem
- Minimo numero de Sentencias
- Las partes sensibles al principio del programa
- Compilar el Programa
Todas se basan en la misma idea, el Basic pierde mucho tiempo calculando donde esta una linea de programa, tiene que leer desde el principio una a una todas, cuantas menos haya, o antes este el codigo que interesa, menos tiempo pierde.
Hay otra gran cosa en la optimizacion, utilizo tablas para saber que y donde esta cada cosa en la pantalla (no puedo utilizar screen$ por ser UGD), en principio pense en hacerlas con pokes a pelo, pues habia oido que los compiladores de basic no admiten matrices, y mi idea era, similar a lo que hizo santiago, publicar una version fuera de concurso mas jugable (pero a diferencia de santiago, que lo reprogramo en C, mi idea era utilizar Hitsoft Basic o algo similar y compilarlo).
Investigaciones posteriores demostraron que es mucho mas rapido hacer las tablas con matrices que a pelo (por rapidez de calculos, en basic todo se hace en coma flotante con el calculador de basic, que es lento, y con conversiones de flotante a entero en los PEEK y POKE) ya que las matrices hace los calculos con enteros directamente sin calculador, asi que en ello estoy en mejorar la velocidad por ese camino.
Investigaciones aun posteriores han demostrado que pese a que en los test ciertas instrucciones eran hasta un 33% mas rapidas que otras, luego al pasarlo al programa, este no aumenta NADA de velocidad, asi que la opcion de substituir matrices y tablas es una perdida de tiempo.
Se que para el concurso no sirve, pero la mejor manera de acelerarlo es utilizar un compilador de Basic, he probado el Blast V3.7 y no fui capaz de hacerlo funcionar, luego probe el Mcoder3, y... TACHAN!!! compilo a la primera, el aumento de velocidad a sido de un 1000%, esto es 10 veces mas rapido, y ha pasado de ser injugable de lo lento que era, a ser injugable de lo rapido que va :-), podeis ver la diferencia en los archivos adjuntos, el TAP es la version basic, y el Snapshot es la version compilada.
Mcoder3, Blast, asi como Hitosoft Basic Compiler, Colt, Zip, IS y FP, son diversos compiladores de basic que puedes encontrar en
www.worldofspectrum.org
|