Como isso tudo pode caber em 64kb?

45

Então, estou aqui na assembléia de 2011 e houve essa demonstração: link

É apenas um único arquivo, diz as regras. Então eu repito, como eles fizeram isso para caber em um arquivo tão pequeno?

    
por Samuli Lehtonen 06.08.2011 / 23:39
fonte

5 respostas

39

É baseado em procedural . O conteúdo não está incluído no exe, apenas as regras de como desenhá-lo. Quando lançado, o programa desenha o que precisa, em tempo de execução, não é pré-renderizado ou pré-gravado de nenhuma forma.

Este é o mesmo método usado por Elite para criar um vasto universo de sistemas estelares, etc.

É incrível o que é possível hoje usando a geração procedural, acho que os jogos terão mais isso no futuro.

    
por 07.08.2011 / 00:04
fonte
10

Como @Gary Willoughby diz, é extensivamente processual.

Além disso, há significativa codificação asm da mão envolvida, além de amplo conhecimento de quantos sistemas / plataformas de sistemas de escolha funcionam internamente.

Há também uma categoria de demonstração 4K, se você quiser ver exemplos ainda mais extremos de código compacto.

Alguns dos grupos DemoScene lançam suas demos online, onde você pode baixá-las e reproduzi-las, se quiser.

Conspiração
farb-rausch

Veja também Wikipedia sobre a história da DemoScene

Nota - muitas das demonstrações farão com que o seu antivírus . Basicamente, parece que todas as demos usam arquivos .exe compactados, e a maioria dos grupos demo cria seus próprios compactadores. Infelizmente, uma vez que muitas empresas de antivírus são coxas, elas geralmente alegam que qualquer executável binário compactado é um vírus de algum tipo.

    
por 07.08.2011 / 07:28
fonte
4

Como todo mundo está dizendo, eles confiam muito no código procedural gerado, mas há ainda mais sobre essa demonstração em particular, se você parar e olhar alguns detalhes, vamos ver, por exemplo, as paredes: visse os tijolos e como a luz reflete neles. Eles parecem naturais.

Isso porque eles estão usando muitos vertex shaders e fragment shaders para dar vida ao conteúdo gerado.

Eu passei algum tempo tentando entender como eles fazem essas coisas, e me surpreendo com cada código que eu pego dessas demos.

BTW, ao fazer essas demos, eles também usam ferramentas de compactação para compactar ainda mais. verifique este processo de compilação:

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
    
por 09.08.2011 / 01:35
fonte
3

Há uma apresentação do PowerPoint de como a renderização foi feita nesta demonstração específica. Isso por si só não explica como tudo se encaixa em 64 kilobytes, mas é a chave de como a geometria foi criada em um espaço tão pequeno.

Há também muita leitura interessante em seu blog sobre suas outras produções demoscene.

    
por 04.06.2013 / 09:40
fonte
1

Como outros já afirmaram, muito disso depende de ativos processualmente gerados.

Existe outro elemento, que é a compressão. As demonstrações de 4k e 64k usam compressores executáveis altamente especializados. Os mais famosos são kkrunchy por farbrausch (por 64ks) e crinkler por TBC & Loonies (por 4ks). Além disso, os demos modernos fazem uso pesado de shaders, que são texto simples e, portanto, ficam drasticamente menores após a compactação.

Agora, no que diz respeito à integração em videogames, o principal problema é que tudo isso leva tempo. A geração de conteúdo procedural leva tempo e a extração do executável leva muito tempo. E as pessoas geralmente têm mais espaço em seus discos rígidos do que o tempo gasto para esperar que o jogo seja carregado, então não acho que veremos muito isso em jogos amplamente disponíveis tão cedo.

    
por 09.08.2011 / 11:11
fonte

Tags