3 puntos por GN⁺ 2024-01-25 | 1 comentarios | Compartir por WhatsApp

Cómo hacer una película animada en 8 kB

  • En noviembre de 2022, comenzó el reto de crear una animación en tiempo real dentro de un límite de 8 kilobytes.
  • El objetivo era incluir gráficos de buena calidad, animación, dirección, trabajo de cámara y música.
  • En abril de 2023, tras varios meses de trabajo, terminó y publicó "The Sheep and the Flower".

Resumen general

  • El resultado es un ejecutable de Windows, y todos los elementos visuales usan shaders GLSL calculados en tiempo real por la GPU.
  • El renderizado usa la técnica de raymarching, y los shaders se reducen con la herramienta Shader Minifier.
  • La música fue compuesta con OpenMPT y el sintetizador 4klang; los instrumentos se describen de forma procedural y la lista de notas se comprime.
  • El código fue escrito en C++ y usa el framework Leviathan para iniciar los flags del compilador y la inicialización.
  • La salida final se comprime con Crinkler.

El comienzo de la creación

  • El proyecto comenzó inspirado por un video llamado "Capoda" que un excolega había compartido hace mucho tiempo.
  • Este proyecto podía ser un buen ejemplo de size coding con una historia adecuada para 8 kB.
  • Le resultó interesante un nuevo desafío distinto de cuando apuntaba a 64 kB.

Renderizar un mundo con dos triángulos

  • Se dibuja un rectángulo que cubre toda la pantalla (dos triángulos) y se ejecuta un programa de GPU escrito en GLSL (shader) para calcular el color de cada píxel y de cada frame.
  • La escena se representa como un campo de distancia con signo, y se convierte en píxeles usando raymarching.

Dirección

  • Hubo una reflexión sobre cómo transmitir la historia y expresar emociones con personajes y animaciones limitados.
  • Se eliminaron los elementos innecesarios para la historia y se puso el foco en el detalle, la dirección, la edición y la sincronización con la música.
  • Se usaron técnicas de trabajo de cámara y narrativa visual para transmitir emociones.

Proceso de desarrollo

  • El código fuente incluye muchas constantes hardcodeadas, y cada una se decidió tras varias iteraciones.
  • Para tener un ciclo de retroalimentación rápido, se recompilan los shaders en tiempo de ejecución.
  • Se necesitaba un reproductor útil para trabajar en la animación y el control de cámara.

Música

  • La música adecuada para la historia requería varias secciones y transiciones en momentos específicos.
  • La música se compuso con el sintetizador 4klang, y los datos se comprimieron para ahorrar espacio.

Animación y sincronización

  • Todo en la demo se reevalúa en cada frame, y está compuesta por unas 25 tomas de cámara hechas manualmente.
  • Al crear cada toma, se describe cómo cambia con el tiempo cada parámetro de la cámara.

Texturas y materiales

  • A diferencia de un renderizador tradicional, se calculan y usan texturas 3D en tiempo real.
  • Las texturas de elementos como las señales de tráfico se generan combinando varias funciones.

Ojos

  • Al inicio del desarrollo, los ojos se veían apagados e inanimados, pero eran importantes como herramienta narrativa.
  • Se añadió luz reflejada en los ojos para darles vida.

Posprocesado

  • Para dar el toque visual final y definir la atmósfera de la historia, se usaron corrección de color, corrección gamma, viñeteado, filtros FXAA y más.

Compresión

  • Se adoptó un enfoque de generar datos con código en lugar de almacenarlos.
  • Se usó la herramienta de compresión Crinkler para hacer que el ejecutable pudiera autoextraerse.

Minimización

  • Se usó la herramienta Shader Minifier para hacer el código fuente del shader lo más pequeño posible.
  • Se añadieron nuevas funciones a Shader Minifier para minimizar y comprimir el código shader.

La guerra entre la oveja y la flor

  • ¿Crees que la guerra entre la oveja y la flor no es importante? Este tema, mencionado en "El principito", es una parte importante de la historia.

Conclusión

  • Este tipo de demo se basa en técnicas avanzadas necesarias para construirla y en investigación previa.
  • Espera que las nuevas funciones ayuden a otros a crear demos aún mejores.
  • La categoría de 8 kB ofrece más posibilidades que la de 4 kB, y espera que gane popularidad.

La opinión de GN⁺

  • Este proyecto es un ejemplo de cómo superar límites técnicos y desplegar creatividad para producir un resultado sorprendente.
  • La animación terminada dentro del espacio extremadamente limitado de 8 kB muestra la combinación de programación, optimización algorítmica y expresión artística.
  • El desarrollo de herramientas como Shader Minifier y el uso de la herramienta de compresión Crinkler destacan un enfoque innovador en ingeniería de software y compresión de datos.

1 comentarios

 
GN⁺ 2024-01-25
Opiniones en Hacker News
  • Opinión del autor original:

    • Como creador de la película original, le impresionó que el remake cupiera en 8 kB, en comparación con el original, que estaba compuesto por archivos de Blender, SVG y audio de tamaño en MB.
    • Lo menciona como un caso útil de uso de una licencia Creative Commons, y expresa que le gustaría que se usaran el personaje del erizo y la melodía del original.
  • Mención del Sloot Digital Coding System:

    • Hace referencia al Sloot Digital Coding System con la frase: "¡Sloot vive!!!".
  • Opinión sobre los videos de la demoscene:

    • Señala que los videos de la demoscene son divertidos y no reciben suficiente atención, a pesar de que más gente debería verlos.
    • Espera que canales como Retro Game Mechanics Explained expliquen bien la demoscene.
  • Análisis de la tecnología de la demoscene:

    • Comenta que, si uno ve y estudia muchas obras de la demoscene, llega a entender formas de hacer simplificaciones geométricas, como representar las patas de una oveja con forma de cono.
    • Menciona que la mayor parte de la demoscene depende de la aceleración 3D de la GPU, pero que las demos con estilo de animación 2D son raras, y en tamaños pequeños casi no existen.
    • Plantea la duda de si la animación 3D es más fácil que la 2D.
    • Añade que "mouton" significa "oveja" en francés, y que de ahí proviene "mutton".
  • Recuerdo del juego .kkrieger:

    • Aunque la parte técnica es distinta, le recordó a .kkrieger, un juego FPS 3D comprimido a 96 kB.
    • Dice que .kkrieger fue una obra interesante.
  • Recomendación de Cosmos Laundromat:

    • Aunque es más grande que 8 kB, recomienda Cosmos Laundromat de la Blender Foundation, una película animada inesperadamente oscura sobre ovejas.
    • Menciona que, para ser demos técnicas, suelen hacer películas con temas inusualmente oscuros.
  • Reacción positiva a la película:

    • La evalúa como una obra interesante y sorprendente, con un final impredecible.
  • Elogio a la creatividad:

    • Admira que hayan creado una historia creativa y entretenida dentro de esas limitaciones.
    • Quiere saber más sobre los detalles técnicos y los métodos usados para reducir la cantidad de bytes.
  • Recuerdo de Razor 1911:

    • La mención de "Razor 1911" le provoca pura nostalgia.
  • Información sobre la categoría de la demoscene:

    • Explica que 8 KB es una de las categorías de la demoscene y presenta a Pouet como un buen índice.