64 КБ демки, как они работают? - PullRequest
13 голосов
/ 21 мая 2011

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

enter image description here

Ответы [ 3 ]

18 голосов
/ 21 мая 2011

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

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

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

Текстуры создаются с использованием фильтров, фракталовГугл для "шума Перлина" для простого примера. Показывает, как создавать совершенно разные текстуры из перлин-шума

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


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

4 голосов
/ 21 мая 2011

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

2 голосов
/ 26 декабря 2014

Это:

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

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

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

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

...