Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Programación, Tiros y Culatazos

–Cuando disparar se vuelve un desperdicio–

Llevo meses queriendo escribir esto pero como lo había escrito antes sonaba demasiado pretensioso. Si bien soy bastante orgulloso con mi trabajo y prefiero seguir de freelancer de un servicio que muy pocos pueden ofrecer que buscar un empleo facil y seguro (y con una larga lista de candidatos que pueden hacer ese mismo trabajo por menos dinero) muchas veces me veo en situaciones en las que ese excesivo orgullo me ha dejado en situaciones bastante arriesgadas. Para ejemplificarlo voy a hablarles de un dilema interesante que se dio en el antiguo juego P.O.W de arcade a la que pertenece la siguiente imagen.

toma del pow

En P.O.W había un arma muy poco común en los juegos del género Beat’em Up: Una metralleta. Por mucho la mejor de todas las armas del juego. El dilema que se le presentaba al jugador era que el cargador no tenía suficientes balas para acabar con todos los enemigos; aunque había un ataque secundario que consistía en pegar un culatazo que si bien era lo bastante fuerte para enviar al rival por los aires no era nada facil de aplicar y el riesgo de salir herido al intentarlo era enorme. Por si fuera poco algunos villanos eran tan rápidos que eran capaces de esquivar la ráfaga de balas. Entonces la decisión era la siguiente: ¿A cuales enemigos hay que dispararles y a cuales eliminar a culatazos?

La respuesta no es sencilla. Bien uno podía irse a lo seguro y gastarse todas las balas o arriesgarse a perder el arma al intentar golpear con esta. El final sería el mismo, perder la preciada metralleta. La mejor jugada era dispararle a los enemigos mas peligrosos y golpear a los mas insignificantes. Decidir cual era cual era lo dificil.

En fin, ahora mismo estoy pasando por una situación muy parecida. Se me están presentando oportunidades muy interesantes relacionadas con la programación en ensamblador pero donde hay muchas tareas (alrededor de una tercera parte) que no se relacionan directamente con este lenguaje. Por ejemplo hacer unas rutinas en ASM para un proyecto que en su mayoría está hecho en C++ y OpenGL, una oportunidad de trabajar en el desarrollo de un juego en linea pero que incluye partes de una materia que tanto desprecio como lo es el desarrollo web (otro dia mencionaré mis motivos) o una remota pero posible oportunidad de programar para Android, que aunque ya comprobé que es posible programar para Android en ensamblador la compatibilidad de hardware no es total y eso significa que tendré que trabajar con un par de rutinas de alto nivel para asegurar la compatibilidad en ciertos dispositivos. Supongo que si quiero que estas oportunidades no se me escapen voy a tener que mancharme las manos.

Para hacer la comparación con P.O.W. las partes de estos trabajos que involucran la programación en ensamblador tienen su equivalente en los enemigos que son lo suficientemente dignos para gastar munición en ellos y el resto aquellos que no valen el costo de la bala y que es mejor eliminar a culatazos aunque eso signifique tomar unos pocos mas de riesgos. Otra manera menos modesta de decirlo es que no quiero desprestigiar el ensamblador haciendo cosas en las que no se van a apreciar sus ventajas y lo voy a dejar para las tareas en las que los procesos repetitivos (eso que los ancianos llaman trabajo duro) no sirvan. Siempre es mejor guardar las armas mas poderosas para enfrentarse a los enemigos mas difíciles, aunque eso signifique tomar riesgos mayores al enfrentar a los monstruos normales con el equipo básico.

Ya para terminar, quiero comentarles que lo que al principio era un minijuego está convirtiéndose en una monstruosidad de casi 40,000 bytes. Esto es una cifra enorme tratándose de un programita en ensamblador. Si bien apliqué ciclos desenrrollados para aumentar la velocidad de ejecución y una buena cantidad de las rutinas son funciones debug que no van a compilarse en la versión final esto no es razón para hacer códigos descuidados. Por cierto, una de las herramientas que acabo de terminar pero que aún no documento es el editor de contenidos para el juego el cual estoy viendo que podría usarlo para crear algo de material gráfico de manera casi automática para hacer mas amena esta web. Por otro lado y pasando a temas menos agradables es probable que durante el mes de mayo y principios de junio casi no postee, pues voy a tener que responder ante unas emergencias y si las cosas no salen bien es probable que la segunda mitad de este año solo pueda publicar cuando mucho tres o cuatro entradas por mes. Por ahora solo digamos que va a ser una pelea a culatazos porque debo de guardar la munición para enfrentar a los jefes. Solo espero que no me vaya a salir el culo por la tirata.

abril 28, 2011 - Posted by | Uncategorized

5 comentarios »

  1. ¿De qué va el juego ese de 40ks?!

    Comentario por josepzin | mayo 7, 2011 | Responder

    • si te refieres a la historia se trata de una expedición que queda atrapada en un planeta habitable al que habían sido enviados con propósitos de investigación; sin saber que los humanos no son los únicos interesados en apoderarse de el.
      La historia no tiene nada de original, es una mezcla de mitos sumerios, relatos de extraterrestres y peliculas de los noventas como stargate. Pero esta historia era la que mejor se prestaba para el modo de juego que quiero hacer que es una mezcla de plataformas con elementos de RPG. Lo mejor es que si logro definir una estructura de archivo adecuada seria posible crear varios capitulos con diferentes historias a partir de un mismo codigo ejecutable. Espero para verano tener al menos un nivel jugable
      o por lo menos algunos videos del gameplay.

      Comentario por asm86 | mayo 9, 2011 | Responder

      • Suena interesante :)

        ¿Y los gráficos? ¿Los harás tú o tienes un grafista?

        Comentario por josepzin | mayo 9, 2011

      • Pues tengo unos amigos que son bastante buenos para hacer grafismo pero hasta donde pueda voy a intentar hacerlos yo mismo. Quise que el juego tuviera tematica extraterrestre para no tener que hacer modelos realistas o con mucho detalle, es mas sencillo pintar una escafandra que un rostro humano. No me importa que el juego se vea feo mientras la programacion salga bien, al final es mas sencillo actualizar las graficas que el source code.

        Comentario por asm86 | mayo 9, 2011

  2. ks = “cas” = Kb. :P

    Comentario por josepzin | mayo 7, 2011 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: