Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Modo Protegido 021: Un MacGuffin para llevar

–Un pretexto intercambiable para una aventura–

Un MacGuffin es algo que justifica una historia y no tiene ningún propósito en la trama. ¿Y cual es el MacGuffin que justificará una aventura llena de programación, dramas de internet y demás trolleo? La respuesta es obvia. ¡Hacer un videojuego!

Descargar en mp3

diciembre 20, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 020: Hola de Nuevo, Linux

–A programar de lleno en 64 bits–

 

Luego de mucho tiempo, tengo una PC con Linux por la que no tengo que rendirle cuentas a nadie. Nada extraordinario hasta que interviene la programación en Lenguaje Máquina con Flatassembler. Y por si fuera poco, ahora en 64 bits.

Descargar en mp3

diciembre 10, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 019: Crunch Time

O por que los que hacen videojuegos se quejan de que los explotan

Puedes tener videojuegos de calidad o puedes tener una industria de videojuegos con buenos salarios y prestaciones. No puedes tener ambas. A menos que estés dispuesto a aceptar el Crunch Time.

Descargar en mp3

noviembre 12, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 018: El Fracaso de Square-Enix Latinoamérica

Entre 2012 y 2015 Square Enix abrió oficinas de desarrollo en latinoamérica. Pero ni la región ni los desarrolladores estaban al nivel esperado por los japoneses

Link a la nota original

noviembre 7, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 017: Sound Test

Y otras noticias del podcast

Pruebas para mejorar el audio del podcast y temas varios. Este podcast no va a caer en el olvido como otros proyectos

Descargar en mp3

noviembre 7, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 016: Como programar un clon de Star Raiders

–¿El FPS 3D más sencillo de programar con las PC de hoy?– Star Raiders de 1978 probablemente sea el FPS 3D más sencillo de programar. En este audio explico como programar un clon de este juego. Si pueden hacer programas que lean botones y dibujen puntos en la pantalla pueden hacer un Star Raiders. Por cierto, no necesitan usar un engine 3D

Descargar en mp3

octubre 27, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 015: El Caso Yogome y La Industria de Videojuegos de México

No todos los que hacen juegos en México son estafadores. Muchos sólo son ineptos. Los buenos son pocos

 

Una empresa de videojuegos de México cae por los malos manejos de su CEO. No es la primera ni será la última. Cosas como esta son comunes en un ambiente donde un grupo decide quienes pueden hacer juegos y quienes no de modo arbitrario. Conozcan a “La Industria” y eviten crear algo así en sus paises

Descargar en MP3

octubre 5, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 014: Tu Consola de Videojuegos es una Computadora

–Y los videojuegos son programas de computadora que trabajan con numeritos–

¿Cómo juegas con un aparato diseñado para guardar números y hacer cálculos matemáticos con ellos? Este es el primer episodio dirigido a los que quieren aprender a programar videojuegos. Si no se aburren, puede que lo consigan.

Descargar en MP3

octubre 2, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 013: La Caida de Telltale Games

–Los Gringos también retocan botones de interfaces–

¿Qué mató Telltale games? ¿Contratar a gente que no hacia nada?¿Explotar a unos pocos que hacian todo? ¿O sus juegos sin gameplay basados en shows famosos? Esas cosas no mataron a Telltale. ¡De esas cosas vivia!

Descargar en MP3

septiembre 24, 2018 Posted by | Uncategorized | 1 comentario

Modo Protegido 012: Indies que se Cuelgan de Videojuegos Famosos

Cuando las ideas no valen ni 10 centavos la docena

Parte 1: Cuando indies que no saben programar quieren disimular su ineptitud dicendo que su juego es “retro”. Y encima se cuelgan de juegos famosos porque nadie jugaria sus propios juegos

Parte 2: ¿En qué se gastan tanto dinero los indies? Un indie reunió 3 millones de dólares en 2015 y a casi finales del 2018 su juego todavia no sale. ¿Pero por qué le perdonan tantas cosas a ese indie…? oh wait.

NOTA: El nuevo episodio del podcast tiene una miniatura engañosa. No habla nada de Kirby. Debí poner a Mega Man o a Samus. Pero Kirby era más fácil de hacer en plastilina

Descargar en MP3

septiembre 19, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 011: El Tercer Ratón

–El infierno que aguarda a los geeks y estrategias para escapar de él–

Parte 1: ¿Quién es el dueño de tu tiempo de vida?

Parte 2: Un famoso geek de internet tuvo un final muy triste. Espero con este audio evitar que a otros les pase lo mismo

Descargar en mp3

septiembre 14, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 010: Herramientas Juegomáticas

–Hacer videojuegos hoy es más fácil… por desgracia–

Hacer videojuegos hoy es más fácil con estas herramientas. Pero hacer juegos que no sean basura sigue siendo tan dificil como lo ha sido siempre.

Descarga el podcast en MP3 desde iVoox

septiembre 7, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 009: La Tribu de la Basura

–Falso buenismo y artistas desencantados–

Parte 1:
Hay entidades cuya mera visión es suficiente para causarle una crisis nerviosa a quienes no están preparados. Pero tales entidades son usadas por algo mas grande.

Parte 2:
Un evento local promete ayudar a artistas y creativos a ganarse la vida. ¿Pero ganarse la vida con un trabajo “artístico” es realmente lo que los artistas más jóvenes quieren?

septiembre 4, 2018 Posted by | Uncategorized | Deja un comentario

Modo Protegido 008: El Caballero Negro

-No es el héroe que quieren, pero si el que se merecen–

¿Así que ahora necesitan “héroes” que lo arriesguen todo y le den empleo de desarrollo de videojuegos a un montón de señoritos zoquetes?

Pues esto es lo que obtienen cuando le piden ayuda a la misma gente que menospreciaron tantas veces.

Versión en MP3

septiembre 1, 2018 Posted by | Uncategorized | 1 comentario

Modo Protegido 005: El Efecto Cobra

–El dinero no siempre es la solución–

Cuando se invierte dinero en resolver un problema, el problema se vuelve más grande. Apoyar con fondos el desarrollo de videojuegos hizo que hacerlos se volviera mucho más caro que antes cuando no habia apoyos de ningún tipo

Link del podcast de ivoox en MP3

septiembre 1, 2018 Posted by | Uncategorized | 1 comentario

Modo Protegido 007: Elitismo en los foros de Desarrollo de Videojuegos

–Los trolls no aparecen nada mas porque si–

Existen en internet comunidades creadas por gente que quiere aprender a hacer videojuegos. Pero en ellas hay mucho elitismo. Gente que se siente dios sin haber hecho un juego propio. Aqui menciono 3 tipos de elitista que he podido identificar.
Spoiler. Yo soy del Tipo 1

agosto 29, 2018 Posted by | Uncategorized | 4 comentarios

Modo Protegido: El Podcast…

…de un autoproclamado programador de videojuegos

Por la conjunción de una serie de pequeñas acciones que no parecian tener nada que ver entre si me metí en una situación digna de intro de un programa cómico. De comedia de humor negro para ser exacto. Pero para no hacer spoilers les diré que voy a hacer una serie de cosas paralelas al blog de ensamblador y al gamedev. Y la primera de ellas, y que ya está en funcionamiento es ni más ni menos que un podcast: Modo Protegido: El podcast de un autoproclamado programador de videojuegos.

logo_pm_cuadradoPara cuando esta nota suba a internet ya habrá al menos dos programas de unos cuarenta minutos cada uno mas pequeños pedazos de estos para facilitar la escucha a los adultos responsables que no tienen cuarenta minutos libres seguidos en un dia. ¿Y de qué trata? Pues a diferencia del intento anterior, este será un programa mucho menos técnico. No muy diferente a un monólogo con ínfulas de discurso. Y como reza el subtítulo. El tema principal será lo que he aprendido, vivido y presenciado en los años de ser un autoproclamado programador de videojuegos. ¿Pero por qué autoproclamado? Pues porque hubo un tiempo cuando el dolar estaba más caro en el que empresas de videojuegos del primer mundo vinieron a México a buscar mano de obra barata. Como mi plan nunca fue tropicalizar juegos de smartphone chino ya hechos sino hacer mis propios juegos para PC Master Race, pronto me vi superado en número por un enorme enjambre de mano de obra barata con la autoestima disparada que no dejaban de proclamar lo profesionales que eran porque les pagaban por “trabajar en la industria” y mirarme para abajo aunque para ello tuvieran que arquear la espalda como en el juego de limbo. Acusándome de que yo no era nadie porque ninguna empresa respetable me daria ese tipo de “oportunidades”. Con el tiempo, el cambio de moneda y gracias a la coronación del Emperador, amado por todos, ocurrida en 2016. La mayoría de esos profesionales fueron echados o deportados de regreso al tercer mundo y hoy se ganan la vida manejando bases de datos, dando clases por horas o los más afortunados sirviendo de reclamo para que algún “pimp” del desarrollo de videojuegos le baje dinero a algún burócrata incuauto que no sabe como administrar los fondos destinados a fomentar la tecnología en el pais.

