2011-06-07 5 views
6

¿Cómo es posible que en un 64kb compiled exe, estos programas pueden generar visuales locos, con la música correspondiente?¿Qué idiomas o métodos permiten que las demostraciones de gráficos y música entren en 64kb EXEs?

Un ejemplo: Ars Nova By Phantom Lord (YouTube video of the demo running)

de solamente 64 kb de tamaño Este programa! ¿Cómo hicieron eso?

¿Están utilizando algún tipo de objetos preexistentes, sombreadores, etc. dentro de DirectX o algo así?

¿Qué idiomas incluso usan? ¿Hay algún tipo de guía para esto?

+1

Estoy seguro de que no se trata de programar como se pensaría ... probablemente en un programa de edición de películas o en 3D, y luego exportado a un formato ejecutable de Windows. – Cole

+0

@Cole no puede ser porque muchas de las demos al crédito dicen codificadas por ..., y tal vez haya un editor, pero esto es una compresión masiva, ¿cómo es posible? Por qué nadie más hace esto:/ – Synxmax

+1

Para aquellos que no lo hacen Me gusta descargar ejecutables de Internet para contestar las preguntas de StackOverflow, hay un video aquí: http://www.youtube.com/watch?v=odAIAfPEgmM – HostileFork

Respuesta

5

demostraciones de 64 K como la que vinculó guardar espacio por procedurally generating texturas y modelos. Module files se usan típicamente para la música, y la mayoría de los instrumentos se sintetizan en código.

Ese es el punto principal. Siempre que sea posible, generan cosas usando código en lugar de almacenar los datos explícitamente. (Y cuando almacenan cosas explícitamente, está muy comprimido).

Executable compressors y otros trucos se utilizan para minimizar el tamaño del código compilado.

Desafortunadamente, las demostraciones raramente se lanzan con el código fuente. Encontré una colección de some demo sources on scene.org, pero no he revisado ninguna de ellas.

No hay muchas guías exhaustivas que yo sepa, pero existen guías para varios temas diseminados por la web. The Hugi Magazine es una buena fuente de tales artículos, en particular yo recomendaría revisar Special Edition #1 ya que contiene muchos artículos de demostración de codificación.

2

El código principal en sí genera texturas y sonido y todos los objetos de demostración. Fractales, deformaciones, uso extensivo de objetos ya generados (en la línea de tiempo de demostración) y algunas otras técnicas se utilizan para la codificación algorítmica compacta de objetos. Entonces el código se compacta usando exe-compressors. También se usan algunas técnicas muy no triviales para minimizar el tamaño del código.

Véase también subculture alrededor de esto.

+0

no son solo fractales algunos modelos no pueden, por ejemplo, humanos, automóviles, modelos de ajedrez, ... en el ejemplo, los movimientos de la cámara con la música coinciden, incluso un algoritmo matemático que puede generar un modelo humano es mucho más grande que estos pequeños archivos – Synxmax

+2

No dije que todo fuera solo fractales. Recuerde acerca de la compresión, que también puede optimizarse específicamente para los datos. Es difícil de creer, pero la mayoría de las demostraciones se generan mediante programación, ver: http: //en.wikipedia.org/wiki/Procedural_generation –

3

Es una demo genial, y me alegra que la gente siga haciendo este tipo de cosas ... pero no diría que haya 'magia' en el trabajo.

En términos del "ADN" de los objetos, no hay nada demasiado detallado aquí. Cubos, un coche de carreras, piezas de ajedrez, canicas esféricas, torsos. Son más o menos libres para elegir qué modelos quieren comprimir bien ... o para descartar cualquier detalle que no se comprima bien. La falta de expectativas o el cumplimiento de algún tipo de especificación funciona a su favor, aquí. Incluso pueden ordenar objetos en una biblioteca 3D por tamaño e ir "Oh, ese es pequeño pero aún se ve bien, usemos que". :)

Hay muchas maneras de complicar el tamaño del código si te vas a poner complicado. He encontrado que esto es una lectura interesante:

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Pero dudo que van a obtener de fantasía que con esto. Probablemente estén simplemente evitando dependencias y codificaciones innecesarias a un nivel bastante bajo.El sentido común y la compresión ejecutable puede hacer aumentar el tamaño hacia abajo un poco:

http://en.wikipedia.org/wiki/UPX

Música para cosas como esto normalmente se hace con un "tracker", y los archivos son más en la escala del tamaño de un archivo MIDI que un MP3. Las rutinas de reproducción son bastante pequeñas ... éste llamado "MiniFMod" puede reproducir archivos XM y afirma que añadir simplemente 5K al tamaño de su EXE:

http://www.fmod.org/index.php/download#FMODMini

La sincronización con la música no es realmente un problema técnico tanto como uno de elección artística. La demo, presumiblemente, se acelera para funcionar a una velocidad constante ... y la música toma el mismo tiempo para tocar cada vez.

+0

gracias por la información pero aún hay muchas cosas detrás de esto, mira esto, no puedo creerlo http://www.scene.org/file.php?file=/demos/ groups/farb-rausch/fr08_final.zip & fileinfo – Synxmax

+1

@Synxmax: FR-08 cambió el juego en el mundo de las demos de 64K, pero si lo examina detenidamente, notará que la mayoría, si no todos, los modelos están construidos a partir de formas geométricas simples, la música y las escenas se reutilizan en gran medida a lo largo de la demostración, y las texturas también son bastante simplistas. – hammar

+2

@Synxmax: También me impresionó este tipo de cosas cuando era más joven, y al ver el demoscene finlandés por primera vez. Las cosas de Future Crew etc. parecían imposibles. Todavía creo que es limpio, pero es muy posible ... y hecho por seres mortales como tú y yo ... :) Si la brevedad te interesa, puede ser instructivo para ti echar un vistazo a los ejemplos de "Code Golf" solo para entrar en la mentalidad de cómo el pensamiento externo puede causar un ahorro de orden de magnitud en el tamaño del código: http://codegolf.stackexchange.com/faq – HostileFork

0

hay competiciones de montaje desde el comienzo de la computación. Como cualquier competencia, creas trucos y esos trucos encontraron la referencia para esa competencia.

el lenguaje usado generalmente es el lenguaje de ensamblaje (el lenguaje más cercano a la máquina después del binario ...) Por qué es llamado el más cercano a la máquina después de binario. Debido a que involucra administraciones complejas de memoria, un conjunto complejo de instrucciones para llegar a un dispositivo, etc.

Cuestiones relacionadas