Tutorial de AGD 2018 Capítulo 18 - Optimiza tu código ⚫①

Hemos empezado a escribir código en el editor de AGD, y 0quisiera 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.
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.
Sobre comparaciones en los IF
El IF en AGD no tiene todos los operadores de comparación. Es algo que no está documentado, y que el analizador de sintaxis no comprueba para indicarlo al usuario, pero lo compila mal, porque no existen como tal.
AGD solo entiende los siguientes operadores de comparación:
- =
- <>
- <=
Por lo tanto cuidado, porque < y >= no existen para AGD y si los usas el >= causara que AGD dibuje como dos elementos independientes, y entenderá que son > e = por separado, con lo que dará como resultado una compilación ilógica.
En el caso de < directamente no lo acepta, y da error como tal
Un truco para verificar si el código pasa por determinados lugares es usar BORDER n. Si el borde cambia, es que esa parte se ha ejecutado.
Gracias a thE pOpE por la información detallada!
Precauciones al quitar el signo igual en funciones que se usan dentro de IF
Hay una excepción a la regla de no quitar los signos igual en los IF, pero que debe ser tratada con cuidado, 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 escenario que desconozca, pero puedes ahorrar algo más en esos escenarios.
- KEY y COLLISION no son variables, son funciones que devuelven un valor booleano y llevan un argumento, por eso no llevan = en un IF (IF KEY 2 , realmente sería como poner IF KEY(2) en otros lenguaje de más alto nivel), mi experiencia con eliminar el = en los IF es que parece fallar cuando se usa ELSE thE pOpE
Concluyendo
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.
Referencias Bibliográficas
- Ninguna fuente verificable disponible.
Y ahora que?
- Si tienes muchos optis pero pocos mizas, presentate en enfermería en la página 1
- Si crees que puedes mejorar aún más tu código, pasa a la página 18
- Si ya has ahorrado hasta el ultimo superbyte 'yo no puedo estar sin el', pasa a la página 19
One More Thing