Y esos profesionalísimos en su tiempo me decian que yo no merecía declararme a mi mismo como programador de videojuegos porque mi nombre no aparecia en los créditos de ningún videojuego famoso. O al menos eso era lo que… mejor no doy más spoilers.

Para acabar pronto, será un programa de opinión, anécdotas y experiencias relacionadas con la programación que he vivido a lo largo de muchos años. Y si la Policia del Pensamiento me lo permite, también habrá bastante trolleo. Más o menos lo mismo que se ve en esta página. Pero como escuchar un audio es mucho más cómodo y versatil que leer para la mayoría de los mortales tengo la esperanza de que podré llevar la palabra del ensamblador a más creyentes. Además de que producir un podcast de menos de una hora me cuesta mucho menos recursos que escribir una nota típica en esta página.

¡Pero vas a abandonar todo como lo haces siempre!

Casi puedo escucharlos pensar esto mientras leen estas lineas. Así que, conociendo mis propias debilidades, he tomado medidas y monté una infraestructura para producir audios con un mínimo de inconvenientes. Y a cambio de retrasar la compra de una nueva computadora un par de meses conseguí el equipo de grabación más barato que encontré en las tiendas de música de mi ciudad. Por lo menos ya no me escucharé como el Zeratul Español de los videos antiguos. Y combinado con el sistema actual de manejo de espacio del Centro de Operaciones que describiré en otra entrada, tal equipo está listo para grabar en cualquier momento. Aunque lo más prudente es pensar el tema antes de grabar.

En cuanto al resto de la edición, todo se hace por linea de comando con archivos de proceso por lotes. Así que puedo dejar la máquina trabajando sola mientras el podcast se “ensambla”. ¿O acaso se imaginan a alguien como yo editando audio en una Mac con software de edición profesional supercaro? Además, la estructura que el podcast tiene de momento es de tres partes. La principal o el “main” es un audio especialmente preparado para ese capítulo. Escrito antes de grabar para minimizar lo más posible los errores de dicción. La segunda es una entrada de esta misma página leida en voz alta y la última una sección en la que aunque no escribo todo lo que voy a decir discuto sobre pequeños temas para inflar el podcast. Con el tiempo iré integrando más secciones.

De momento hay un único problema: El producto es audio puro. Para colmo, se me ocurrió poner ese audio en ivoox donde se me limita mucho la distribución a menos que pague. Por lo que tuve que subir también los archivos a youtube para que le llegue a más gente. Y ahí es donde salíó el problema del audio. Tuve que convertir los archivos MP3 a MP4 porque no se permite subir archivos que no sean de video. Para ello tuve que improvisar un sistema de generación de imágenes con código. De hecho el logo y las pantallas con la descripción de los segmentos no fueron dibujadas en un editor gráfico sino generadas con código. Y para que se vieran lo más retro posible corrí código de BASIC en DosBox en una resolución de 320×200. ¿O acaso pensaron que hice ese dibujo en una Mac con Photoshop y tableta Wacom? Yo no, pero no duden que más de uno de los reputados profesionales de la industria que ya les describí si lo haría así.

Esto trae a colación otro tema: El podcast será parte de una prueba de una cierta herramienta que nunca terminé y que se supone que generaría este tipo de productos gráficos siempre tan necesitados por nosotros los programadores cuadrados y aburridos. Así que conforme vaya avanzando el podcast verán que los materiales gráficos irán evolucionando como lo hacen las máquinas. Porque esa es una de las consignas tanto del podcast como de otros productos: La producción debe de tener el mínimo de mano de obra humana que sea posible. No quiero que se me vaya todo el dia haciéndolos ni mucho menos tener que pagarle a alguien para que los haga por mi. Esto último al menos por ahora.

Así que sin más, y porque esta página es el producto con má tráfico de todos los que tengo. Aquí están los links al podcast

Podcast Modo Protegido en iVoox

Podcast Modo Protegido en YouTube

julio 30, 2018 Posted by | Uncategorized | 3 comentarios

¿No tienes tiempo? La solución puedes encontrarla justo al despertar

–No confundas la falta de tiempo con la falta de atención–

Cierto sabio me dijo un dia que cada que alguien me dijera las palabras “no tengo tiempo” las cambiara por “no me importa”. De ese modo si alguien me dice que no tiene tiempo para descansar, ver a sus familiares o simplemente aprender algo sobre programación lo reinterpretara como que no le importa su salud, su buena relación con los demás y le da igual que las computadoras cambien porque como quiera le pagan. ¿Pero qué pasa cuando uno mismo quiere que el tiempo le rinda y no lo consigue? En esos casos el problema es otro: La distracción.

Toda mitologia tiene personajes capaces de distraer a los aventureros para que no cumplan con sus misiones o bien para aprovecharse de los viajeros incautos: Seres que con su canto atraian a los marineros, pequeños cambiaformas que le tomaban el pelo a quien se adentraba en el bosque o por supuesto el dios Maia de los antiguos hindues que podia manipular la percepción de la realidad de los humanos. Sin contar multitud de entes menores que hicieron que caminantes se perdieran para nunca ser encontrados con vida. Pues bien, en nuestros dias estamos rodeados por muchas cosas diseñadas para robarnos la atención tanto dentro del internet como en el mundo real. En cualquier momento podemos caer en una distracción que nos saque de lo que queremos o tenemos que hacer y para cuando nos damos cuenta pasaron muchas horas y no nos dimos cuenta ni de cómo.

¿Cuantas veces no les ha pasado que despiertan a buena hora pero para cuando logran salir de casa ya van tarde? O que llegan a casa a descansar y para cuando al fin logran pegar el ojo ya se hizo de dia? ¿Cómo podemos escapar de estas trampas hipnóticas que están en todos lados?
La respuesta es tan sencilla como sorprendente. O al menos es la solución que me funcionó a mi:

SNOOZE: Ese botón que parece tan inutil

sno

Toda la vida o al menos desde que nadie me despierta por la fuerza he usado un despertador aún en dias libres. Y todos los despertadores digitales que he tenido cuentan con un botón que hasta hace poco me parecia una reverenda idiotez: El botón Snooze. Su función es silenciar la alarma por 5 minutos. Pensaba que para dormir esos “cinco minutitos más”. ¿Pero para qué usarlo? Si quisiera dormir más iria a la cama 5 minutos antes. Lo que luego comprendí es que el botón snooze no es para dormir: ¡Es para mantenerse despierto!

De hecho la palabra snooze puede traducirse como estar adormilado o como cuando uno puede caer dormido en cualquier momento. La función de snooze nos obliga a mirar el reloj y a presionar un botón cada 5 minutos. Y ese espacio de 5 minutos nos parecerá de 5 segundos si caemos dormidos sin darnos cuenta o algo nos distrae.

En experimentos que he hecho he mantenido activo el snooze en un smartphone todo el tiempo entre que despierto y salgo a la calle. Hacer esto ha hecho que salga más temprano y también sirve a la hora de pasar tiempo en internet. Las redes sociales con sus clickbaits y publicaciones con miniaturas engañosas por no mencionar cosas vergonzosas que amigos del face que nunca nos hablan hacen públicas pueden hacer que el tiempo se nos escape sin que lo sepamos. Snooze nos regresa a la realidad al obligarnos a ver el reloj o por lo menos nos fastidiará hasta que lo apaguemos.

Otro momento algo menos intuitivo para usar el snooze es a la hora de leer. Parecería que una alarma que nos interrumpe cada 5 minutos y nos obliga a soltar el libro nos desconcentraria pero es todo lo contrario. Muchas veces al leer dejamos de prestar atención al texto y nos ponemos a pensar en otra cosas mientras nuestros ojos van y vienen por la hoja. otras veces directamente nos quedamos dormidos con el libro como almohada. Como cualquiera que haya leido un libro sin tener idea del esfuerzo mental que esto supone conoce.

