Tutorial de AGD 18: Optimiza tu código

Hemos empezado a escribir cóigo en el editor de AGD, y a quisiera amploar las instrucciones que comentamos en un capítulo anterior

Me gustaría en esta ocasión compartir unas claves básicas antes de continuar con el juego en sí, sobre todo – pero no sólo – de optimización.

Orden, orden, orden

No hagas como yo, que escribí JBA al completo y no apunté para que usé cada variable, ahora me encuentro optimizando tanto para contarlo como para hacer alguna prueba de código y no se para que sirven todas las variables.

Me va a tocar tomar notas poco a poco para optimizarlo, pero tened por seguro que no me vuelve a pasar, lo mismo para los tipos de sprite, no apunte a que correspondía cada número y he de deducirlo caa vez mirando código.

Graba antes de tocar (y después)

En estos días tenemos una enorme ventaja, y es que podemos grabar snapshots continuamente desde nuestros emuladores.

Es fácil de hacer y además ocupa poco espacio, hazlo al menos:

  • Antes de tocar
  • Despues de consolidar una modificación
  • Antes de empezar tu sesión
  • Antes de parar y concluir tu sesión

Ojala hubiera seguido antes mi propio consejo, me hubiera evitao tener que repetir un juego casi al completo.

Piensa antes de hacer

Puede parecer de perogrullo, pero no pocos lios han sido resueltos pensando antes de tocar nada en el código, o al menos guadando antes de tocar para poder restaurar tras liarla parda.

Para aprender es bueno tocar y romper cosas, pero cuanto más complejo sea tu proyecto, tanto más importante es que lo hagas con cabeza, sabiendo donde vas y consolidando cada paso. Te evitarás muchos sustos.

Evita comprobar dos veces lo mismo

Estamos trabajando con un ordenador limitado en cuanto a velocidad y recursos, si en una máquina actual es importante (y profesional) evitar consumir recursos de más, en una de estas máquinas puede ser la diferencia entre un juego fluido y otro injugable.

Como ejemplo, os pongo el código del tipo de sprite 7 de JBA, la gota, básicamente la implementé creando un enemigo que rebota arriba y abajo, solo que cuando sube es invisible, y además no mata cuando no se ve.

Bien, fui torpe y comprobé PARAMA para ver si subimos o bajamos, y tras el movimento volvía a comprobar PARAMA para controlar si debe matar al jugador … absurdo consumo de ciclos de procesador y de valiosa memoria que se torna más necesaria cuanto más ambicioso es nuestro proyecto.

Cada cosa a su tiempo

Otra de esas “cuestiones imprescindibles” dentro el desarrollo retro, aquí no hay concurrencia, no hay objetos que se ejecutan siguiendo una planificación cuidadosa del sistema operativo, eres tú contra el procesador, no hay más.

Por ello es vital que coloques cada función en el punto que le corresponda, y que esta funcionalidad no impida la fluidez del juego.

Evita dejar código inútil

Sobre todo cuando hacemos pruebas, es habitual que nos puedan quedar flecos en forma de código que bien no se ejecuta o que aún ejecutándose no tiene funcion real.

Hemos de revisar regularmente el código para limpiar estas líneas residuales, por una parte para ahorrar memoria y ciclos de ejecución , por otro lado, la limpieza del código es clave para la mantenibilidad del mismo.

Truco: Eliminar el signo igual para ahorrar memoria

Puedes ganar bastantes bytes eliminando el signo igual en todas las instrucciones LET, en lugar de LET G = 1, usa LET G 1, funcionará igual y ahorrarás memoria.

¡Cuidado! no elimines el signo igual en los if y tampoco elimines el LET, a veces hasta el código aparentará compilar, pero funcionará de forma inesperada, pues cambiarás semánticamente el significado del mismo.

Advertencia: Cuidado con los IF

Asegúrate de que compruebas cada IF y cada ELSE que escribas, sobre todo si contienen condicionales, a veces no fallan al compilar, pero tampoco funcionan como se espera, la regla general es: no escatimes bytes escribiendo esas condiciones y chequea con cuidado.

He encontrado problemas en los IF, y recomiendo usar unicamente las combinaciones siguientes: <=, = o >= (que suele aparecerme separado tras compilar).

No he logrado resultados sólidos al usar < o > por si solos, quizá por algún detalle que no he tenido en cuenta, pero prefiero jugar sobre seguro.

Hay una excepción a la regla de no quitar los signos igual en los IF, pero que debe ser tratada con cuiado, como he dicho en general se debe poner el igual en todas las comprobaciones de variable por ejemplo IF A = 5, pero se puee obviar en caso de funciones, como por ejemplo IF KEY 2 o IF COLLISSION 0, chequea en cada caso por si no funcionara algún caso que desconozca, pero puedes ahorrar algo más en esos escenarios.

Concluyeno

Una vez que se domina, resulta relativamente sencillo escribir código con soltura, pero a veces el compilaor es algo caprichoso, póngase, por tanto, especial cuiado en estas cuestiones que he indicao.

Un pequeño IF que no se ejecuta tal cual aparenta hacerlo a primera vista, puede tenernos horas – incluso días – buscando un bug en apariencia irresoluble, no des nunca ningun IF por sentado en AGD.

Si te planteas donar en estos tiempos, usa ese dinero para ayudar a tu alrededor.

No voy a negar que este proyecto en realidad me cuesta dinero, y dada mi capacidad adquisitiva, el porcentaje no es pequeño.

PERO, en esta crisis te pido que si piensas en donarme algo, lo evalúes y uses el dinero para ayudar a alguien de tu entorno inmediato.

Seguro que hay alguien que necesita algunos alimentos, científicos que neceistan fondos para investigar el COVID-19

En estos tiempos te pido que les des prioridad.

Si aún así tu posición te permite hacer ambas cosas, te agradezco de antemano tu aportación. ¡Ánimo que de esta salimos juntos!

Representacion en 8x8 Pixels del concepto "Coronavirus" usando una corona amarilla y un 19 rojo debajo

¿Te gusta lo que hago?

En ese caso, puedes ayudarme con los costes de servidor, de dominios, y apoyame para que pueda seguir trabajando en esta dirección.

Recuerda ¡esta donación es completamente voluntaria!

Puedes donar la cantidad que quieras a través de mi página en Paypal.me, si te resulta más cómodo.

Ayudame a entender mejor qué creaciones pueden ser de mayor valor para vosotros, indicandolo en el comentario de paypal.

Gracias de todo corazón.

¿Quieres saber cual es mi plan con los miles de millones de los pozos de petroleo?

Quizá te interese ...

Dejar una Respuesta

XHTML: Usted puede usar las siguientes etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>