¡Desbloquea el poder de MetsuOS y descubre que la privacidad y la seguridad son la clave para desencadenar tu verdadero potencial en línea!
Contenido registrado en Safe Creative
¡Usa el código de promocional 7ZYM4Z y ahorrate unos eurillos en tu suscripcion de Safe Creative!
MetsuOS Needs You!
Apoyanos en este proyecto difundiendolo en tus redes, o mejor, haznos una donación a la cuenta paypal para poder dedicar más tiempo y recursos a el. No olvides comentarnos que parete te interesa más junto con tu donación.
En este momento, además de mantener los servicios, estoy centrado en crear la siguiente iteración del software que me permite hacer todo esto y creando una biblioteca personal física para poder contrastar contenido.
Sobre el sistema de validez de un contenido en MetsuOS
Empezando a incorporar los niveles de validación de un contenido (también llamada sabiduría o niveles de conocimiento) ⚫🔴 🟡 🟢 🔵⚪ ¿Qué són?
- ⚫① - Dark1 - Conocimiento en Bruto. Modo Cuñao, hablo pero no puedo respaldarlo.
- 🔴② - Rojo2 - Conocimiento Impulsivo, pasional, "lo mio es lo correcto".
- 🟡③ - Yellow3 - Conocimiento Crítico: se comienza a explorar el hecho de que pueda haber otras perspectivas.
- 🟢④ - Green4 - Conocimiento Natural: Surge al comprender la naturaleza de la realidad y del ser humano en una materia.
- 🔵⑤ - Blue5 - Conocimiento Científico: Supone la suma de las fases anteriores aplicando el rigor de lo descubierto por la ciencia hasta ahora, sin caer en la -anticientífica- "opinión científica/opinión de expertos".
- ⚪⑥ - Light6 Conocimiento Consolidado: Se alcanza al integrar todo lo anterior desde una perspectiva empática y asumiendo una verdad probabilística dinámica dependiente del contexto.
Sobre la categorización de los tipos de conocimiento
- Conocimiento Gnoseológico: ⚫① 🔴② 🟡③ 🟢④
- Conocimiento Epistemológico: 🔵⑤
- Conocimiento Metsukeológico: ⚪⑥
La Metsukeología (de Metsuke vision global y logos conocimiento) es la ciencia que estudia el conocimiento como un conjunto potencial de conocimiento del que podemos obtener, procesar o percibir partes concretas dentro de un marco contextual específico, y cuyo contexto general real está muy por encima de lo que somos capaces, como especie, de percibir, procesar e integrar de forma completa (definición en progreso).
La Metsucología (de Metsu aniquilación - en este contexto en forma de colapso - , logos conocimiento) es la ciencia que estudia como extraemos verdades percibidas - colapsadas - como conocimiento desde nuestra perspectiva real (tanto epistemológico como gnoseológico) al tomar una parte específica del conocimiento metsukeológico potencial enmarcado en un contexto concreto, obligando a colapsar el conocimiento potencial en conocimiento específico (definición en progreso).
Mas sobre el contexto
DISCLAIMER: Mi consideración de anticientífico respecto al consenso científico es una hipotesis de trabajo propia, que supone que toda asignación de validez, incluso aquella derivada de la conclusión por acumulación de evidencia NO debe ser supeditada a debate, ni acuerdo, debe ser algo probabilistico sin intervención del ego humano. Podría estar equivocado y, en este punto, es donde se aplicaría entonces ese mismo consenso que ahora considero no valido (incluso dañino)
Existen indicadores para algunas cuestiones adicoinales como los siguientes:
- 🌐 - Contenido Externo sobre cuya validez/validación no tenemos control (usualmente enlaces que salen de #MetsuOS)
- ⚖️ - Analisis
- ⚖️📚 - Análisis Bibligráfico
- ⚖️🔬 - Análisis Científico
- ⚖️🏛️ - Análisis Estructural
- ⚖️🧠 - Análisis Filosófico
- 📖 - Referencia
- 📖📚 - Referencia Bibliográfica / Libro
- 📖🔬- Referencia Científica / Paper
- 📖🏛️ - Referencia Estructural
- 📖🧠 - Referencia Filosófica
- 🔍️- Paradigma
Cuando hablamos de un contenido que incluye un texto que hace referencia a otro.
- 🔴②-🌐🟡③ - Nivel del contenido del documento Rojo2, nivel del contenido externo del que habla el documento Yellow3.
- 🔴②-⚖️📚 🔴② - Nivel del contenido del documento Rojo2, en base a análisis bibliográfico nivel Rojo2
También aplicaremos el Sistema de fiabilidad de fuentes y credibilidad de contenidos de la OTAN 🔴②, este sistema incluye una valoración de la fiabilidad de la fuente de A a F (siendo A la de mayor fiabilidad) y una varloración de credibilidad del contenido de 1 a 6 (siendo 1 la mayor credibilidad).
En MetsuOS la agregaremos al final uniendo amos valores como si fuera una coordenada. Por ejemplo: ⚫①-D4 o 🟡③-B2. Esto ayudarña a contextualizar la información sobre la solidez del conocimiento al que se hace referencia en cada momento.
Hay que tener en cuenta que, cuando hay elementos subjetivos o parcialmente subjetivos, el punto de referencia seré yo mismo. Quizá más adelante pueda objetivizar esto más (seria lo deseable), pero en tanto no tenga herramientas que me lo permitan, debo ceñirme al principio de honestidar intelectual, y esperar que mis sesgos dañen lo menos posible la información (en parte este es el nudo gordiano que pretendo resolver, y por ello es dificil resolverlo a priori).
Así de forma resumida, podríamos decir que esta definición es nivel 🔴② (Rojo2 xD) ¿Crees que me dejo algo? Si es así por favor ayudame a mejorarlo contactándome a través de X (Twitter) en mi cuenta, @metsuke 🌐
Consulta la versión completa de la descripcion en ⚫🔴🟡🟢🔵⚪ (🔴②) Un poco más de detalle
- Información IA: Generado por Humano.
- Ultima Modificación: 2025-08-06 22:54:06.522000+00:00
- Versión Documento: 0.2.4