En general no he encontrado casi ninguna actividad en la que este uso del snooze no traiga beneficios. Tal vez las únicas sean aquellas donde desviar la mirada y las manos por un segundo sea peligroso. Como el conducir un vehículo. O cuando necesitamos dormir, pero eso no tengo que aclararlo. Otro momento en el que tal vez sea mejor no usarlo es cuando debemos permanecer en silencio. Pero si el dispositivo tiene modo de vibración ese no es un problema. En casos así es mejor programar una alarma para que suene al terminar esa actividad peligrosa y luego continuar con el snooze.

Cuando uno hace esto logra un interesante efecto: La sincronización. Pues llega el momento en el que somos capaces de adelantarnos al sonido de la alarma y hasta lo anticipamos. Y esta actividad en si puede volverse hasta emocionante. Sobre todo porque nos hace más eficientes en un tiempo en el que la atención es una moneda que a cada oportunidad nos roban.

¿Y cómo descubrí esto? Digamos que he estado programando algo que en la categoría de app de productividad. Algo que me ayude a programar cuando estoy frente a la PC y que haga mi existencia más eficiente cuando esté lejos de esta. Por ahora no supera a una agenda de papel pero cuando lo termine será como… bueno. Mejor lo termino primero. Siempre comienzo cosas y en el mejor de los casos estas terminan siendo algo diferente a lo planeado, si hay suerte algo mucho mejor. Si no la hay caen en el olvido. Pero como dije en la entrada anterior el olvido se acabó. Pues a este proyecto ya le asigné su espacio en el Cementerio de los Sueños. Y ya lleva ahí más de dos meses.

junio 11, 2018 Posted by | Uncategorized | 3 comentarios

Regreso al Cementerio de los Sueños

–Mi plan para terminar las cosas que dejé inconclusas–

Hace poco me preguntaron por un par de notas escritas hace ya años. Una era sobre como los proyectos de programación que son olvidados se pierden para siempre y la otra es sobre un viejo problema que en su tiempo me hizo perder muchos buenos proyectos: Mi antigua incapacidad de mantener un proyecto a lo largo de meses o años. Es muy pronto para anunciar que ya resolví ese problema del todo. Pero ahora a casi dos años puse en marcha un mecanismo para resolverlo. ¡Si!¡Lleva dos años funcionando! Y se trata de lo que sale en la foto: El Cementerio de los Sueños.

csu2Al principio consideré llamarlo Muro de los Lamentos pero como hablar de temas relacionados con (((ciertas personas))) aunque sea en broma es bastante peligroso decidí cambiarle el nombre. La primera designación era porque se trataba de un muro donde pondría papeles sobre cosas que quería hacer y que me lamentaria de ellas hasta terminarlas. Pero también me basé para construirlo en tradiciones de otros lugares. Como la de las figuras que se les pinta un ojo al iniciar una tarea y el otro al terminarla, la de un árbol en la que los creyentes colgaban notas con sus intenciones a los dioses. Y otras ideas que saqué de otras costumbres antiguas recicladas por la cultura popular.

¿Y cómo funciona el Cementerio de los Sueños? Simple. Cada que quiero hacer algo que se que me va a tomar meses o años me invento un nombre para ese algo que quiero hacer, invento una imagen que lo represente y marco la fecha de inicio. Paso a un pequeño trozo de papel esos datos y lo pego en un sobre de cartón que luego clavo con tachuelas en una superficie donde se puedan clavar cosas. La figura que representa el sueño o lamento se dibuja incompleta y no es hasta que la tarea se cumple que la figura se completa y el sobre se sella. Ya sellado pasa a la Cripta de los Lamentos Silenciados. ¿Y qué hay dentro de los sobres? Pues dentro hay otros papeles que representan pequeños objetivos en que la tarea principal se divide. Los que saben de negocios llaman a estas cosas “milestones”. Cada uno de estos sublamentos como prefiero llamarlos tienen el mismo formato del lamento original: El objetivo menor, una imagen genérica incompleta, una fecha de inicio y un espacio para la fecha de finalización. Y como no siempre se tiene un plan definido con pasos establecidos desde el principio, estos pequeños subobjetivos se van agregando cada que es necesario. Obvio es posible que algunos se ignoren por completo por no ser indispensables para el objetivo final. Algo así como las misiones secundarias.

