Демка
- Эта статья о компьютерном искусстве. Термин «демо» также может означать прочие творения, предназначенные для демонстрации, например в музыке
Де́мка или де́мо (от англ. demonstration — демонстрация) — жанр компьютерного искусства, представляющий собой мультимедийную презентацию. Демки создаются в целях демонстрации возможностей и знаний в области программирования, компьютерной графики, 3D-моделирования и написания музыки. Основным отличием демки от компьютерной анимации является то, что демо просчитывается в режиме реального времени, а не заранее. Чаще всего демки являются рендерингом 3D-анимации в реальном времени в сочетании с двумерными эффектами.
Авторы демо называются демомейкерами, а компьютерная субкультура, их объединяющая, — демосценой. Конкурсы демо называются «компо» (от англ. competition — соревнование). Демокомпо проводятся, как правило, на таких мероприятиях, как демопати (фестивали компьютерного искусства), но бывают также виртуальные конкурсы (в Интернете) и конкурсы местного масштаба, проводимые каким-либо коллективом или организацией.
История
правитьПредками современных демо являются известные с 1950-х годов display hacks, показывающие различные эффекты на экране.
Демосцена возникла в начале 1980-х с появлением коммерческих компьютерных игр, имеющих защиту от нелегального копирования. Группы взломщиков, рекламируя свои достижения по снятию защиты от копирования, добавляли простенькие интро к взломанным играм и программам. Интро загружалось в память до загрузки основного файла программы, отображало простенькое сообщение с парой простых видеоэффектов (обычно нечто вроде «Cracked by …» с эффектом бегущей строки) и загружало игру. Со временем качество интро стало восприниматься как один из признаков мастерства группы. С ростом сложности систем защиты и появлением новых компьютерных платформ росло и качество интро. Внутри группы появились специализации по написанию кода, графики и музыки для интро.
Постепенно интро выделились в отдельный вид компьютерного искусства, дистанцировавшись тем самым от нелегального взлома и распространения программ.
Типы демок
правитьСуществует несколько категорий демок, по которым они могут быть классифицированы. Обычно критериями выступают целевая платформа или размер демки, однако стиль и содержание демки также имеют значение.
Интро
правитьИнтро — изначально это короткое и зацикленное демо, смысл которого был в рекламировании BBS, с которой была скачана взломанная программа, или же самого взломщика, сделавшего крак. Ныне интро называют демки очень малого размера (4K или 64K). Также интро могут называться демки любого размера, посвящённые некоему событию (например, приглашение на демопати — invitation).
Большинство демопати имеют по крайней мере одну категорию интро (обычно 64K интро для PC и Amiga или 4K интро для ZX Spectrum).
Мегадемо
правитьМегадемо (англ. megademo) представляет собой сборник эффектов, как правило, не связанных общей темой, и обладает такой отличительной особенностью, как интерактивность. Интерактивность проявляется в том, что части демо (эффекты) длятся до прерывания пользователем и, кроме того, могут содержать управляемые элементы. В каждой части обычно присутствует какого-либо рода бегущая строка (или несколько бегущих строк) с длинным текстом, например, об авторах демо. Мегадемо были распространены в начале 1990-х, но были постепенно вытеснены трекмо — жанром, более пригодным для демонстрации на публике. Крупнейшие мегадемо (такие, как First Association на ZX Spectrum) содержат многие десятки частей. Некоторые мегадемо позволяют вызывать части в любом порядке.
Интерактивные эффекты иногда присутствуют и в других разновидностях демо, но обычно являются скрытыми частями (вызываются по недокументированной комбинации клавиш).
Трекмо
правитьТрекмо (англ. trackmo) — демо, синхронизированное под музыку (трек). Самый распространённый жанр в современном демомейкинге. Отсутствие интерактивности даёт возможность показать всё демо за ограниченное время (например, за 5 минут — максимальное время указывается в правилах демокомпо) и позволяет сюжетно сливать различные эффекты. Ритм музыки может соответствовать ритму смены эффектов и ритму движения объектов на экране.
Классификация по платформе
правитьС момента появления первых интро было создано множество демок под различные платформы, и классификация по платформам является одной из основных. Например, созданные демки для PC называются PC demo, для Amiga — Amiga demo и так далее.
Ограничения по объёму
правитьОбычно различные типы демок имеют ограничения по размеру. Эти ограничения имеют корни от варезных групп, которые старались свои интро уместить в как можно меньший объём оперативной или дисковой памяти. Также ограничения накладывались из-за того, что взломанные файлы, содержащие интро варез-групп, скачивались с BBS, поэтому минимизация трафика также стояла не на последнем месте.
Иногда ограничения накладывались конкретной платформой. Например размер загрузочной области дискеты (обычно 512 или 4096 байт) также являлся естественным ограничителем для демо. Наиболее распространённое ограничение в 64 Кб является размером сегмента в 16-битной архитектуре x86, а также максимальным размером исполняемого COM-файла.
Впоследствии с развитием вычислительной техники реальная необходимость в ограничении размера отпала, однако желание демомейкеров сотворить нечто потрясающее в ограниченном пространстве осталось. Поэтому искусственное ограничение по размеру стало вызовом мастерству демомейкера, его способностям и креативному мышлению.
Ограничение по объёму заставляет автора находить нестандартные решения при синтезировании или использовании данных из файлов. Для демосцены ограничение в 4096 байт не является нижней допустимой границей. Встречаются демки размером 1024, 256, 128 и даже 64 байт. Для таких столь экстремально малых размеров требуется совершенное знание ассемблера и искусное владение оптимизацией алгоритмов.
Элементы демо
правитьДемка обычно состоит из трёх элементов — программного кода, графики и музыкального сопровождения. Соответственно, в демогруппе должны быть (но могут собираться и из разных групп) программисты, художники и музыканты. Нередко эти специальности могут сочетаться в одном человеке. Также важен общий стиль демки, выделяющий её из общей массы и придающей сюжетную идею.
Визуальные эффекты
правитьОбщее впечатление от демки создаётся именно от визуальных эффектов, которые красноречиво демонстрируют навыки и мастерство программиста. Довольно часто удачные эффекты используются вновь, образуя «библиотеку эффектов» программиста.
Создание некоторых видеоэффектов основано на нестандартном использовании видеорежимов, о котором могли не подозревать даже сами создатели компьютера. Для IBM PC это могут быть X modes, для ZX Spectrum — мультиколор (нестандартное использование графических возможностей с целью увеличения глубины цвета) и эффекты на бордюре (рамке экрана), для C64 и MSX — различные эффекты, связанные с быстрой сменой параметров видеоконтроллера.
Музыка
правитьМузыка определяет стиль демки, её настроение. Отсутствие музыки может быть допустимым лишь для демок, ограниченных по объёму (ниже 4096 байт).
Музыка для ранних демок и интро бралась из взломанных игр. Со временем группы начали создавать собственную трекерную музыку, а некоторые — специализироваться лишь на ней.
Также некоторые группы создали собственные музыкальные редакторы для создания музыки (например, Scream Tracker от Future Crew и FastTracker от Triton).
Музыка для 4K интро редко пишется в музыкальных редакторах (а для 512 bytes интро это просто невозможно), вместо этого используются разработанные для случая форматы музыкальных данных и процедуры (примером такого формата является V2M). Написание музыки, которая вместе с плеером занимает небольшой объём, вылилось в отдельный жанр компьютерного искусства — exe music.
Программирование
правитьДемо — это скомпилированный исполняемый файл. Хотя уже появились специальные редакторы демок, большинство групп предпочитают использовать «дикий» стиль написания программного кода. Распространение исходного кода демки почти не встречается, так как каждая демка является своего рода произведением искусства, продуктом творчества программиста, и не каждый заинтересован делиться своими наработками с другими. Однако скомпилированные файлы обычно свободно распространяются и их свободное копирование не возбраняется.
Самые ранние и самые маленькие интро обычно выполнялись сразу в машинных кодах, так как это был наиболее удобный для взломщиков способ обхода защиты от копирования. Следующим шагом стало использование Ассемблера.
Более высокоуровневые языки (C, C++) стали использоваться (поначалу с ассемблерными вставками) в начале 1990-х годов, в основном для IBM PC-совместимых компьютеров. В настоящее время написание демки на чистом ассемблере — довольно редкое явление (за исключением категорий с ограниченным объёмом выполняемого файла), однако всё ещё распространено для 8-битных платформ (например, Commodore 64).
Для уменьшения объёма также может использоваться сжатие данных, которое тоже берёт начало с варезных корней: пиратское ПО необходимо было эффективно упаковывать, чтобы сжатые данные вместе с загрузчиком и декомпрессором занимали как можно меньше места.
Современные демо и интро обычно упаковываются либо алгоритмами сжатия двоичных данных общего назначения (например UPX), либо специально созданными для подобных нужд программами. Встраиваемый декомпрессор для 4K интро может занимать менее 200 байт.