Демонстрации объемом 64 КБ, как они работают?

#3d #demoscene

#3D #демосцена

Вопрос:

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

введите описание изображения здесь

Комментарии:

1. @Cody Gray других файлов нет. Все это в одном исполняемом файле. Смотрите ответ CodeInChaos.

2. @Cody Я так не думаю. Обычно для демо с ограниченным размером размер исполняемого файла и всех ресурсов должен быть ниже предела. Есть некоторые различия в том, какие библиотеки среды выполнения вы можете использовать, но обычно они уже являются частью ОС.

3. @Cody потому что это больше не демоверсия размером 64 кб, если вы добавляете ресурсы, превышающие этот размер. И 64 кб — это уже одно из самых больших ограничений по размеру. Ограничения в 4-8 Кб тоже распространены.

4. @Cody В теме написано «демоверсии объемом 64 КБ». Таким образом, речь идет не только о программах, в которых основная программа оказывается небольшой. en.wikipedia.org/wiki/Demo_ (computer_programming) Поскольку многие демонстрации являются конкурсными, организатор устанавливает точные правила. Существуют определенные популярные ограничения, такие как 4 КБ и 64 КБ.

5. Возможно, «демонстрация 64 кб» — это известная концепция, но я ожидал бы увидеть некоторые теги platform language с этим.

Ответ №1:

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

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

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

Текстуры генерируются с использованием фильтров, фракталов, … google для «шума Перлина» для простого примера. Показано, как создавать самые разные текстуры из шума перлина

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


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

Комментарии:

1. «Может быть не» что?

2. @bjb568 Не спрашивай меня, что думал мой me 2011 года, когда писал это.

3. Я думаю, что это хорошая ссылка, чтобы открыть окно в этот мир: llg.cubic.org/docs/farbrauschDemos вместе с pouet.net

Ответ №2:

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

Ответ №3:

Они:

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

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

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

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

Комментарии:

1. Что ж, ваш первый пункт совершенно неверен в отношении выпусков для ПК на текущие даты. Они включают в себя полноценные библиотеки OpenGL или DirectX, а также дополнительные библиотеки по мере необходимости. Просто перейдем ко второму пункту: откуда берется шейдерный компилятор?

2. Привет, спасибо за комментарий. Я полагаю, вы хотите быть строго корректными. /// Да, извините. Не любые библиотеки, а только бесполезные, не нужные. Другой пример, многие люди используют целый пакет sth, например SFML, для проецирования, даже если им это не нужно. /// И, не могли бы вы в общих чертах объяснить свой вопрос? /// PS Я видел npl.de и я ценю! 🙂

3. О, мой вопрос был строго риторическим. Шейдеры должны быть скомпилированы на текущем оборудовании, что зависит от драйвера устройства (по крайней мере, в Windows). Таким образом, используется еще один большой блок иностранного кода. Это просто уже не то, что было в 4k во времена смены тысячелетия. Посмотрите несколько raving tomatoes от t $ того времени.