Então, eu estou aqui na montagem 2011 e houve uma demonstração: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded
É apenas um arquivo, diz isso nas regras. Então, repito: como eles fizeram isso para caber em um arquivo tão pequeno?
Então, eu estou aqui na montagem 2011 e houve uma demonstração: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded
É apenas um arquivo, diz isso nas regras. Então, repito: como eles fizeram isso para caber em um arquivo tão pequeno?
Respostas:
É baseado em procedimentos . O conteúdo não está incluído no exe, apenas as regras de como desenhá-lo. Quando iniciado, o programa desenha o que precisa no tempo de execução e não é pré-renderizado ou pré-salvo de qualquer forma.
Este é o mesmo método usado pela 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 apresentarão mais disso no futuro.
Como @Gary Willoughby diz, é extensivamente processual.
Além disso, há uma asm
codificação manual significativa envolvida, juntamente com amplo conhecimento de quantos sistemas de janelas / plataformas de escolha trabalham internamente.
Há também uma categoria de demonstração em 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.
Veja também a Wikipedia sobre a história do DemoScene
Nota - muitas das demos farão com que o seu antivírus surte . Basicamente, parece que todas as demos usam arquivos .exe compactados e a maioria dos grupos de demonstração lança seus próprios empacotadores. Infelizmente, como muitas empresas de antivírus são coxas, elas geralmente afirmam que qualquer executável binário compactado é algum tipo de vírus.
Como todo mundo está dizendo que confia amplamente no código processual gerado, mas há ainda mais sobre essa demonstração em particular, se você parar e olhar para alguns detalhes, vamos ver, por exemplo, essas paredes: veja essas peças e como a luz reflete nelas. Eles parecem naturais.
Isso ocorre porque eles usam muitos shaders de vértice e shaders de fragmento para dar vida ao conteúdo gerado.
Passei algum tempo tentando entender como eles fazem essas coisas e me sinto impressionado com cada pedaço de código que pego nessas demos.
BTW, ao fazer essas demos, eles também usam ferramentas de compressão para espremer 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
Há uma apresentação em 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 para como a geometria foi criada em tão pouco espaço.
Também há muitas leituras interessantes em seu blog sobre suas outras produções demoscenas.
Como outros já declararam, muito disso depende de ativos gerados processualmente.
Há outro elemento nele, que é a compactação. As demonstrações de 4k e 64k usam compressores executáveis altamente especializados. Os mais famosos são kkrunchy de farbrausch (por 64ks) e crinkler por TBC & Loonies (por 4ks). Além disso, as demos modernas fazem uso pesado de shaders, que são texto simples e, assim, ficam dramaticamente 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 processual leva tempo e a extração do executável leva uma quantidade enorme de tempo. E as pessoas geralmente têm mais espaço em seus discos rígidos do que tempo para esperar o jogo carregar, então não acho que veremos muito disso em jogos amplamente disponíveis em breve.