web-dev-qa-db-fra.com

Comment tout cela peut-il s'intégrer dans 64 Ko?

Donc, je suis ici à Assembly 2011 et il y a eu cette démonstration jouée: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded

C'est un seul fichier, cela est dit dans les règles. Donc, je le répète, comment ont-ils fait en sorte que cela tienne dans un si petit fichier?

45
Samuli Lehtonen

Il est basé sur procédural . Le contenu n'est pas inclus dans l'exe, seulement les règles de dessin. Une fois lancé, le programme dessine ce dont il a besoin à l'exécution, il n'est pas pré-rendu ou pré-enregistré sous quelque forme que ce soit.

C'est la même méthode utilisée par Elite pour créer un vaste univers de systèmes stellaires, etc.

C'est assez étonnant ce qui est possible aujourd'hui en utilisant la génération procédurale, je pense que les jeux en proposeront plus à l'avenir.

39
Gary Willoughby

Comme le dit @Gary Willoughby, c'est largement procédural.

En outre, un codage manuel asm important est impliqué, ainsi qu'une connaissance approfondie du nombre de fenêtres/plates-formes de systèmes de choix qui fonctionnent en interne.

Il existe également une catégorie de démonstration 4K, si vous voulez voir des exemples encore plus extrêmes de code compact.

Certains groupes DemoScene publient leurs démos en ligne, où vous pouvez les télécharger et les jouer si vous le souhaitez.

Complot
farb-rausch

Voir aussi Wikipedia sur l'histoire de la DemoScene

Remarque - de nombreuses démos feront paniquer votre antivirus . Fondamentalement, il semble que toutes les démos utilisent des fichiers .exe compressés, et la plupart des groupes de démonstration roulent leurs propres packers. Malheureusement, parce que de nombreuses sociétés audiovisuelles sont boiteuses, elles affirment généralement que tout exécutable binaire compressé est un virus quelconque.

10
Fake Name

Comme tout le monde dit qu'ils s'appuient largement sur du code généré par la procédure, mais il y a encore plus sur cette démo en particulier, si vous vous arrêtez et regardez certains détails, voyons par exemple ces murs: regardez ces briques et comment la lumière se reflète sur eux. Ils ont l'air naturel.

En effet, ils utilisent beaucoup de vertex shaders et de fragment shaders pour donner vie au contenu généré.

J'ai passé n pe temps à essayer de comprendre comment ils font de telles choses, et je suis étonné de chaque morceau de code que je récupère de ces démos.

BTW, quand ils font ces démos, ils utilisent également des outils de compression pour presser encore plus. vérifiez ce processus de compilation:

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
4
Fernando Meyer

Il y a présentation PowerPoint de la façon dont le rendu a été effectué dans cette démo spécifique. Cela seul n'explique pas comment tout s'intègre dans 64 kilo-octets, mais est la clé pour la création de la géométrie dans un si petit espace.

Il y a aussi beaucoup de lecture intéressante dans son blog sur ses autres productions de demoscene.

3
msell

Comme d'autres l'ont déjà dit, une grande partie de cela repose sur des actifs générés par la procédure.

Il y a un autre élément, la compression. Les démos 4k et 64k utilisent des compresseurs exécutables hautement spécialisés. Les plus célèbres d'entre eux sont kkrunchy par farbrausch (pour 64ks) et crinkler par TBC & Loonies (pour 4ks). De plus, les démos modernes font un usage intensif des shaders, qui sont du texte brut et deviennent ainsi considérablement plus petits après compression.

Maintenant, en ce qui concerne l'intégration dans les jeux vidéo, le principal problème est que tout cela prend du temps. La génération de contenu procédural prend du temps et l'extraction de l'exécutable prend énormément de temps. Et les gens ont généralement plus d'espace sur leurs disques durs que le temps à attendre pour que le jeu se charge, donc je ne pense pas que nous en verrons beaucoup dans les jeux largement disponibles de sitôt.

1
Tarmil