Por lo tanto, estoy aquí en la asamblea de 2011 y se escuchó esta demostración: enlace
Es un solo archivo, dice eso en las reglas. Así que repito, ¿cómo han hecho esto para que quepa en un archivo tan pequeño?
Por lo tanto, estoy aquí en la asamblea de 2011 y se escuchó esta demostración: enlace
Es un solo archivo, dice eso en las reglas. Así que repito, ¿cómo han hecho esto para que quepa en un archivo tan pequeño?
Es basado en procedimientos . El contenido no está incluido en el exe, solo las reglas de cómo dibujarlo. Cuando se inicia, el programa dibuja lo que necesita en el tiempo de ejecución, no se procesa previamente ni se guarda de ninguna forma.
Este es el mismo método utilizado por Elite para crear un vasto universo de sistemas estelares, etc.
Es bastante sorprendente lo que es posible hoy usando la generación de procedimientos, creo que los juegos contarán con más de esto en el futuro.
Como dice @Gary Willoughby, es ampliamente procesal.
Además, existe una significativa codificación manual asm
, junto con un amplio conocimiento de cuántas ventanas / plataforma de sistemas de elección funcionan internamente.
También hay una categoría de demostración 4K, si quieres ver ejemplos más extremos de código compacto.
Algunos de los grupos de DemoScene lanzan sus demostraciones en línea, donde puedes descargarlas y reproducirlas si lo deseas.
También vea Wikipedia en la historia de DemoScene
Nota: muchas de las demostraciones causarán que su antivirus freak out . Básicamente, parece que casi todas las demostraciones usan archivos .exe empaquetados, y la mayoría de los grupos de demostración presentan sus propios empaquetadores. Desafortunadamente, debido a que muchas compañías de AV son deficientes, generalmente afirman que cualquier ejecutable binario empaquetado es un virus de algún tipo.
Como todos dicen, dependen en gran medida del código generado por el procedimiento, pero hay más información sobre esta demostración en particular. Si hace una pausa y observa algunos detalles, veamos, por ejemplo, esos muros: mira esos ladrillos y cómo la luz se refleja en ellos. Se ven naturales.
Esto se debe a que están utilizando muchos sombreadores de vértices y sombreadores de fragmentos para dar vida al contenido generado.
Pasé algo de tiempo tratando de entender cómo hacen esas cosas, y me sorprende con cada pieza de código que tomo de esas demostraciones.
Por cierto, al hacer esas demostraciones, también usan herramientas de compresión para comprimir aún más. Compruebe este proceso de compilación:
all:
nasm -f bin -o intro main.asm
nasm -f bin -o stub stub.asm
gzip -n --best intro
advdef -z -4 intro.gz
cat stub intro.gz > intro
chmod +x intro
rm intro.gz
rm stub
Hay una presentación de PowerPoint de cómo se realizó el renderizado en esta demostración específica. Esto solo no explica cómo encaja todo en 64 kilobytes, pero es la clave de cómo se creó la geometría en tan poco espacio.
También hay muchas lecturas interesantes en su blog sobre sus otras producciones de demoscene.
Como ya han dicho otros, mucho de esto se basa en activos generados por el procedimiento.
Hay otro elemento en él, que es la compresión. Las demostraciones de 4k y 64k utilizan compresores ejecutables altamente especializados. Los más famosos de estos son kkrunchy by farbrausch (para 64ks) y crinkler por TBC & Loonies (por 4ks). Además, las demostraciones modernas hacen un uso intensivo de los sombreadores, que son texto sin formato y, por lo tanto, se reducen considerablemente después de la compresión.
Ahora, en lo que respecta a la integración en los videojuegos, el problema principal es que todo esto lleva tiempo. La generación de contenido de procedimiento lleva tiempo, y la extracción del ejecutable requiere una gran cantidad de tiempo. Y la gente generalmente tiene más espacio en sus discos duros que tiempo para esperar a que se cargue el juego, por lo que no creo que veamos mucho de esto en juegos ampliamente disponibles en un futuro próximo.
Lea otras preguntas en las etiquetas assembly