La idea original de este antes macabro y hoy poético invento es que cada cosa importante que quisiera hacer no cayera en el olvido. Sino que se convirtiera en una especie de fantasma que me observa al despertar, al tratar de descansar y antes de ir a dormir. ¿Y se ha logrado algo? Hasta ahora dos cosas que llevaba años sin terminar se han hecho gracias al Cementerio de los Sueños. La primera fue arreglar un problema con el servicio de internet que me estaba haciendo pagar de más. El otro fue la ampliación del propio cementerio. Pues al principio usé un pizarrón de corcho. Nunca encontré un pizarrón lo bastante grande para clavar en él todas las cosas que tal vez nunca terminaré. Al final descubrí que las placas de tablarroca sobrantes de la última remodelación del centro de operaciones resultaron mejores y más baratas que el pizarrón de corcho. Tal vez en el futuro cubra toda una pared con tablarroca para llenarla de cientas o miles de sueños/lamentos que tal vez nunca termine ni silencie.

¿Y qué sueños no cumplidos habitan en el Cementerio de los Sueños? No puedo mencionarlos todos porque no tengo espacio y porque algunos me averguenzo de no haberlos cumplido todavía. Pero puedo decir que todos se relacionan con la programación en mayor o menor medida. Así que no esperen encontrar sueños normies del tipo “Encontrar a alguien que gane más que yo para que me mantenga antes de que mi ADN se pudra” o alguna otra cosa que haga infelices a aquellos que tienen las necesidades más básicas resueltas.

Si bien todo tiene que ver con la programación hay proyectos que todavia no son funcionales pero que muchos creen que llevan años corriendo. Y eso es algo que no me enorgullece. Por otro lado todas las cosas dependen en buena medida de mi. Así que tapoco hay nada que esté por completo en manos de otros o que dependa demasiado de la suerte.

Por cierto, algo que va a poblar pronto este Cementerio de los Sueños es un plan que tengo para diversificar mis actividades. Tanto indie con herramientas juegomáticas y la falta de emprendedores del videojuego con dinero que recurrian a mi cuando no les quedaba de otra comienzan a incomodar mi estilo de vida. Así que prepárense para ver lo mismo que encuentran aquí en otros formatos. Ya si no consigo el sibarita nivel de vida que tenía antes mínimo me daré a conocer en círculos en los que aún nadie sabe de mi existencia. Por un tiempo no pondré todos los huevos en una única canasta. Espero no volverme yo mismo un residente permanente de mi propio Cementerio de los Sueños.

 

junio 2, 2018 Posted by | Uncategorized | Deja un comentario

Por qué no hay que usar pixeles como unidad de medida

–Si no usas medidas reales inventa la tuya–

Uno de los recuerdos que tengo de cuando apenas comenzaba a programar se remonta a los años noventa en la que vi la presentación de un cierto plataformas 3D muy famoso por esa época. Entonces apenas entendía como dibujar lineas y polígonos en pantalla y como todo principiante usaba los pixeles como unidad de medida. Hasta que vi ante mi algo que entonces creía que era imposible de programar: ¡Un cambio de resolución a mitad del gameplay! Y no cualquier cambio. Sino uno que entraba de modo instantaneo al seleccionar la opción en un menú al pausar la acción. Sin relecturas de archivos, bajadas de respuesta del control y con una baja de framerate apenas perceptible en los modos de resolución más altos. ¿Pero por qué me pareció algo tan impresionante? Ahora les contaré.

Hasta ese entonces, nunca habia visto un juego que cambiara de resolución de modo tan sencillo. Por lo menos era necesario reiniciar la partida o si lograban correr bien las imágenes se mostraban achaparradas y deformes dejando el juego injugable. Esto último lo recuerdo con el primer Quake que al ponerlo en otro modo que no fuera el viejo 320×200 dejaba a los monstruos como enanos hechos con cartones de leche. Además de que los mensajes escritos eran ilegibles.

Y esos cambios de resolución tan bien hechos iban más allá de cambiar la cantidad de pixeles en pantalla: Incluso podian variar el aspect ratio (la proporción entre el alto y ancho de la pantalla) al abrir y cerrar la toma sin deformar la imagen. Y hasta podian pasar la acción entre ventana y pantalla completa sin cortar el gameplay.

