Wiki

Cómo empezar a programar demos

¡De modo que finalmente has decidido lanzarte a la piscina de la programación demoscener! ¡La fama, el honor y la gloria te esperan! ¡Los gritos de éxtasis, los aplausos de todo un auditorio al presentar tus producciones en la pantalla grande...!

Bueno, no vayamos tan rápido. En esto, como en todo, es mejor ir paso a paso y sentar una buena base antes de atreverse con cosas más complicadas.
Vayamos a ello:

Lo básico

Quizá el primer paso sea asegurarse de tener conocimientos de programación. Aunque sean mínimos, pero que al menos conozcas los conceptos de función, variable, cómo se le da órdenes a un ordenador y todas esas cosas que si conoces algo de programación te deben estar pareciendo simplísimas ahora mismo. También vendría bien tener al menos unos conocimientos decentes de inglés, puesto que la mayoría de materiales de referencia están escritos en inglés.

Estos conocimientos de programación deberán ser de C, que es el lenguaje más utilizado en la demoscene. Sí, has leido bien: no hace falta programar demos en ensamblador en el siglo 21.

Y por supuesto, necesitas un compilador bien configurado, que funcione adecuadamente y sea capaz de producir ejecutables. Hasta que no consigas hacer esto, no pases al siguiente paso.

Elegir una librería gráfica

Una vez sepas hacer al menos un Hello world, puedes empezar a plantearte qué librería gráfica utilizar. Es decir, elegir entre OpenGL o DirectX. Para ayudarte en esta decisión, hemos preparado esta fabulosa tabla que te ayudará a elegir la mejor solución rápidamente:

Librería Multiplataforma Fácil
OpenGL
DirectX no no

Como ves, la decisión es obvia. Una vez hayas elegido OpenGL, te felicitamos. Existe una fantástica web con un montón de tutoriales paso a paso con nivel incremental de dificultad que te llevarán desde lo básico de OpenGL a lo más avanzado: los tutoriales de Nehe

En este punto no sólo es importante seguir los tutoriales sino también experimentar con ellos. ¿Qué pasaría si cambiaras tal parámetro por otro? ¿Y si probaras a añadirle tal cosa? La experimentación te ayudará a ver qué efecto tienen los cambios y, si rompes algo, a aprender a identificar los errores y resolverlos. O incluso puede que encuentres un resultado sorprendente y que además queda bien.

No te concentres en pasar las lecciones rápidamente. El objetivo no es ése, sino divertirte con lo que haces y aprender. No sirve de nada querer adelantar a marchas forzadas, puesto que así no sólo no harás una buena base, sino que quizá acabes con los conceptos confusos. Tómate tu tiempo y disfruta de tus nuevas habilidades con el código.

Montar tu primera demo

Cuando ya más o menos entiendas como va OpenGL, es el momento de pasar por el Rito de Iniciación De Los Coders Sceners. Es decir: hacer tu primera demo con un cubo dando vueltas y con música sonando. Y para delirio total del personal, con una textura en cada cara del cubo.

Esto, que a primera vista parece simplón y sencillísimo, tiene su intríngulis en cuanto te pones a ello. Hasta ahora sólo te habías preocupado de hacer que saliera algo en la pantalla, pero la música es algo totalmente nuevo. ¿Cómo se hace eso? ¡Tranquilidad! No tienes que programar un reproductor de música. Afortunadamente, existen librerías que te permiten cargar un MP3, OGG o un módulo de música y reproducirlos, de modo que tú sólo tienes que seguir pensando en las cosas que salen en la pantalla. ¿Y las texturas, te preguntarás? Pues también existen librerías para leer imágenes de disco. Sigue leyendo:

Librerías de música

Hoy día las librerías más usadas son BASS y Fmod, aunque algún que otro valiente se programa sus propios reproductores, pero son las excepciones que confirman la regla.

