Як це все може вписатися в 64kb?


45

Отже, я тут на зборах 2011 року, і там була демонстрація цієї демонстрації: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded

Це один єдиний файл, він говорить, що в правилах. Тому я повторюю: як вони зробили це, щоб вони вмістилися в такий невеликий файл?


Чи можна завантажити цю демонстраційну версію? Я хотів би побачити, як це працює при локальному запуску.
Девід

1
Так, ви можете знайти цю демонстрацію тут: ftp.untergrund.net/users/atzAdmin/fltatz_uncovering_static.zip
Samuli Lehtonen

Звичайно, є кілька мегабайт системних бібліотек, без яких ця річ не змогла б намалювати жодного багатокутника ...
hobbs

2
Як хтось, хто активно створює вставки на 64 КБ, я написав цю статтю: ctrl-alt-test.fr/?p=494 (Як можуть бути такі невеликі показники, що виробництво демосцену?). TL; DR: процедурна генерація, стиснення та багато додаткової роботи.
Лоран

1
@TeamUpvote Ні, це все C ++. Щоб піти нижче 12 кБ, потрібно позбутися стандартної бібліотеки. Якщо ви використовуєте Visual C ++, ви можете знайти приклади тут: github.com/laurentlb/Ctrl-Alt-Test/tree/master/F та iquilezles.org/code/framework64k/framework64k.htm .
Лоран

Відповіді:


39

Це ґрунтується на процедурі . В контент не входить вміст, лише правила, як його намалювати. Після запуску програма звертає увагу на те, що їй потрібно під час виконання, а не попередньо виводитись і не зберігатись у будь-якій формі.

Це той самий метод, який використовував Еліт для створення величезного Всесвіту зоряних систем тощо.

Досить дивовижно, що можливо сьогодні, використовуючи процедурне покоління, я думаю, ігри в майбутньому будуть демонструвати більше цього.


Я просто подумав, що текстури досить точні. Тож вони просто малюють його з кодом і без будь-яких файлів текстури, я думаю?
Самулі Лехтонен

1
Так, правильно.
Gary Willoughby

1
Для таких типів демонстрацій звук також генерується з коду (без зразків). Все синтезується з льоту ... і, звичайно, деякі кредити та згасаючі сцени дозволяють отримати важкі попередні обчислення :)
Karoly Horvath

2
Будучи колишнім 3d-художником, я давно хотів, щоб процедури, створені згенерованих процедурами, були включені в стандартний набір інструментів в основних програмних програмах 3d-мистецтва. Можливо, найближчим є використання вбудованої мови сценаріїв ....
Darknight

Можливо, вас зацікавлять такі матеріали, як Project Frontier та Procedural World , які є двома підходами до однієї проблеми через процедурну генерацію.
Kyte

10

Як стверджує @Gary Willoughby, це досить процедурно.

Крім того, існує суттєве ручне asmкодування, а також широкі знання про те, як багато вікон / платформи систем вибору працюють внутрішньо.

Також є демо-категорія 4K, якщо ви хочете побачити ще більш екстремальні приклади компактного коду.

Деякі з груп DemoScene випускають свої демонстрації в Інтернеті, де ви можете їх завантажити та відтворити, якщо хочете.

Змова
farb-rausch

Також дивіться Вікіпедію з історії DemoScene

Зауважте - багато демо-версій призведе до того, що ваш антивірус зникне . В основному, схоже, майже всі демонстраційні файли використовують запаковані файли .exe, і більшість демо-груп запускають власні пакувачі. На жаль, оскільки багато AV-компаній кульгають, вони, як правило, стверджують, що будь-який запакований бінарний виконуваний файл - це якийсь вірус.


1
Мені залишається цікаво, яку AV-компанію ви маєте на увазі, як навіть можливо, що не кульгає ...
Джеррі Коффін

+1 Дивовижні речі. Вони використовують API Nvidea або малюють безпосередньо на відеокарту?

1
Зазвичай вони встановлюють мінімальну рамку OpenGL і
запускають

3
Це серйозно вражаючі речі. Я думаю, якби я був на 15 років молодшим, це було б те, на що я б проводив свій вільний час.

Ось деякі демонстраційні демонстрації 2011 року: archive.assembly.org/2011
Samuli Lehtonen

4

Як кажуть всі, вони широко покладаються на створений процедурним кодом, але про цю демонстрацію є ще більше, якщо ви зробите паузу та перегляньте деякі деталі, давайте побачити, наприклад, ці стіни: подивіться, які цеглини і як світло відбивається на них. Вони виглядають природно.

Це тому, що вони використовують багато вершин шейдерів та фрагментів шейдерів, щоб повернути життя до створеного вмісту.

Я провів деякий час, намагаючись зрозуміти, як вони роблять такі речі, і вражаюся кожним фрагментом коду, який я захоплюю з цих демонстрацій.

До речі, коли роблять ці демонстрації, вони також використовують інструменти стиснення, щоб ще більше стиснути. перевірити цей процес компіляції:

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

3

Існує презентація PowerPoint про те, як було проведено візуалізацію в цій конкретній демонстраційній версії. Це само по собі не пояснює, як все вписується в 64 кілобайти, але є ключовим для того, як створена геометрія на такому невеликому просторі.

У його блозі є також багато цікавого, прочитаного про його інші демонстраційні постановки.


1

Як уже зазначали інші, багато цього залежить від процедурно створених активів.

До нього є ще один елемент - стиснення. 4k і 64k демонстрації використовують високо спеціалізовані виконувані компресори. Найвідоміші з них - kkrunchy by farbrausch (за 64ks) та криклер TBC & Loonies (за 4ks). Більше того, сучасні демонстрації широко використовують шейдери, які є простим текстом і, таким чином, стають значно меншими після стиснення.

Зараз, що стосується інтеграції у відеоігри, головна проблема полягає в тому, що все це потребує часу. Створення процедурного вмісту вимагає часу, а вилучення виконуваного файлу займає величезну кількість часу. І люди, як правило, мають більше місця на своїх жорстких дисках, ніж часу, щоб витратити на очікування гри, щоб завантажувати гру, тому я не думаю, що ми скоро побачимо багато цього у широко доступних іграх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.