Tuesday, June 16, 2009

Como se creó la Extasik / Collapse & Necrostudios

Iba a hacer un post técnico sobre mi demo-engine, comentando tonterías que estoy haciendo, y las mil paridas que estoy aprendiendo a base de leer más libros de C++ (y darme cuenta que soy un pardillo de C++), pero como no estoy en casa, he preferido contar como surgió la que es, posiblemente, la producción de la que estoy mas orgulloso: la extasik.

Primero empecemos con el contexto de la producción en si:

katedra July 2006
e-fill April 2006
extasik March 2006
ifparty invitation'06 February 2006
xmo06 January 2006
siahtu December 2005

(Ripeado vilmente de pouet)

Como veis, fue una época realmente muy productiva, prácticamente a producción por mes, de las cuales la única que considero flojilla es la siahtu (a pesar que tenia mucho trabajo detrás, no quedo demasiado bien). En medio de todas estas producciones, esta la extasik.

En febrero de 2006, la gente de Bixo me invitaron a la Plugparty. Por ser demoscener no tenia que pagar entrada, pero insistieron que tenía que producir. La Plugparty era una party pequeña, con un publico mayoritariamente gamer, que se hacia en un pueblo tranquilo cerca de Lleida. Como al mes siguiente había la, también ahora, desaparecida ifparty, que organizaba, entre otros, slack, decidí matar dos pájaros de un tiro y hacer una invitación para tal party (diría, si mal no recuerdo, que fue slack quien me instó a hacerlo). Al final la prod dio la temática de la party, y quedó muy resultona. Lo importante es que fue posiblemente la primera colaboración seria con slack (no tendré en cuenta la grevox, ejem), aprendiendo a usar el sinte para sincronizar, tener en cuenta cuanto ocupa y que podía hacer.

Al mes siguiente había la ifparty, a la cual bajaba con los Bixo, y también tenia que llevar prod. Para cambiar mi sistema habitual de rellenar hasta llegar a 4k, esta vez decidí programar todo lo que quería en la prod, y luego sufrir bajándola hasta los 4k. Las inspiraciones principales para la prod fueron The S (que es la obvia) y la menos obvia, VHS. Quería una prod usando mucha sincro, rápida, y con 4 partes diferentes mínimo. Además quería postprods y algo de decoración a parte de lo mostrado en pantalla: evitar fondos negros y/o efectos "limpios", etc.

La prod la empecé hacia el día 6 de marzo, es decir, 2 semanas antes de la deadline. Durante la primera semana y media, se hizo toda la parte grafica, sin optimizar nada (a parte de ciertas obviedades), y sin música ni sincronismo. De hecho, como curiosidad, la prod la probaba con la música de la invitación de la ifparty, y no fue hasta la misma ifparty cuando slack hizo el track para la 4k. Entonces, el martes antes de la party, decidí que ya tenia todo el contenido que deseaba, y que era el momento de empezar a optimizar. Probé de comprimirla con crinkler, para saber cuanto me había pasado de 4k: la prod ocupaba algo menos de 6kb, si no recuerdo mal.

Bajar el primer kilobyte y medio fue un trabajo bastante lineal y divertido: eliminar redundancias, añadir secciones, quitar burradas, etc. Estuve 3 días casi sin dormir optimizando la producción, de hecho, la noche antes de ir hacia la party (diría que fuimos para allá el sábado por la mañana) no dormí nada. Justo cuando me venían a recoger en coche, la prod bajaba hasta los 4096 bytes (recuerdo estar bastante contento de tener la prod sin sincro ni música, pero cerca de algo presentable).

Acabar la producción en la party fue posiblemente la parte más divertida. Por una parte, me había comprometido con slack a dar una charla sobre las 4k que había/habíamos hecho hasta ese día (que funcionó bastante bien para ser una charla orientada a explicar tonterías internas de cada prod), y aun tenia que conseguir una canción de slack, sincronizar y pulir la prod: todo eso en unas 12 horas. Estuve optimizando mas cosas de la prod hasta el medio día, entonces me fui a comer con bastante gente de la party a un chino, mientras el pobre slack se quedaba en la party haciendo la música de la prod (igualmente se tenia que quedar, al ser organizador).

Cuando volvimos del chino, slack tenia un esbozo bastante final de la música, así que podía empezar a sincronizar y optimizar. Gran parte de la tarde se basó en hacer la sincro con la música y optimizar alguna cosa, aunque no salirse de 4k en este punto fue gracias a slack, pues le dejé muy poco espacio para la música. A media tarde dí la charla (explicar cosas sobre la charla es una historia para otro día), para después seguir con la prod.

Quizás la parte mas remarcable fue terminar la prod en si mismo. Como muchas veces pasa, cuando teníamos la prod terminada y por debajo de 4k, la probamos en la compo machine (que traía una ATI, como no) y el texto se veía mal. Corregí el bug, pero al corregirlo la prod volvió a subir: estábamos al límite de los 4kb, y al hacer cualquier cambio, la compresión de la prod no era tan eficiente y subía bastante (10 bytes, aproximadamente). El principal problema a esas horas es que la deadline era inminente. Por suerte, slack estaba muy liado montando las compos, y yo estaba al final de la sala de la ifparty. Lo que hice fue ir dándole largas (nos pasamos mucho rato pegando gritos de punta a punta), porque sabía que no se levantaría para recorrer los 20 metros, estando hasta arriba de responsabilidades. Así conseguí casi una hora más para terminar la prod, escribir el nfo, el diz, hacer screenshots, etc. Truquillos de party-coding que no viene mal saber :P

Finalmente, unas cuantas curiosidades:

- La llamamos extasik por la canción de Chimo Bayo. Luego le siguió la extanok.
- La escena final fue en principio una sala con columnas y un objeto central (hay un screenshot al final del post). Al final se cambió. La escena que sé usó al final, se referenciaba entre slack y yo como la escena de las tetas. Esto es una referencia oscura a la invitación de la ifparty06, donde la primera se referenciaba como la escena de las p*****.
- El texto que sale en las dos partes finales eran, en principio, el nombre completo de los dos grupos. Por motivos de tamaño se recortó.
- La mayoría de la prod la monté a 320x240, porque mi pobre portátil se moría con los postprods.
- Todos los objetos en la prod son cilindros. El sistema para pintarlo hereda de la grevox, la siahtu y una prod que nunca terminé.
- El fondo de las dos primeras escenas se reutilizó para la e-fill, pero sin rotarlo como hace en esta.
- Gran parte del código gráfico de la extasik se reutilizó para la extanok, por ejemplo la sala y el sistema de dibujado de cilindros.
- Unos meses más tarde, descubrimos el truquillo de truncar floats. La optimización en la extasik es principalmente refactorización de código.

Y unos screenshots de la prod a medio montar. Las imágenes no están desaturadas, el esquema de color lo metí cuando acababa la parte gráfica:







1 comment:

Jeketerri said...

Vaya, muy bonito a la par de educativo, yo estoy "aprendiendo" a programar en c++, pero no me puedo comparar a ningun demoscener español, ya que ni si quiera se programar los ejemplos de los libros, ahora mismo estoy leyendo un libra que se titula "c++ basico" de starbooks, y como no podia ser menos los codigos me empiezan a fallar, y eso que los calco a menos que sea un experimento :(, no se si lo has hecho (lo miro ahora) pero podrias recomendar algun libro para los que no sabemos nada, saludos y que continues picando codigo.