La ventaja de BASS frente a Fmod es que ofrece una reproducción mucho más fidedigna de los módulos. En contrapartida, si sólo vas a utilizar MP3 u OGG's, fmod tiene soporte para más plataformas, lo cual puede hacerte la vida más fácil si quieres poder compilar tus demos en cualquier plataforma.

A grandes rasgos, éste es el guión que debes seguir para integrar la librería con tu programa:

  1. Inicializar el sistema de audio del ordenador, utilizando las funciones de la librería. Si falla, soltar un mensaje de error (a ser posible con sentido, las librerías suelen tener una función para obtener una cadena con la descripción del último mensaje de error) y terminar la ejecución. No tiene sentido ver una demo sin música.
  2. Cargar la canción. Si falla, lo mismo que antes. Di por qué falla y sal. Esto puede ayudarte incluso a tí mientras desarrollas la demo. El fallo más común en este punto suele ser debido a que la ruta de la canción sea incorrecta y la librería no pueda cargarla porque no la encuentra.
  3. Ordenar a la librería que comience a reproducir la canción
  4. Entra en el bucle de dibujado para pintar tu demo
    1. Por cada frame, lees el tiempo actual de la canción, utilizando la función de la librería. Esto te asegura que no se desincronicen las imágenes respecto al audio.
    2. En cada frame también puedes comprobar que la canción no haya acabado aún. Si se diera ese caso, debes salir del bucle y finalizar la ejecución de la demo.
  5. No te olvides de utilizar las funciones de la librería para desinicializar el sistema de audio y descargar la canción. Una vez olvidé hacer esto y fui sometida a la vergüenza y escarnio público ante toda la audiencia cuando salió un gran mensaje de error de Windows por culpa de haberme saltado este paso.

¡Y ya está! Sí, es así de sencillo.

¿Qué canción uso? ¡No soy músico!

No te preocupes, hay un montón de música en la red que puedes utilizar para tus fines no comerciales. Por ejemplo, puedes preguntar en nuestros foros y alguien probablemente te ofrezca alguna canción. O buscar en tito Google canciones con licencia Creative Commons. La mayoría de músicos que publican en internet estarán encantados de que sus canciones sean utilizadas, a condición de que los cites o enlaces.

Échale ingenio y un poco de amabilidad, y en un plis tendrás una canción decente.

Cargar imágenes

Para este caso, lo mejor es utilizar imágenes TGA. Estas imágenes tienen la ventaja de que son muy fáciles de cargar y hay muchos ejemplos de funciones que cargan TGA's por internet. Si has seguido los tutoriales de Nehe, habrás visto que tiene una función llamada LoadTGA que hace exactamente esto. Así que este problema también está resuelto.

Rizando el rizo

Vale, supongamos que tienes finalmente el cubo dando vueltas (utilizando como parámetro para el sin y cos el tiempo actual de la canción que estás leyendo de la librería en cada frame), y tienes una textura en cada cara (seis en total).

Los overlays

¿Qué tal si ahora le añades una textura por encima con el nombre de tu grupo? ¿Que no tienes grupo? ¡No importa! Puedes inventarte uno al azar. Para estas cosas va muy bien la búsqueda de páginas aleatorias en la Wikipedia. Si no te gusta esta opción, puedes utilizar el clásico recurso de TuNombreONick-Soft. Por ejemplo: PepeSoft, MariSoft, etc... Eso sí, si te llamas Micro, aquí hay un ligero problema y será mejor que recurras a las páginas aleatorias.

Una vez decidido el nombre de tu grupo, abre tu programa de edición gráfica favorito y haz un gráfico que ponga el nombre del grupo y el nombre de la demo. Guárdalo como TGA con transparencia y haz que aparezca por encima del resto de imágenes de la demo.

Da igual que no seas un grafista y que el resultado sea feo de narices, lo importante es que sepas cómo generar y utilizar TGAs con transparencia, porque te servirán de mucho más adelante.

A este tipo de imágenes que se muestran ocupando toda la pantalla se les llama overlays en el argot scener (y no tan scener).

Introducir variación

Sabemos que estás orgulloso de tu cubo dando vueltas, pero quizá sea un poco excesivo verlo durante tres minutos (o lo que dure la canción). La clave para una demo de éxito es enganchar al público, y para eso, hay que evitar que se aburra. O en otras palabras, debes introducir cambios en la demo. Los programadores expertos solucionan este problema mostrando escenas diferentes, y cambiando entre ellas según sugiere la música, pero como estás empezando, puedes optar por simplemente cambiar algún parámetro de la escena cada cierto tiempo.

Como estás obteniendo el instante actual de la canción en cada frame que pintas, puedes utilizarlo para decidir cuándo cambiar cosas. Por ejemplo: cada 30 segundos, alternar la escala del cubo. Grande / pequeño / grande / pequeño, etc...

Añadir más efectos

Pero ... ¿qué efectos? Pues lo más fácil es que veas demos, intentes analizar cómo han hecho un efecto que te guste, y trates de emularlo. No pasa nada si al principio no te sale (es lo más probable), pero como pasa con las lecciones de Nehe, al probar y experimentar obtendrás resultados inesperados y puede que acabes con algo que no tiene nada que ver con lo que buscabas inicialmente.

Hay páginas que clasifican y nombran los efectos sceners. Otras no se contentan con listarlos, sino que además proporcionan código para emularlos. Tienes algunos ejemplos en los tutoriales de Nehe (por ejemplo el radial blur).

Algunas cosas que NO debes hacer

  • Tratar de montar un superhiperultramotor gráfico de la megamuerte en la primera semana de empezar como coder scener.
  • Preocuparte de cosas como el rendimiento de N millones de polígonos en el futuro, cuando aún no sabes ni cargar modelos 3D. (A esto se le llama a veces optimización prematura).
  • Empezar por programar un editor de demos capaz de cargar todo tipo de imágenes, todo tipo de modelos, todo tipo de todo, y que casi haga las demos el solito. Está bien ir haciéndote tus propias utilidades según vayan haciéndote falta, pero es una tontería programar las utilidades antes de que te hagan falta. Cuando las hayas acabado (si las acabas), se te habrán quitado las ganas de seguir programando.
  • Avergonzarte de tu ignorancia. Nadie nace enseñado, y menos aún sobre el oscuro arte de la demoscene. No dudes en preguntar a merlucin todas las dudas que Google no sea capaz de resolverte.

Conclusión

Como ves, hacer una demo no es tan difícil si sabes los pasos que hay que seguir y tienes un poco de paciencia. En realidad, he hecho trampa con este tutorial y he simplificado algunas cosas, pero ya las irás descubriendo según lo necesites.

Los pasos para aprender más sobre programación en la demoscene se reducen a:

  • Ver muchas demos, fijarse en lo que sale y preguntarse cómo hacer lo mismo con los conocimientos con los que contamos. Si no son suficientes, aprender más.
  • Hablar sobre demos. En los foros, en el chat, en una party, en un pub meeting. Si tienes ocasión de hablar con el programador de una demo que te hace gracia, pregúntale como hizo tal o cual efecto. Te sorprenderá la de cosas que se pueden aprender en diez minutos de conversación.
  • Investigar y programar. Echarle muchas horas y paciencia, buscar en Google, leer los foros y el wiki, usar el buscador si no encuentras algo, ya sabes.
  • Ver cosas que no son demos. Si todo el mundo viera sólo demos, no avanzaríamos nada y no tendríamos nada original. Puedes encontrar fuentes de inspiración en muchos otros sitios: películas, videoclips, diseño gráfico, la naturaleza, etc. Así aprovechas para despegar los ojos del monitor y darle un respiro al cerebro, y las ideas con la mente fresca circulan mejor.

¡Esperamos tu primera demo con impaciencia!

Esta página es el resultado del esfuerzo de los siguientes autores. El número entre paréntesis corresponde a la cantidad de versiones con las que cada usuario ha contribuido:

sole (1), merlucin (1)