Eso mismo tardé en verlo en juegos 2D pero llegué a verlo años más tarde. Sobre todo cambios de escala y rotación (por software, no como los del SNES) sin que la imagen se “pixeleara”. Si acaso se le veian contornos borrosos al hacerle zoom. Esto por el antialias del que otro dia les hablaré en profundidad. Con el tiempo, cuando fui capaz de leer los signos arcanos en los que se escriben las ecuaciones entendí una verdad evidente: ¡Si esos juegos podian hacer esas cosas con los pixeles era porque en sus cálculos gráficos no tomaban en cuenta los pixeles!

O al menos no los tomaban en cuenta hasta el momento de mostrar la imagen final en pantalla. ¿Y entonces qué usaban? Eso lo veremos más adelante, pero como saben quienes han trabajado con programas de diseño asistido por computadora o CAD, es posible usar medidas del mundo real como pulgadas o milímetros en un modelo 3D y luego presentar imágenes de ese modelo en cualquier tipo de soporte, ya sea en pantalla o impreso. Este sistema se basa en transformaciones de coordenadas y sistemas ortogonales pero sólo se usa en 3D muy serio como el CAD. Aunque no dudo que algunos juegos poco optimizados lo utilicen. De eso ya hablé en la serie sobre 3D y tal vez profundice otro dia en otra nota. Pero antes de ver como podemos hacer lo mismo veamos por qué no debemos de usar pixeles como unidad de medida. Cosa que todos hemos hecho cuando principiantes.

Los pixeles no son lineales

p_01

Los pixeles cubren la pantalla como los mosaicos cubren un piso. A nivel abstracto son cuadros sin espacios entre ellos. Aunque dependiendo de la tecnología del sistema pueden ser puntos de luz. Y al igual que los mosaicos que cubren el suelo, los pixeles son bidimensionales. Tienen ancho y altura. Y aunque su ancho o altura por separado, suponiendo que no sean pixeles rectangulares puede usarse como medida en cálculos en vertical u horizontal todo se va al traste cuando las cosas comienzan a dar vueltas.

En esta imagen vemos un triángulo de 5 pixeles de base por 5 pixeles de altura. ¿Cuanto mide la diagonal? Según las matemáticas. Para un triángulo rectángulo cuya base y altura son iguales y sea un valor X (X es 5 en este caso) la diagonal mide X multiplicado por la raiz de 2. Que en este caso 5 por la raiz de dos seria aproximadamente 7.071 o una cosa insignificante más allá de los 7… ¿Pixeles?

¡Pero según la imagen la diagonal del triángulo mide 5 pixeles! ¿Ahora entienden por qué no deben usarse pixeles como unidad de medida? Piensen lo que pasaria con un segmento de linea que rotara por uno de sus extremos como lo hacen las manecillas del reloj. Si lo que queremos es que esa linea describa un círculo al rotar como lo hacen las verdaderas manecillas del reloj, la cantidad de pixeles de la linea variaria conforme gira. Por ejemplo si la linea es de 10 pixeles no siempre va a medir 10 pixeles. Sino que variará entre 7 y 10. Si siempre midiera 10 pixeles en lugar de un círculo, la linea barreria un área en forma cuadrada. O dependiendo del algoritmo una figura convexa de bordes irregulares. En este dibujo se muestra con puntos los pixeles de la linea que quedan dentro del círculo y con cruces los que quedan fuera de él si usamos pixeles. Aunque aquí la linea es de 9 pixeles porque no encontré una tapa que abarcara 10 cuadros en la hoja.

p_02

Otra razón por la que un programador no usa pixeles como unidad de medida es por supuesto por los cambios de resolución. Si usáramos pixeles para operaciones durante el juego tendríamos que cambiar todos los valores de las operaciones que las usaran con cada cambio de resolución. Por ejemplo si las dimensiones de los objetos en el juego se dan en pixeles tendríamos que tener un conjunto de dimensiones para cada resolución de pantalla que manejáramos. ¿Y si queremos actualizar el juego con imágenes de mayor calidad? No podríamos porque de hacerlo tendríamos también que modificar el código. Lo mismo si usamos pixeles para las distancias. Un personaje tardaría más en cruzar una pantalla de mayor resolución si no modificamos los valores de velocidad cada vez. O si diseñamos al personaje en una pantalla con un aspect ratio de 4:3, al verlo en una de 9:16 se vería más gordo. El único cambio que el jugador va a aceptar cuando le suba la resolución al juego es la mejora en la calidad de imagen. No quiere que las cosas se deformen, se hagan más lentas y mucho menos que el juego falle porque los valores que controlan la lógica no se actualizaron como debian. Si, ya se que una pantalla de mayor resolución tarda más en actualizarse y requiere imágenes más detalladas. Pero ni la RAM del PC Master Race del jugador ni el presupuesto de desarrollo son suficientes para tener sprites o texturas pensadas para todos los modos gráficos que existen.

