Какие языки или методы позволяют размещать графические и музыкальные демонстрации в EXE-файлах размером 64 КБ? - PullRequest
6 голосов
/ 07 июня 2011

Как такое возможно, что в скомпилированном exe 64kb эти программы могут генерировать такие сумасшедшие визуальные эффекты в комплекте с подходящей музыкой?

Пример: Ars Nova By Phantom Lord ( видео с YouTube на демоверсии )

Размер этой программы 64 КБ !Как они это сделали?

Используют ли они какие-либо ранее существующие объекты, шейдеры и т. Д. Внутри DirectX или что-то в этом роде?

Какие языки они вообще используют?Есть ли какое-то руководство к этому материалу?

  • РЕДАКТИРОВАТЬ: Еще одно потрясающее демо.Как?

    http://www.scene.org/file.php?file=/demos/groups/farb-rausch/fr08_final.zip&fileinfo

  • РЕДАКТИРОВАТЬ: Больше демосцены.

    Я нашел какую-то ссылку на группу, которая делаети тому подобное, и они выпустили продукт с именем .werkkzeug1 и некоторые инструменты сжатия и аудио, но я до сих пор не могу понять, как это возможно.Они даже сделали игру в 96kb.

    theproduct

Ответы [ 4 ]

5 голосов
/ 07 июня 2011

64K демонстраций, таких как тот, который вы связали, экономят пространство за счет процедурной генерации текстур и моделей. Файлы модулей обычно используются для музыки, при этом большинство инструментов синтезируются в коде.

Это главное. Как только возможно, они генерируют вещи, используя код, а не хранят данные явно . (И когда они хранят вещи явно, они сильно сжаты).

Исполняемые компрессоры и другие приемы используются для минимизации размера самого скомпилированного кода.

К сожалению, демоверсии редко выпускаются с исходным кодом. Я нашел коллекцию некоторых демонстрационных источников на scene.org , но сам не проверял ни одного из них.

Мне не так много исчерпывающих руководств, но существуют руководства по различным темам, разбросанным по всему Интернету. Журнал Hugi является одним из хороших источников таких статей, в частности, я бы порекомендовал проверить Special Edition # 1 , так как он содержит множество статей для демонстрационного кодирования.

3 голосов
/ 07 июня 2011

Это классная демонстрация, и я рад, что люди все еще занимаются такими вещами ... но я бы не сказал, что на работе есть какая-то "магия".

С точки зрения "ДНК" объектов, здесь нет ничего слишком подробного. Кубики, гоночная машина, шахматные фигуры, сферические шарики, торсы. Они могут свободно выбирать, какие модели они хотят, чтобы они хорошо сжимались ... или выбрасывать детали, которые не сжимаются хорошо. Отсутствие ожиданий или соответствие каким-то спецификациям работает в их пользу, здесь. Они могут даже отсортировать объекты в 3D-библиотеке по размеру и сказать: «О, это маленький, но все равно выглядит круто, давайте использовать , что ». :)

Есть много способов поиграться с размерами кода, если вы собираетесь запутаться. Я нашел это интересным чтением:

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Но я сомневаюсь, что им это так нравится. Они, вероятно, просто избегают ненужных зависимостей и кодирования на довольно низком уровне. Здравый смысл и сжатие исполняемых файлов могут немного уменьшить размер:

http://en.wikipedia.org/wiki/UPX

Музыка для подобных вещей обычно выполняется с помощью "tracker" , и файлы больше по масштабу, чем размер файла MIDI, чем MP3. Процедуры воспроизведения довольно малы ... этот, называемый MiniFMod, может воспроизводить файлы XM и утверждает, что добавляет всего 5 КБ к вашему размеру EXE:

http://www.fmod.org/index.php/download#FMODMini

Синхронизация с музыкой - не столько техническая проблема, сколько художественный выбор. Демонстрация, по-видимому, дросселируется, чтобы работать с постоянной скоростью ... и музыка каждый раз воспроизводится одинаково.

2 голосов
/ 07 июня 2011

Основной код сам генерирует текстуры, звук и все объекты в демоверсии. Фракталы, деформации, широкое использование уже сгенерированных объектов (в демо-шкале времени) и некоторые другие методы используются для компактного алгоритмического кодирования объектов. Затем код сжимается с использованием exe-компрессоров. Также некоторые очень нетривиальные методы используются для минимизации размера кода.

См. Также Субкультура вокруг этого.

0 голосов
/ 13 сентября 2013

есть соревнования по сборке с начала вычислений. Как и на любом конкурсе, вы создаете трюки, и эти трюки нашли ссылку для этого конкурса.

обычно используемый язык - это язык ассемблера (ближайший к машине после двоичного ...) Почему он называется ближайшим к машине после двоичного. Потому что это включает в себя сложное управление памятью, сложный набор инструкций для доступа к устройству и т. Д ...

...