#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 $ того времени.