¿Y si no se usan pixeles?¿Qué se usa?

Eso depende de las capacidades del sistema y las necesidades. Si estamos trabajando con cosas serias necesitamos una computadora con capacidades de punto flotante y usar medidas del mundo real como metros, pies, micras o lo que sea que el que paga demande. Pero si ustedes fueran ese tipo de público no estarian leyendo esto así que supongo que quieren hacer juegos para sistemas que requieren mucha optimización. Así que les revelaré uno de mis secretos confiado en que pocos van a poder implementarlo de manera decente: La unidad de medida dentro de un videojuego es igual a lo más pequeño que en tu juego exista.

Si bien este concepto no es por completo mio no he visto que alguien lo llame de alguna manera. Algunos lo llaman “character” como las letras de los sistemas de texto. En una antigua revista de videojuegos le llamaron el “medio paso”. Pero yo prefiero llamarle a esta unidad simplemente “u”. Es una unidad lineal. Para superficies y volúmenes manejamos “u^2” (u cuadrada) y “u^3” (u cúbica). ¿Y cuanto mide una “u”? Pues eso depende de lo que trate tu juego y la cosa más pequeña que exista en su universo. En un juego de plataformas y tiros como un Mega Man una “u” es lo que mide una bala de largo, una U^2 lo que ocuparia al estar sobre el suelo y una U^3 el espacio que ocuparia en un mundo tridimensional. Lo ideal es que el objeto más pequeño abarque lo más posible la medida de “u” aunque no la abarque por completo. Cosas más grandes pueden crearse como múltiplos de “u”. Por ejemplo un personaje en 2D puede estar hecho de 2 por 4 u’s cuadradas o tener parte del sprite fuera de los cuadros definidos por la unidad cuadrada “u”. Ese es el ejemplo de la imagen. Si queremos hacer un juego de estrategia entonces la unidad “u” sería la longitud de un soldado, un tanque podria ocupar digamos 2 por 2 “u” y una fortaleza varios cientos de “u” por lado.

p_03

Pero la unidad “u” no nada más sirve para medir distancias de manera confiable. También se usa para optimizar las colisiones. Si dividimos el terreno en U’s cuadradas como un tablero de ajedrez y hay dos objetos que abarcan como mínimo cada uno de esos cuadros completos ocupando el mismo cuadro lo más seguro es que estén tocandose y eso es muy sencillo de detectar con código (dejo eso como ejercicio para el lector). También ayuda a programar mallas de navegación al combinarse con un grafo y permite una más rápida construcción de los niveles. Pero sobre todo podemos cambiar resoluciones y modificar el arte como queramos. Mientras se respete la unidad “u”. Por eso en los juegos de tiempos del NES cosas como las balas y los items o power ups eran tan grandes. ¿O alguien creyó que un CPU de 8 bits que apenas si ejecutaba unas pocas miles de instrucciones por segundo podia correr algoritmos como el de cajas acotantes para las colisiones o de análisis de imagen para saber como estaban colocados los objetos unos respecto a otros?

Sea como sea no usen pixeles como unidad de medida. Los pixeles no van más alla de la entrada y salida de un programa. La lógica debe de ser independiente de ellos. Si están programando un editor gráfico conviertan las coordenadas de pixel de entrada en unidades “u” y luego al representar conviertan las unidades U a pixeles. No quiero que su juego tenga bugs y exploits tan tontos como esos en los que avanzas más rápido si te mueves en diagonal o personajes que se quedan atorados al pasar junto a una mesa porque la tocó sin querer con uno de sus pixeles. Luego no digan que no se los advertí.

 

mayo 11, 2018 Posted by | Uncategorized | 2 comentarios