64kB демо, как они работают?

Я видел несколько программ, демонстрирующих потрясающие 3D-сцены с саундтреками, но меня шокировало то, что они все меньше 64 КБ! Как работают эти программы?

enter image description here

Ответы

Ответ 1

Они генерируют свой контент процедурно. то есть они не добавляют 3d-модели, растровые изображения, аудиофайлы на основе образца,... но генерируют это из кода или небольшого подробного представления.

Использование самоподобия (фракталов) и построение сложных данных путем объединения простых строительных блоков и формул обычно является ключом к компактному представлению.

Аудио может быть сохранено в каком-то формате midi, где хранятся разные заметки.

Текстуры генерируются с помощью комбинирования фильтров, фракталов,... google для "шума Perlin" для простого примера. Показывает, как создавать очень разные текстуры от шума perlin

3D-модели, вероятно, имеют некоторое геометрическое описание с использованием формул, а деталь добавлена ​​с методами, подобными процедурным текстурам.


И большинство из них используют некоторый распаковщик времени выполнения. т.е. ваш обычный исполняемый файл больше предела и сжимается с помощью exe-пакета. Демонстрации обычно не используют UPX, а специализированные упаковщики, которые имеют очень маленький загрузчик/распаковщик и могут даже утечка памяти (кто заботится о утечке памяти, если вы можете защитить несколько байтов).

Ответ 2

В тот же день они были написаны на ассемблере как COM. Были даже 16kb демо. Мне очень понравились эти демоверсии, и поэтому Ассамблея стала первым языком программирования, который я узнал. Мне никогда не удалось создать настоящую демонстрацию, но я смог создать вирус, который очистил мой жесткий диск. У меня нет исходного кода;)

Ответ 3

Это:

  • код без бесполезных (sic!) внешних библиотек (вы действительно должны знать, что вам нужно сделать),
  • компиляторы шейдеров, компрессоры и т.д.
  • функциональная 3D-графика и 2-мерные производители текстур (но детерминированные и постоянные, но связанные со многими параметрами),
  • процедурные производители звука (каждый раз каждый раз).

Примеры (примеры кода!) можно найти здесь:

http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/

Не будьте глупыми парнями - просто используйте google!!!