"… особую пикантность придаёт тот факт, что всё это по сути бессмысленно..."
/ sq/skrju /
![из демо 'We are demo' для Commodore 64, 2020 год)](https://habrastorage.org/webt/bj/s2/ct/bjs2ctw-j-5xho9bqpszobjnvrc.png)
Чаще всего, попытки объяснить людям, что такое «демосцена», начинаются со слов «компьютерное искусство...». Однако, даже по вопросу о том, что такое искусство, во все времена не было единого мнения. Явление, о котором пойдёт речь, называют искусством скорее в том смысле, в каком говорят об искусстве токаря или плотника, а не скульптора или художника. Что, конечно, не означает, что одно хуже другого.
Слово «демосцена» («demoscene») мало того, что не переводится на русский язык, но даже и на английском имеет не вполне очевидный смысл. Если со словом «demo» всё интуитивно понятно — оно происходит от слова «demonstration» («демонстрация»), то со словом «scene» всё куда сложнее. Своим появлением оно обязано вовсе не театру, как могло бы показаться, а возникшей в конце 1970-х практике нелегального распространения и взлома программного обеспечения, главным образом — компьютерных игр.
Добытые (по существу — украденные) и взломанные игры и другие программы на жаргоне сообщества назывались варезом (warez). Сама же субкультура называлась warez scene («warez» от «softWARE») или, сокращённо, просто «сцена». Основной идеей было соревнование между людьми и группами людей в максимально быстром нелегальном распространении «релизов» (от «release») поступившей в продажу игры и / или её взлому — с целью снятия защиты от копирования, добавления «бесконечных жизней» и т.п.
Эта деятельность, конечно, сопровождалось общением, появлением специфического жаргона, своих традиций и героев — к примеру, визиты ФБР были предметом особой гордости, однозначно придавая занятию налёт романтики.
В 1982 году появился недорогой, но удачный, в плане графики и звука, домашний компьютер — Commodore 64. Он был чрезвычайно успешен (продано 22 миллиона штук) и для него очень быстро было написано множество игр. Ввиду этого обстоятельства, а также благодаря некоторым, чисто техническим, особенностям, Commodore 64 стал той платформой, на которой появилось и расцвело явление демосцены.
(компьютер Commodore 64 с дисководом C1541)
Естественное желание признания и славы требует, чтобы нелегально распространяемые игры были подписаны и все знали, какая команда сделала это первой, либо более качественно, нежели конкурент. Первое время, до появления модемов и сетей, игры записывались на дискеты, которые затем пересылались по обычной почте (люди, которые за это отвечали, назывались «swappers»), либо распространялись на специальных мероприятиях — «copy party».
(5.25" диск для C64, с сопроводительным текстом)
Хотя дискеты всячески разрисовывали — по типу граффити, символикой групп — это не очень хорошо работало как подпись, поскольку содержимое дискет многократно копировалось и перезаписывалось на другие. Так что, первым очевидным решением по отделению подписи от физического носителя стало оформление символикой директория дискеты — названия файлов выполнялись из символов псевдографики. Однако это работало, понятно, только лишь для тех случаев, когда дискету копировали целиком.
(директорий диска оформленный символами PETSCII)
Интро
Следующим шагом стало встраивание подписи непосредственно в саму игру — при её запуске выводилась надпись вида «CRACKED BY ..», «DISTRIBUTED BY ...», «TRAINED BY...» и т.п. Поначалу эти надписи выводились стандартным шрифтом и были одноцветными, но очень скоро их стали красиво оформлять — например, шрифтом, заимствованном из самой игры, делать переливающимися.
(Простые текстовые заставки к взломанным играм)
В какой-то момент к надписи начали добавлять картинку с символикой группы и скроллящийся (от «scroll» — прокрутка) текст-послание, адресованный, преимущественно, группам-конкурентам. Такое сочетание скролла и эмблемы стали называть интро («intro» — от слова «introduction»). Занимали такие интро обычно около 1кб — вместе с музыкой, шрифтами и графикой.
(Screenshot из интро Ikari для взломанной игры 3D International Tennis. 1990)
(Интро группы World Cracking Federation к игре Block Out. Размер около 1кб. C64. 1990)
Авторы, создававшие интро, называли себя кодерами («coder» от «code»), по-видимому противопоставляя себя программистам, чтобы подчеркнуть специфическую, более низкоуровневую, требующую большей виртуозности владения инструментом, суть своего занятия — это касалось как взлома и снятия защит, так и написания интро.
Быстро выяснилось, что интро и само по себе является показателем крутизны группы, что привело к их усложнению — визуальные эффекты становились всё более сложными и впечатляющими, появилась музыка — поначалу заимствованная из игр, а затем и оригинальная.
Если простые надписи к играм было добавить технически несложно, то с появлением полноценных интро ситуация изменилась. Хорошая игра нередко занимала всю доступную память компьютера (в Commodore 64 это порядка 50 килобайт), поэтому разработчики интро стали создавать специальные упаковщики и распаковщики. Взломанная/скопированная игра сжималась, к ней добавлялась интро. При запуске игры интро запускалась и, по завершении работы (обычно, по клавише пробел) распаковывала и запускала саму игру. Часто, в целях экономии, при работе распаковщика использовалась экранная память, поэтому процесс сопровождался характерным мельканием на экране разных символов.
Нередко при запуске игры можно видеть не одну, а несколько интро, которые последовательно распаковывают и запускают друг друга. Это связано с тем, что каждая команда, к которой попадала игра, вносила свою лепту. Кто-то распространял игру на территории определенной страны, кто-то делал в ней бесконечные жизни, кто-то вносил усовершенствования. К примеру, часть игр в США выпускалась только для Commodore 64 с видеоконтроллером NTSC, а для запуска на компьютерах с видеоконтроллером PAL требовались переделки.
Таким образом, каждая группа получала свой заслуженный кусочек славы, имела возможность рассказать о себе.
Тем не менее, понятия «демосцена» на том начальном этапе ещё не существовало — всё перечисленное было органичной частью варезной сцены. Следующим шагом стало отделение интро от игр.
Демо
Практика распространения интро в виде отдельных программ возникла, конечно, не внезапно. Обычным делом при распространении полнодисковых игр было добавление на диск так называемого нотера («noter» от «note» — записка). На C64 не существовало распространённых текстовых редакторов, да даже при их наличии никто не стал бы тратить минуты на загрузку такого редактора с другого диска каждый раз, когда нужно прочитать условный readme файл.
Нотеры же представляли собой программу, при запуске которой на экран выводилось текстовое сообщение на одну или несколько страниц, при этом текст нередко выводился каким-либо визуально интересным способом и красивым шрифтом, иногда с фоновой музыкой. Некоторые нотеры имели режим, в котором прочитавший сообщение мог написать своё и сохранить в виде такого же нотера. Позднее также получила развитие идея полноценных сценерских электронных журналов (diskmags).
(Screenshot нотера для C64)
Исторически, однако, более значим момент, когда люди стали задумываться над самостоятельной ценностью интро. Их просмотр доставлял эстетическое удовольствие — в плане музыки и красивых шрифтов, эффектов, а также вызывал интерес в плане чтения скроллов и гадания, как именно реализован тот или иной интересный эффект.
Время от времени на дисках стали встречаться, наряду с музыкой, коллекции интро, надёрганные людьми из разных игр, в результате чего авторы интро стали и сами иногда выпускать их в качестве самостоятельного продукта. Однако, это были всё еще интро или, как их стали называть существенно позднее — «крактро» («cracktro» от «crack» — взлом).
Вряд ли мы когда-либо узнаем, кто сделал первое классическое самодостаточное демо («demo» — от «demonstration») состоящее из нескольких частей — тем более, что файлы тогда не имели даты создания в силу отсутствия в компьютерах часов реального времени.
Скорее всего, оно представляло собой просто коллекцию из нескольких уже существовавших чьих то интро, запускавшихся одно за другим по нажатию клавиши пробел — точно так же, как ранее осуществлялся переход от интро к игре.
(Демо Place in the Space by Taboo. C64. 1992)
Для всех демо тех времён такой подход являлся стандартом, что дополнительно было обусловлено необходимостью длительной подгрузки очередной части с диска.
Современные демо, как одно сплошное действие без остановок, появились позднее, а тогда было достаточно обычным, если демо состояло из 5-10 частей в каждой из которых что-то достаточно нудно ползло, прыгало или скроллилось под музыку (хотя, разумеется, в то время это нудным не казалось).
Демо стали появляться на уже упоминавшихся copy party — люди собирались и не только копировали друг у друга софт, но и смотрели, кто что интересного создал. Напомню, модемов и сетей на домашних компьютерах тогда практически не было.
(Copy party, 1980-е)
Хотя такие сборища были по смыслу близки к появившимся позднее демопати («demo party»), первое время никаких конкурсов по чётким правилам не проводилось. Да и понимание, что такое хорошо и что такое плохо — было весьма своеобразным. К примеру, использование музыки и шрифтов надёрганных из игр не осуждалось, а вот использование кусков чужого когда и повторение эффектов увиденных в чьей-то демо или интро — считалось довольно позорным явлением.
Из-за слабого железа тех времён, создание как интро так и демо требовало высокой квалификации — знания ассемблера, тонких особенностей работы аппаратуры, в том числе не описанных в документации. Поскольку интересовались демосценой тогда тоже лишь люди «в теме», они оценивали не только художественную составляющую и сюжет, но и то, насколько эффективно были использованы возможности компьютера, так что авторы старались выжать из железа максимум возможного и обнаружить его неизвестные ранее и недокументированные возможности.
По размеру типичное демо на Commodore 64 занимало сторону диска, около 144 килобайт, или две — в этом случае диск требовалось перевернуть. Интро же варьировалось от 1 до 15 килобайт, хотя разница была не только в размерах — демо, в отличии от интро, состояло из нескольких частей, которые могли подгружаться с диска последовательно. Типичным набором эффектов в разных частях были различные скроллы текста, «плазма», очень простые 3D эффекты.
Чтобы максимально поразить потенциального зрителя, авторы не только писали эффективный код, но и различными способами — за счёт обмана зрения и игре на особенностях восприятия, выдавали простые эффекты за более сложные — примитивные преобразования за ресурсоёмкое 3D, малое количество цветов за большое, трёхканальную музыку за многоканальную и т.д. Такие вещи стали возможными благодаря неинтерактивности демо — зритель не может управлять тем, что видит, а потому его восприятием можно манипулировать, подчёркивая одно и скрывая другое.
Интересно что, несмотря на техническую близость создания демо и создания игр, разработчики игр, как правило, пренебрежительно относятся к демо и не понимают смысла этого занятия. Тому есть две причины — упомянутая неинтерактивность демо и невозможность получить от этого какой-либо доход.
Несмотря на то, что демо — это всегда именно программа, художественный аспект играет в них очень большую роль. В этом плане демосцена в то время основывалась преимущественно на молодёжных западных субкультурах.
Символика и шрифты вызывают явные ассоциации с граффити и с постерами рок-групп.
Многие эффекты — такие как горизонтальные цветные полоски, переливающиеся разными цветами и бликами логотипы, цветовое оформление шрифтов — воспроизводят эффекты, типичные для аналоговых систем, с помощью которых в 1970-е создавались телевизионные заставок и титры (в первую очередь это Scanimate).
(примеры рекламы созданной при помощи Scanimate)
Также, очень сильно на стилистику интро и демо в прошлом влияли технические особенности видеоконтроллеров, из-за чего по типичным работам узнать компьютер, для которого они написаны — довольно легко.
В случае с Commodore 64 это, в первую очередь, использование горизонтальных цветных переливающихся полосок, сложные гладкие скроллинги в разных направлениях в пределах одного экрана, подсветка частей изображения разными цветами, элементы изображения за границами стандартного экранного поля.
Музыка в демо чаще всего заимствовалась из поп-культуры, кинематографа и классики, либо основывалась на таковой. Такой музыкальный фон больше подходит для длительного прослушивания во время чтения скроллящихся текстов и зацикленных эффектов, чем какой-нибудь условный heavy metal. Кроме того, сказывались технические ограничения аналогового синтеза на некоторые звуки — в частности, барабаны и гитары.
По мере развития субкультуры, сформировались целые демогруппы (demo groups). Создание демо стало не просто дополнением к распространению и взлому софта, а основным смыслом их деятельности.
Обычно в состав демогруппы входили, помимо кодеров (coders) и распространителей продукции (swappers), ещё художники (graphicians) с музыкантами (musicians) и даже организаторами (organizers).
Несмотря на то, что существенную часть демо, по аналогии с интро, составляли различные скроллы с текстом, скомбинированные с повторяющимися эффектами, изменение формата и увеличение допустимого размера вскоре повлияло и на содержание демо. Появились части явно навеянные сюжетом кинофильмов, политикой и даже популярными товарами и продуктами (однако, без тени рекламы).
(демо Crest Light by Crest. C64. 1992)
(демо Star Wars by Censor Design. 2018)
Почти все 1980-е конкурентов Commodore 64, как платформе, на демосцене практически не было, хотя конечно демо появлялись и на других компьютерах.
К концу 1980-х был выпущен компьютер Commodore Amiga, что ознаменовало следующий этап развития демосцены. К тому моменту демосцена была уже вполне оформившимся явлением — демо писали множество людей по всему миру (преимущественно в Европе и, в меньшей степени, в США), выработалась единая терминология и понимание смысла этой деятельности.
Несмотря на формально ту же компанию-производителя, Amiga была совершенно другим, относительно Commodore 64, компьютером — более мощным, с другой архитектурой, заимствованной у сторонней компании. В частности поэтому словом «Commodore» обычно называют Commodore 64, а словом «Amiga» — Commodore Amiga.
(Commodore Amiga 500)
Несовместимость каждой следующей платформы с предыдущей в те времена была вполне обычным явлением и никого не удивляла. Весь софт для Amiga создавался с нуля, однако часто это делали люди пришедшие с C64, что обеспечило преемственность традиций.
Технические отличия Amiga от C64 сильно влияли (и в лучшую и в худшую сторону) на качество и формат демо.
Существенно больший объем памяти, ёмкость и скорость диска, производительность всех систем — всё это позволило теперь создавать демо в формате непрерывного захватывающего действия — так называемые трэкмо («trackmo» — от «track»+«demo»). Паузы и нажатия на пробел для просмотра следующей части постепенно ушли в прошлое, появились демо визуально похожие на музыкальные клипы, где музыка была синхронизирована с действием:
С другой стороны, создавать демо стало проще. Хотя они по-прежнему писались на ассемблере, однако производительность 68k процессоров, специализированный видеопроцессор, возможность воспроизводить цифровой звук не загружая основной процессор, более удобные средства разработки — всё это, на фоне отдельных шедевров, привело (и приводит) к большому количеству низкокачественной продукции. Необходимость подолгу корпеть над отдельными пикселами рисуя шрифт и подбирать коэффициенты, чтобы создать интересно звучащие инструменты — пропала. Поэтому, в сравнении с C64, демосцена на Commodore Amiga характерна, при всех её сильных традициях, большим количеством шаблонных, «проходных» работ.
Когда по миру стали распространяться IBM PC с MS-DOS, в контексте демосцены на них никто особо не обращал внимания. Будучи довольно дорогими, они обладали графикой и звуком чрезвычайно низкого качества, поскольку предназначены были в первую очередь для бизнеса.
(Оригинальная IBM PC)
Тем не менее, к 1990 году, с распространением EGA графики (640x480, 16 цветов) стали появляться первые интро. Большинство из них тогда не шло ни в какое сравнение даже с тем, что делалось на Commodore 64, не говоря уже об Amiga.
PC принципиально отличались от Commodore открытостью архитектуры. Commodore 64 и Amiga выпускались только фирмой Commodore. PC же совместимые машины — напротив, выпускались разными компаниями, как и различные платы расширения для них (в том числе, графики и звука).
Благодаря открытости архитектуры, PC совершенствовались поэтапно — люди докупали платы расширения к уже имеющемуся у них компьютеру, что увеличивало его возможности. С Commodore, как и рядом других закрытых платформ, это было почти невозможно. В результате, где-то в начале 1990-х наступил момент, когда PC условно сравнялась по возможностям с Amiga. В чём-то была сильнее одна платформа, в чём-то другая но, с точки зрения демосцены, они стали сопоставимы. В том числе это произошло и из-за прекращения фирмой Motorola развития 68k процессоров, в результате проигрыша процессорам Intel x86.
Безусловно, приверженцы Commodore Amiga на варезной и демосцене понимали, к чему идёт дело и их отношение к PC менялось от пренебрежительного к неприязненному. С банкротством фирмы Commodore прекратился и выпуск Amiga, так что, несмотря на всю кривость архитектуры и зоопарк плат расширения, PC окончательно выиграла гонку, а Commodore Amiga, как и другие аналогичные платформы, постепенно стали считаться устаревшими, что привело к появлению так называемой «oldskool demoscene» (oldskool — жаргон от «старая школа»).
Зрелость
Первые demo party в том виде, в котором мы их знаем сегодня, появились в начале 1990-х. Это были уже мероприятия вполне легальные и при этом без коммерческой составляющей. Центральное место занимал большой экран, на котором последовательно демонстрировались работы, подготовленные участниками конкурсов. Как правило, проводились конкурсы по демо, интро, а также графике и музыке, как составляющим демо и интро. Посетители располагались перед экраном, причём было выделено место под столы для людей с компьютерами (ноутбуков тогда почти не было и компьютеры состояли из системного блока и большого тяжёлого ЭЛТ монитора) и под посетителей без компьютеров.
(The Gathering demo party, начало 1990-х)
(Assembly demo party, 2012)
Проводились демопати преимущественно в Европе — в частности, в Скандинавии. Несколько лет наиболее крупной и известной демо пати была Assembly, организованная демо группой Future Crew. Именно там были представлены на конкурс две работы, сильно изменившие роль PC в демосцене — в 1992 году это был Unreal, а в 1993 — Second Reality.
(Second Reality by Future Crew. PC AT 386. 1993)
Чем же таким особенным они выделялись на общем фоне?
Как уже было упомянуто выше, в те времена на демосцене господствовала Amiga, а PC, имевшая бедную графику и плохой звук — не воспринималась всерьёз как платформа для создания демо.
Однако, в отличии от Amiga, PC совместимые компьютеры и платы расширения для них производила не только фирма IBM, а все подряд. Благодаря этому, мощность и возможности платформы росли очень быстрыми темпами. Первые попытки создания приличных интро появились вскоре после появления микропроцессора Intel 80286 и распространения EGA видеоадаптеров. Подавляющее большинство из них в том или ином виде воспроизводили стилистику характерную для C64 — одна или несколько частей с разными эффектами, скроллинги, переливающиеся полоски и лого.
Ярким представителем того периода является Yo! авторства той же Future Crew.
С появлением 80386 и VGA видеоадаптера, а также звуковой карты Sound Blaster, PC совместимые компьютеры внезапно оказались вполне сопоставимыми по возможностям с Amiga и, с того момента, постепенно начали её превосходить, несмотря на огромное количество проблем с совместимостью между разными PC и множеством конфигураций железа, которое необходимо было программно поддерживать.
(Cronologia by Cascada. PC AT 286, VGA. 1991)
Мощный процессор, хотя и не самой удачной архитектуры, сравнительно быстрая графика, пусть и без поддержки спрайтов и растровых эффектов, хороший звук, увы, отнимающий существенную часть процессорного времени, позволили получать сложные трёхмерные динамические сцены, что для стандартной Амиги было практически недостижимо. Упомянутая Unreal стала одним из первых ярких примеров использования 3D — до этого подобные возможности было привычно видеть лишь на дорогих специализированных графических станциях, вроде Silicon Graphics.
Через год Future Crew закрепила свой успех с уже упомянутой ещё более сложной и качественной работой Second Reality, которая до сих пор остаётся, пожалуй, самой известной демо в мире — даже среди людей, не имеющих отношения к демосцене. Помимо умелого использования возможностей платформы, здесь в полной мере был реализован уже известный по работам для Amiga подход с непрерывным действием, синхронно сопровождающимся качественной музыкой. Местами это было уже почти trackmo.
Интересно, что позднее появилось несколько ремейков Second Reality других авторов. Среди прочего, для PC была выпущена версия, умещающаяся в 8 кб:
Где-то с этого момента PC постепенно становится самой популярной платформой на демосцене.
(Интро Fermi Paradox by Mercury. Размер 64кб. Процессор x86/64. 2016 год)
Тут следует сделать небольшое отступление и рассказать о проблемах со звуком и видео на PC, поскольку именно эти два фактора определили то, как развивалась демосцена на этой платформе.
Звук
На таких компьютерах, как Atari XE/XL, C64, ZX Spectrum звук был, по сути, аналоговым — проигрывать сэмплы штатными способами было крайне затруднительно, да в этом и не было смысла — из-за малых объёмов памяти. На Amiga звук уже был цифровым — можно был играть сэмплы в четырёх каналах, причём их проигрывание почти не нагружало процессор.
На PC же оригинальный звук, под названием PC Speaker, был, без преувеличения, ужасен, т.к. предназначался, преимущественно, для издавания писков при диагностике. Как таковых, звуковых возможностей просто не было — лишь однобитный порт, выведенный на динамик.
Поистине героическими усилиями люди научились проигрывать через этот динамик сэмплы. Поскольку всё, включая смешивание каналов, делалось программно, такая озвучка отнимала очень много вычислительных ресурсов, при этом качество было плохим, даже по меркам тех времён. Самые простые попытки улучшить качество были связаны с устройством под названием «Covox», представлявшим собой простой цифро-аналоговый преобразователь, часто реализованный в виде набора резисторов, втыкавшихся в параллельный порт принтера. Качество такого звука было уже существенно лучше, однако ресурсов процессора это всё отнимало примерно столько же, сколько и PC Speaker. Кроме того, Covox был слабо распространён и редко поддерживался играми (хотя и нередко — демо).
Первым более-менее стандартным расширением стал Adlib. Увы, оригинальный Adlib был FM и штатно не умел играть сэмплы. По существу, он был хуже по звучанию, чем звуковой чип в уже устаревшем на тот момент Commodore 64. Ну и опять же — покупали этот Adlib далеко не все. Он часто поддерживался играми, но почти никогда — демо.
Большим шагом вперёд, в плане звука на PC, стало появление Sound Blaster производства Creative Labs. Он проигрывал цифровой звук (поначалу — моно 8 бит, позднее — стерео 16 бит), меньше грузил процессор и, в целом, был вполне сопоставим по качеству со звуком на Amiga, а при некоторых программных ухищрениях и превосходил — например, по числу каналов. SB также поддерживал совместимость с Adlib.
Тем не менее, авторы демо хотели, чтобы ресурсы процессора при проигрывании не отнимались вовсе. Такой платой расширения стал Gravis Ultrasound (GUS). При всех безусловных плюсах этой платы, её разработчикам было сложно тягаться с компанией Creative Labs. Зная потребности демосцены, они обратились к авторам демо и организаторам демо пати, фактически, с просьбой о помощи в раскрутке своей продукции и взаимовыгодном сотрудничестве. Вскоре, в большинстве приличных демо появилась поддержка GUS и произошло даже нечто вроде войны с Creative Labs. Увы, GUS это не спасло — через какое-то время Creative Labs выпустила аналогичную по возможностям SB AWE, а GUS постепенно сошёл со сцены.
Теперь же уже мало кто задумывается, какая звуковая карта и чьего производства работает в его компьютере.
Видео
Первые PC не были предназначены для вывода изображений — они позволяли выводить лишь текст, да и то чёрно-белый. Впрочем, довольно быстро появился CGA (Color Graphics Adapter). Однако, в графическом режиме он позволял одновременно отображать лишь четыре цвета. Первым видеоадаптером, который имел приемлемые с точки зрения демосцены возможности — стал EGA (Enhanced Graphics Adapter). При разрешении 640x350 можно было отобразить 16 цветов, а в текстовом режиме еще и перепрограммировать шрифты… Именно для EGA было написано первое более-менее широко известное на PC интро — «Yo!» (со звуком на PC Speaker).
Настоящим стандартом для демо стал следующий адаптер — VGA (Video Graphics Array). Обычно использовали его режим 320x200, 256 цветов, но иногда также 640x480, 16 цветов и даже более экзотические 320x240, 480x360 256 цветов — так называемые «x-mode».
VGA режимы использовались довольно долго, но параллельно производители разных видеокарт добавляли дополнительные — 640x480, 256 цветов или 800x600, 256 цветов. Подобные режимы (и видеокарты) назывались SuperVGA или SVGA. Проблема была в том что, в отличии от вышеописанных режимов, на SVGA долго не могли выработать стандарта. Из-за этого один и тот же режим на разных видеокартах включался по-разному и имел разную адресацию памяти. Это проблема решалась долго и болезненно — первой попыткой её решения стал стандарт VESA. Хотя он имел массу недостатков, постепенно стали появляться демо в высоком разрешении и с большим количеством цветов.
Позднее, аналогичная история с мучительной стандартизацией произошла с внедрением аппаратной поддержки 3D, которая началась с отрисовки полигонов и постепенно дошла до современных GPU с «шейдерами» (shaders).
Размер имеет значение
С самого начала создание интро и демо было творчеством в жёстких рамках ограничений платформы — в частности, ограничения на максимальный размер кода и данных — на то, сколько байт, килобайт или мегабайт займёт работа. На заре становления демосцены эти ограничения были чисто практическими — объём дискеты, терпимое время загрузки, оставшаяся свободной от игры память и т.п.
По мере того, как с появлением жёстких дисков естественные ограничения стали терять смысл, специально для конкурсов были придуманы искусственные.
Поначалу, они были исторически обусловлены прошлыми размерами той же дискеты или, скажем, загрузочного сектора но, в итоге, были согласованы некие стандарты, наиболее распространёнными из которых стали 256 байт, 1 килобайт, 4 кб и 64 кб. Работы такого размера по-прежнему называют «интро», но уже не из-за их предназначения, а просто из-за малого размера.
Что касается конкурсного понятия «демо», то там максимальный размер несколько раз пересматривался и составляет, в зависимости от платформы, от сотен килобайт до десятков мегабайт. Т.е. современные «интро» и «демо» чаще всего отличает друг от друга размер.
Хотя, казалось бы, это всего лишь выдуманные цифры, но на практике разница между всеми перечисленными номинациями не только количественная, но и качественная.
Если, скажем, на PC в работу объёмом в мегабайты, без особых усилий можно упаковать несколько приличных картинок и качественную музыку с сэмплами, то в 64кб сделать это уже затруднительно, а в десятки байт — и вовсе невозможно.
Это вынуждает авторов искать обходные пути. Так, например, для 64кб типична ситуация, когда звуковые сэмплы не хранятся, а создаются при запуске интро, в процессе вычислений по формулам в ней хранящимся. Аналогично и с изображениями — что, кстати, привело даже к появлению особой номинации — «процедурная графика» (procedural graphics).
(Red Crash by NuSan — 4kb procedural graphics. PC. 2021)
Что касается номинации 256 байт то, как правило, такие работы не показывают картинок и не играют музыки — акцент в них делается либо на плотность и сложность кода, позволяющего уместить в эти байты максимум эффектов, либо на оригинальность и выразительность единственного эффекта.
(интро Memories by HellMood. PC. Размер 256 байт. 2020)
(интро Cross by QMG. PC. Размер 128 байт. 1996 год)
(Полный код 128 байт интро Cross by QMG на футболке ENLiGHT'96 demo party)
Таким образом, в зависимости от размера работ, конкурс превращается или в чистое соревнование программистов, или в совместное творчество программистов, музыкантов и художников.
Конечно, для конкретного компьютера и микропроцессора в одно и то же количество байт можно уместить как больше, так и меньше содержания. К примеру, появление видеоускорителей и шейдеров позволило в тоже самое количество байт уместить больше сложных эффектов, поскольку ряд вещей взяла на себя видеокарта — больше не надо самому рисовать по точкам треугольники и вручную их закрашивать.
Это, в частности, повысило популярность на PC номинаций 4к и 64к интро и снизило популярность номинации «демо». По существу, в условный среднестатистический байт стало влезать больше.
В номинациях же в десятки-сотни байт по-прежнему всё делается вручную, поскольку на инициализацию и работу с GPU/шейдерами этих жалких байт недостаточно. В таких объёмах важной становится система команд микропроцессора, плотность машинного кода и даже особенности заголовков исполняемых файлов данной конкретной операционной системы или платформы, а также, скажем, наличие в ПЗУ тех или иных полезных подпрограмм или таблиц.
Oldskool
Закрытость старых архитектур — будь то C64, Amiga, Atari или другие — имеет не только минусы, но и свои плюсы. Написав intro или demo для, скажем, того же Commodore 64, можно быть абсолютно уверенным, что оно запустится и будет точно так же работать на миллионах других Commodore 64, поскольку они все одинаковые. Причём, так будет через 5, 10, 20, 30 и более лет, поскольку платформа уже не развивается. Это принципиально отличается от ситуации с теми же PC — из-за постоянных изменений в железе сложилась ситуация, когда многие старые работы уже невозможно запустить на современных PC (иногда — даже под существующими эмуляторами!).
Именно благодаря одинаковости (или хотя бы однотипности, в случае со старыми PC) всех экземпляров устаревших компьютеров, для интро и демо на них характерна прямая работа с железом — программирование на ассемблере, управление графикой через изменения значений непосредственно в портах видео и аудио контроллеров, широкое использование различных недокументированных особенностей железа, которые продолжают обнаруживать даже спустя десятилетия.
(Across the edge by deMarche. ZX Spectrum. 2016 год)
(Bromance by Bonzai. C64. 2021)
В первое время после появления oldskool демосцены было сложно прийти к взаимопониманию относительно принципа организации конкурсов — ведь компьютеры бывают, скажем так, более и менее устаревшие, а в рамках одного конкурса участники должны иметь в идеале, равные шансы.
Сложность в том, что разница в производительности и графических или звуковых возможностях вовсе не обязательно идут параллельно — существуют как очень медленные 16-разрядные компьютеры с плохой графикой, так и сравнительно быстрые 8-разрядные с хорошей. Создавать же много номинаций, учитывающих все разнообразие — невозможно, поскольку на них не хватит конкурсных работ.
В итоге, идея деления oldskool конкурсов по принципу разрядности процессора или каким-то другим конкретным техническим характеристикам не прижилась и, в настоящее время, конкурсы всё чаще делят на три категории — oldskool (для старых компьютеров, включая старые PC, игровые приставки), combined/newskool (для современных PC и Amiga с акселераторами) и wild (для прочих устройств).
Поскольку с течением времени работы для ретро-платформ приобретают определенную «антикварную» ценность (т.е. вызывают интерес уже просто из-за того, что написаны под старую платформу), ситуация в плане оценки более-менее выравнивается и хорошая работа для какого-нибудь древнего Commodore VIC-20 может легко выиграть у средненькой работы для Commodore Amiga или PC.
Для популярных, с точки зрения демосцены, компьютеров, иногда практикуется еще один подход, когда конкурсы организуются для конкретной платформы — Amiga, ZX Spectrum, C64 и некоторых других. Проводятся даже demo party, целиком ориентированные на конкретную платформу.
На необычных платформах и самодельных компьютерах
Выход демосцены за пределы персональных компьютеров был связан с удешевлением и доступностью сложных электронных компонентов, что позволило радиолюбителям сравнительно легко создавать эмуляторы картриджей (ПЗУ) и, таким образом, разрабатывать программы для устройств, которые не были для этого предназначены — например, для игровых приставок (консолей). Эта ветвь развития демосцены тесно переплетена с так называемыми homebrew играми, поскольку и то и другое требовало как программных эмуляторов приставок, так и эмуляторов картриджей. На некоторых, казалось бы примитивных, приставках (Atari 2600/VCS, Vectrex ) появилось сравнительно много качественных работ.
Поскольку микропроцессоры и микроконтроллеры стали использоваться не только в персональных компьютерах и приставках, но и в различных устройствах бытовой электроники — часах, телефонах, видео/аудио плеерах, паяльниках, неудивительно, что и на таких устройствах тоже появились демо. На демопати их обычно выставляют в номинации Wild demo (от «wild» — дикий).
Дополнительным интересом, даже вызовом, для их авторов — является необходимость предварительно разобраться в устройстве, подчас, без какой-либо документации даже на микропроцессор, а то и самостоятельно написать для него эмулятор и средства разработки.
(Демо Freespin by Reflex для дисковода Commodore 1541, процессор 6502. Размер 170кб. 2021 год)
(Демо Where Have All The Pixels Gone? by CMCC. Размер 64кб. Процессор 6502. 2012 год)
Естественным продолжением этого стала разработка собственных компьютеров и написание демо уже для них — чаще всего это разного рода микроконтроллеры и FPGA с выводом изображения на композитный либо VGA монитор, и даже на осциллограф.
Тем не менее, подобные разработки не особо популярны на демосцене. В первую очередь это связано с тем, что уникальные либо малораспространённые устройства по определению имеют немногие. Соответственно, немногим будет интересно смотреть работы для таких устройств и немногие смогут в полной мере их оценить (если только это не что-то совсем уж удивительное).
Соответственно, за демосценой на таких устройствах не стоит истории, традиций и субкультуры. Это же касается и демосцены на разного рода виртуальных программных платформах (JavaScript, PICO-8 и пр.)
Любопытным ответвлением Wild стало также создание работ без использования программирования и электроники, однако в духе и стилистике демосцены.
По до конца неясным причинам, на некоторых хорошо известных, как старых, так и современных платформах, демосцена практически отсутствует. Наиболее яркий пример — компьютеры Apple. Несмотря на огромное количество выпущенных Apple II и Apple Macintosh, для них было написано мало работ, да даже существующие — появились преимущественно в последние годы.
Другой интересный феномен — практически полное отсутствие демопати, проводимых в США. Довольно сложно найти объяснение этому факту, особенно на фоне, скажем, широкого распространения там радиолюбительства и трепетного отношения к старой вычислительной технике.
Об анимации, плагиате и заимствованиях
То, что интро и демо представляют собой именно программный код, а не видеозапись или анимацию — кажется самоочевидным (конечно, за исключением ситуаций, когда, чтобы упростить просмотр, демонстрируется видеозапись работы этого кода — как это делаю я, приводя в этой статье ссылки на youtube видео). Тем не менее, в спорах о допустимости использования анимации в демо было, в своё время, сломано немало копий. Спорят об этом и в наши дни, хотя и намного реже.
Если брать демосцену на C64, особенно её ранний и зрелый периоды, то особых оговорок на этот счёт не было. Связано это с тем что, из-за небольшого объёма памяти, медленной загрузки, слабого процессора, не позволяющего обеспечить эффективное сжатие, создавать сколько-нибудь продолжительную анимацию хорошего качества было крайне затруднительно и, в целом, бессмысленно. При этом, однако, короткие зацикленные фрагменты анимации в демо встречались довольно часто. К примеру, одно время было модно имитировать raytracing, заранее просчитав десяток кадров на более мощном компьютере.
Для людей знающих, эти приёмы были легко узнаваемы, так что использование анимации не давало авторам работ никаких преимуществ.
Однако, с появлением Amiga и, особенно, PC, с их большими объёмами памяти, диска и мощными процессорами, вопрос о допустимости анимации встал ребром. В этом контексте можно вспомнить State of the Art, а также Front 242:
(State of the Art by Spaceballs. Amiga 500. 1992)
(Front242 by Virtual Dreams. Amiga 500. 1993)
В случае со State of the Art, танцующая девушка безусловно была анимацией и раздавались голоса, что по этой причине работа не является демо. Оппоненты возражали, указывая на то что, во-первых, авторы разработали свой оригинальный алгоритм упаковки и распаковки движений контура фигуры и, во-вторых, помимо этого контура в демо есть и другие эффекты, к которым не может быть никаких вопросов.
В итоге, на большинстве demo party в конкурсы был добавлен прямой запрет на «чистую анимацию». Т.е., как составная часть работы анимация допускалась, но не допускались демо, состоявшие из анимации целиком. В общем и целом это работало и работает, хотя отдельные эксцессы встречаются.
К примеру, в последние годы весьма популярным стало воспроизведение известного клипа «Bad Apple» на различных компьютерах и устройствах. Подобные работы принято представлять в номинации «wild» (где обычно можно показывать что угодно, вплоть до видеофильмов), но довольно часто они просачиваются и в конкурсы демо. Помимо того, что Bad Apple — это в чистом виде анимация, причём заимствованная, вдобавок там также используется заимствованная музыка.
По части заимствований, повторения и плагиата стоит упомянуть ещё два явления.
Первое связано с ростом популярности в демо 3D эффектов, на которое наложилось появление доступного Интернета. Поскольку сложное 3D на ранних PC мало кто мог реализовать, большинство авторов ограничивались вращением примитивов, причём если раньше даже для этого пришлось бы писать свой код или разбираться, дизассемблируя чужой машинный, то Интернет позволил просто скачивать и использовать готовые чужие исходники, что привело к появлению массы однотипных работ, где основной «идеей» были вращающиеся кубы и бублики. На эту тему шутят до сих пор:
(Процедурная графика Undefined Symbol by Church of the Spinning Cube. 2020)
Второе — своеобразный комплекс неполноценности Amiga и C64 на фоне быстро улучшающихся возможностей PC. Поскольку тогда на PC, из-за мощного процессора и плохого всего остального, акцент делался на 3D, авторы работ для C64 и Amiga ставили себе цель доказать, что подобное возможно и на этих платформах. При этом богатые традиции c64 демосцены в области дизайна, а также использование сильных сторон железа (спрайтов, растровых эффектов) отошли на второй, пятый, десятый план и там стали появляться работы, представляющие собой сборники эффектов заимствованных у PC. Закономерно, куда худшего качества. Усилия прилагались просто титанические — апофеозом стала довольно хорошая копия Second Reality, реализованная на C64:
К счастью, как и в случае кубов с бубликами, мода эта постепенно сошла на нет.
Мотивация
Причин, по которым люди участвуют в демосценерском движении, создают демо и интро — много. В общем и целом это, конечно, способ самореализации. Однако, почему именно такой необычный — что он даёт такого, чего не дают более традиционные способы?
При создании демо не конкретизирована конечная цель и нет заказчика. Это чистое творчество. Вам необязательно знать, что должно получиться в итоге, как это требуется при создании коммерческого или другого, имеющего практическое применение, продукта.
Приведу пару цитат, которые, на мой взгляд, иллюстрируют идею:
«Эту картину я испортила. Капнула на нее красной краской. Сперва я ужасно переживала, а потом пятно мне понравилось, оно походило на трещину. Словно стройка была не настоящей стройкой, а треснувшей театральной декорацией, на которой стройка всего лишь нарисована. Я начала играть с этой трещиной, расширять ее, придумывать, что можно было бы увидеть позади нее. Так я написала свой первый цикл картин, который назвала 'Кулисы'. / Милан Кундера, 'Невыносимая легкость бытия' /
»… это то, что отличает обычных программистов от демокодеров — они часто пишут код инстинктивно, правя его до тех пор, пока тот не заработает, не зная что, в точности, происходит. Это та причина, по которой демо часто бывают основаны на стрёмных вещах типа некорректно проинициализированной памяти" / Marko Makela /
В любой момент вы можете случайно наткнуться на какую-либо особенность железа, будь то ограничение или возможность, на которой можно построить эффект или даже сделать это идеей всей работы.
Если, скажем, разрешение платформы, под которую вы пишите — всего 64x32 точки, значит вы имеете аппаратную возможность очень быстро рисовать квадраты и прямоугольники. Если платформа имеет векторное устройство отображения, вы можете нарисовать синусоиду вообще без всякой математики и таблиц — просто за счёт использования аналоговой части.
Если звуковые возможности платформы ограничены простым звуковым сигналом одной частоты, варианты практического использования лежат между гудком телефона и автомобиля, что само по себе может определить сюжет всей работы.
Когда вы пишите под старую платформу, вы как бы прикасаетесь к истории. Даже если это не такая популярная платформа как Commodore 64, всё равно — кто-то разработал для неё процессор. Кто-то видеочип. Кто-то написал подпрограммы BIOS, прошитые в ПЗУ. Каждый из этих людей имел свои причины сделать всё так, а не иначе. Выбрал этот конкретный набор инструкций процессора, ограничился конкретными подпрограммами в ПЗУ. Сталкиваясь с такими особенностями при написании демо, вы как бы устанавливаете связь с теми людьми — через десятилетия.
Кроме того, между вами и компьютером отсутствует множество прослоек в виде компиляторов языка, виртуальных машин, JIT и интерпретаторов байткода, драйверов и прочего. Именно то, что вы напишите и как напишите — будет исполнено компьютером. Вы — один на один с железом.
Создавая демо и участвуя в демосценерских конкурсах, вы можете быть уверены, что не столкнётесь с жаждой наживы, что никто не будет лезть на первые места ради продаж своей разработки. В большинстве других занятий люди рано или поздно начинают задумываться, как извлечь из них прибыль. С демосценой такое невозможно. Бросить это занятие можно. Начать продавать — нет. И это не потому, что все честные и бескорыстные. Просто в саму суть демосцены встроена невозможность коммерциализации.
И, конечно, важную роль для авторов работ играет возможность прославиться. Но прославиться не угождая вкусам толпы, а делая то, что нравится самому себе и что в состоянии оценить лишь небольшая прослойка людей «в теме», оценка которых для автора важна.
Пётр Соболев (frog)
август 2021
P.S. В дополнение к статье — видеозапись моего семинара на ту же тему (частично пересекается с данным текстом)
И немного ссылок по теме:
Каталоги/базы с демо и интро:
Каналы youtube с видеозаписями демо/интро: