Nothing is Right - как я без познаний в программировании демку сделал

Nothing is Right - как я без познаний в программировании демку сделал

100bit

Я в демосцене уже восемь лет. Как-то так получилось, что история демосцены и заполнение всевозможных ресурсов теми или иными работами меня завлекали больше, чем сама демосцена, её просмотр и тем более её разработка. Конечно, я смотрел демки (иногда даже на реальном железе... не зря же у меня появилась PS2), смотрел несколько демопати как в записи, так и на стриме, участвовал в разных дискуссиях, но сам ничего не делал и даже не задумывался. Можете называть меня демосценным куколдом, если хотите. Но до некоторого времени.

Часики-то тикают. Я уже стал узнаваемым лицом в коммьюнити, в котором стал на одном сайте модератором, а ещё пару раз успел сильно поругаться (впрочем, это было давно и неправда). От меня даже стали чего-то ждать... по какой-то причине. И вот, с 2020 года (примерно) я вынашивал идею сделать демку. И спустя пару лет раздумий, задержек и собственной лени она вышла в свет. Посмотреть её можно здесь:

https://demozoo.org/productions/310763/

(и если вы решили посмотреть Youtube-версию и услышали там звук уведомления из Discord'а - значит, я до сих пор не перезалил видео с нормальным звуком, можете бить меня палками)

Здесь я расскажу несколько максимально неинтересных фактов. Как шла "разработка", как я успел всё бросить и снова вернуться, почему именно cables и как я вообще решился релизнуться.

Предупреждаю сразу. Эта статейка - не технических разбор и уж тем более не пост с советами, как делать надо и как не надо. Читайте это просто как длинную заметку, очередной пост в очередном блоге.


===

ПЕРВЫЕ МЫСЛИ

У меня, как и у многих, есть любимые демки. Одной из самых любимых стала, пожалуй, стала Intrinsic Gravity от Still. У них в принципе много хороших демок, но в душу запала именно эта.

https://demozoo.org/productions/130155/

Минималистичный чёрно-белый (в его первой половине) перформанс с очень плавными переходами между сценами и в принципе красивыми визуальными эффектами.

Я хочу быть, как они.

Именно это мне пришло в голову первым делом.

Но делать первую демку с таким качеством невероятно сложно. Делать все эти эффекты, которые я даже не знаю, как делаются, ибо не силён в математике, синхронизировать это всё с музыкой и друг с другом, в конце концов, придумывать сами сцены и то, как они будут сочетаться друг с другом. Если бы я сделал такое - я бы выгорел из-за первой же работы, зато получил бы больше похвалы, чем я рассчитывал, а рассчитывать на многое я не привык. И тут я вспомнил про другие группы и демки. Среди них:

- I Was Once Here от Brainstorm. По воспоминаниям - добротная poetry-работа с небольшим разнообразием по визуалу, но смотрится классно.

https://demozoo.org/productions/109207/

- Tengomenas от Traction. Несмотря на попытки в анаглифное 3D (к слову, только ради этой демки я купил себе сине-красные очки), эта демка ещё в 2007 году показала тот самый концепт, что через восемь (я правильно посчитал?) лет сделают Still - монохром, минимализм, крутые сцены.

https://demozoo.org/productions/67721/

- Meaning // Less от Husvagn Crew. Демка, состоящая из минимума кода и максимума картинок, сменяющих друг друга по заданным параметрам, как сториборд в какой-нибудь ритм-игре, дали мне понять, что демки можно делать и так. Да и выглядит оно не менее клёво.

https://demozoo.org/productions/157147/

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


===

ВЫБОР ПЛАТФОРМЫ

Если кратко. Кодить я не умею, как и рисовать (я вообще ничего не умею, если честно), в математике я плох, но демки делать хочется. Что делать? Искать движки, конечно же.

Начал я с Tooll2, потому что на нём сделаны Intrinsic Gravity и ещё несколько не менее классных работ. И практически сразу же закончил. Работал он нестабильно, при большом количестве объектов мог не выдержать и вылететь, работал только под Windows, весил как крыло самолёта, использовал "сомнительные" библиотеки типа BASS, да и схема расположения блоков снизу вверх меня как-то не совсем устроила уже тогда. Тесты я проводил в 2018 году, и даже после смены компьютера на другой, сильно помощнее, проблемы не исправились. Пропускаем.

Использовать движки для разработки игр вроде Unity или Unreal Engine? Ну, да, их используют в демосцене, но ограничений там ещё больше, да и относятся к ним с презрением. VVVV? Кто-нибудь вообще знает, что это, или тоже только на бумаге видели? Werkkzeug? Не забывайте, что я плох во всём. Про связки для разработки интро вроде BEPCT4K или Compofiller Studio (которые, впрочем, в основном представляют примерно одинаковый набор из 4klang, Shader Minifier и Crinkler) вообще речи не идёт.

И тут я увидел, что Holon использует какой-то там cables. Всё работает прямо в браузере, работает стабильно и не хуже, чем в Tooll2, сторонних библиотек по минимуму, так оно ещё и сравнительно удобное. И решено было бороться с ним до конца. Как понятно из результата, получалось у меня это с переменным успехом.


Внимание! Дальше будут описаны все сцены в порядке их появления и их предыстория. Это вовсе не значит, что каждая сцена была написана друг за другом. Просто мне так удобнее рассказывать.


===

СЦЕНА 1. ПРИМИТИВНЫЕ ФИГУРЫ

Эта сцена делалась примерно в середине, когда я понял, что мне нужна какая-нибудь понятная для восприятия начальная сцена. Когда-то давно у меня появилась идея - "а что, если я сделаю четыре треугольника, внутри которого будет постепенно увеличиваться ромб"? Сказано - сделано. Получилась сцена с четырьмя треугольниками и увеличивающимся ромбом, который по факту развёрнутый на 45 градусов квадрат. Треугольники, кстати, тоже увеличиваются, образуя в итоге замкнутую фигуру. А в изначальной версии квадрат не продолжал увеличиваться дальше - такая интересная фишка была добавлена примерно за неделю до предполагаемого релиза.

Честно говоря, рассказать про эту сцену больше нечего. Ну, разве что отметить интересное расположение текста, который не видно изначально, да и всё. Дальше.


===

СЦЕНА 2. ПОЛНОЭКРАННАЯ СИНУСОИДА

Эта сцена лично для меня адовая по своей структуре, хотя ничего интересного в ней нет. Всё дело в том, что единственная линия, которую я могу гнуть во все стороны - это spline mesh. Но его основная проблема в том, что он этот меш, по крайней мере, во время разработки был фиксированного размера и фиксированной толщины, и его увеличение с помощью Transform или камеры лучше не делает - я либо теряю в количестве максимумов и минимумов, либо в амплитуде. Однако примерно в этот момент мне в руки попал оператор Repeat, который может повторять один и тот же оператор по заданному критерию. Что я, собственно, и сделал - нарисовал один меш и просто повторил его вверх несколько десятков раз, пока он не заполнил всё пространство. Выглядит это примерно так:

И я честно не помню, почему оно выглядит именно так и почему оно вообще работает.

Это, кстати, стало одной из причин, почему в демке фиксированное соотношение сторон в 16:9, и даже так вылезают баги - на скрине слева видно чёрное пространство внутри белой волны.

Ну и раз мы тут про баги - оператор TextMesh, если его расположить в белой зоне, в которой как раз и крутятся SplineMesh, ведёт себя примерно вот так. И выглядит это очень круто.


===

СЦЕНА 3. МНОГО КВАДРАТОВ

Эта сцена была полностью создана в университете на парах, на которых мы делали примерно ничего. Несколько эпилептиков, кстати, эту сцену не выдержало, я тестировал.

В бой пошла моя древняя идея о том, что с помощью правильного построения камеры и ракурса самого объекта можно сделать что-то похожее на каменную дорожку с checkerboard-узором, уходящей вдаль в бесконечность; впрочем, эта идея отложена до лучших времён и пока не была использована в том виде, в котором я её задумывал. Однако прямо в cables есть связка операторов PointsHexagonGrid и MeshInstancer, которые помогли воплотить эту идею в реальность.

В итоге рендерится что-то около 2500 квадратов в каждой стороне - сверху и снизу, из которых видно лишь очень малую часть. По-хорошему, весь этот паттерн выглядит примерно так:

Но из-за угла, под которым эти паттерны расположены, остаётся огромная пропасть по левой и правой краям. Рендерить больше квадратов было бы неразумно - университетские ноутбуки уже перестали переваривать такое количество объектов, да и лучше, собственно, вряд ли стало бы. Поэтому решено было оставить то, что уже наработано, и немного приблизиться к центру с помощью камеры. Так эта сцена слегка напоминает скроллер Star Wars (интересно, чем?..) и сцену с полётом из концовки демки Overdrive II. И, чтобы сцена не выглядела пустой, решено было добавить поворот квадратов на 90 градусов. Потому что это стильно.


===

СЦЕНА 4. ПАЛОЧКИ И ТОРУС

На самом деле, именно с этой сцены всё и началось. И по факту изначально эта сцена выглядела примерно так (скриншот датирован 25 марта 2021):

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

Вот в чём дело. Если попытаться просто крутить этот торус, то никаких проблем не происходит. А вот если попробовать прилепить к нему текстуру и попробовать покрутить её, начинается вот это:

И это, прошу заметить, официальный оператор Torus, встроенный прямо в cables. Окей, пишу в чат, мол, может ли кто помочь, и мне присылают просто гениальный ответ в духе "этот торус забагован, используй свой". Буквально.

Окей, свой - так свой.

Ну, не совсем свой. Чужой, но не тот, что встроен в cables, потому что стоило мне только открыть Blender, как я тут же потерялся, и делать там бублик я просто не отважился. Пошёл на поиски нужного мне объекта на Sketchfab. И если половина торусов не умела натягивать текстуры вообще, то вторая делала это либо криво, либо так:

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

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

Это сейчас всё выглядит достаточно просто. А для того, чтобы разобраться с этим мне, по факту пришлось потратить несколько дней, пару раз забить на это всё примерно на полгода, поговорить в чате разработчиков cables и с парой 3D-модельеров.

А дальше не особо интересное. По центру торуса находится чёрный непросвечиваемый круг, за которым изначально находятся все палочки, которые потом разлетаются в разные стороны. Однако мне до сих пор кажется, что они начинают это делать достаточно быстро, хотя я их сильно замедлял перед релизом...


===

СЦЕНА 5. АСИНХРОННЫЕ КРУГИ

У меня к тому моменту уже кончались идеи. Эта сцена была сделана либо последней, либо предпоследней, и в поисках идей, как можно красиво и просто сделать чёрно-белую анимацию, я буквально вбил в гугле monochrome gif animation. Среди сотен разных залипабельных идей мне под руки попалась анимация под авторством p5art (ссылку можно найти в .nfo-файле). Она была написана на Processing и представляла собой некоторое количество кругов, которые уменьшались и увеличивались ровно друг за другом. Я решил, что могу сделать гораздо лучше, и сделал так, чтобы все круги двигались асинхронно друг другу. В итоге эта сцена стала моей любимой, даже несмотря на чужую идею и простоту исполнения.

Неинтересный факт - для того, чтобы анимация кругов вообще начала работать, её нужно перезапустить (это относится и к предыдущей сцене, к слову). В моём случае они перезапускаются прямо на старте демки, каждый в своё время, чтобы добиться эффекта асинхронности. А для непосредственно перезапуска используется оператор TriggerIfIncreased, который с помощью костылей позволяет нажимать на кнопки прямо из таймлайна, иначе никак.


===

СЦЕНА 6. ПИРАМИДА И ПРИВЕТЫ

Демка без секции greetings выглядит бедной. Поэтому такую решено было встроить и в мою работу. Я в основном людей и группы, творчество которых так или иначе повлияло на моё. И если некоторые группы я указывал в самом начале, то некоторые остались без внимания. Если кратко - Holon просто делают крутые демки, ещё и поддерживают cables; SandS сделали просто великолепную HAL 4000 (лучшая 4к-работа на данный момент, моё мнение); Logicoma и Ninjadev делают ничуть не хуже тех же Still в плане эстетики и плавности переходов, а Polarity и Prismbeings... ну, я просто уважаю работы yx и noby. А не указать Demozoo просто было бы для меня непростительно - в конце концов, я участник местного стаффа. К слову, изначально имена должны были появляться постепенно, но в итоге от этой идеи решено было отказаться, да и статичный текст выглядит более связанно со всей остальной демкой.

Сам же эффект изначально включал в себя только медленно появляющуюся пирамиду с "тенью" от каждого предыдущего сегмента, которая по факту является просто чёрным квадратом над белым, однако в какой-то момент её решено было немного покрутить, что дало сцене определённую изюминку. Скорее всего, на большом экране этот эффект выглядит довольно зрелищно, но я не проверял.

Неинтересный факт - буква z в этом шрифте чутка сломана и рисуется с точкой снизу справа. Да, это не баг рендеринга, а именно ошибка шрифта.


===

СЦЕНА 7. ТОННЕЛЬ

"good demo needs good tunnel!" - mu6k

Эта сцена, прямо как пятая, делалась одной из последних, и являлась подводкой к самому концу, в которой я бы написал название самой демки.

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

К слову, это не трёхмерные объекты, а просто обычный оператор RectangleFrame, который повторяется в пространстве ещё несколько раз с помощью оператора Repeat. Если подлететь камерой поближе, можно увидеть зазоры между слоями - Repeat не давал сделать их ближе, а сам объект RectangleFrame не имеет толщины.

psenough, кстати, после просмотра спросил, не опечатался ли я здесь, и не должен ли был написать now вместо know. Но вроде нет, не должен был. Хотя идея звучит классно.


===

СЦЕНА... А СЦЕНА ЛИ ЭТО?

А вот и финальный экран. Название демки, чуть ниже - основные авторы, в углу - название группы... вместо копирайта. Ну серьёзно, какой тут копирайт, если демка распространяется под Creative Commons.

На этом, собственно, демка закончилась. Можно позалипать в этот экран, а ещё лучше - нажать Esc и закрыть всё, что с этой демкой связано. Спасибо, как говорится, за просмотр. А статья на этом не закончилась, не спешите.


===

ФИНАЛЬНЫЕ ШТРИХИ

Когда всё было готово, решено было добавить несколько дополнительных штрихов, чтобы демка выглядела не так пусто. Некоторые части были слегка переделаны - в первой сцене, как уже было написано, квадрат увеличивается до конца сцены, в четвёртой сцене слегка изменился random seed разлетающихся палочек, в пятой сцене немного переделана анимация каждого круга, чтобы они выглядели более индивидуально. Был добавлен бар, который позволяет включить и отключить полноэкранный режим - многие так делают, вот и я решил. Но главное, что было добавлено постфактум - это текст.

Название работы - Nothing Is Right - я придумал уже довольно давно, и отказываться от него уже не особо хотелось. И да, для тех, кто почему-то вдруг думает, что демка названа именно так и сделана именно в таком псевдо-депрессивном стиле из-за сегодняшних реалий или моего постоянного current mood - вообще нет. Собственно, поэтому и были выбраны небольшие строки о том, что всё выглядит как-то неправильно. Причём, каждой сцене был придуман подходящий "слоган". Экран делится напополам - что-нибудь про равенство, по экрану разлетаются палки - что-то про хаос, и так далее. Собственно, Gargaj, который написал, что эти строки больше похожи на недо-нигилизм, скорее прав - изначально в них не был заложен какой-то единый смысл. К слову, строка "you're not the target market" - отсылка к демке Number One/Another One с её строкой "you are the target market".


===

.NFO-ФАЙЛ

Лично для меня .nfo-файлы всегда были отдельным произведением искусства. Иногда погружаться в эстетику текстовых файлов, в которых написана некоторая информация о релизе, интереснее, чем смотреть сам релиз. И пускай мой файл не отличается умом и сообразительностью, я попытался выдержать собственный стиль.

Я где-то вычитал, что файлы file_id.diz, контент которых выводился в BBS-ки, обычно не был шире 40 символов. Мой же файл не превысил ширину в 39 символов, и был сделан так, чтобы весь текст находился чётко по центру - для этого мне пришлось сделать так, чтобы каждая строка имела нечётное количество символов. К сожалению, не всегда получалось - что название группы, что название демки имело чётное количество символов, поэтому пришлось немного хитрить. Получилось в итоге не очень красиво, зато всё в одном стиле.

К слову, ext.credits можно расшифровать и как external, и как extended - в конце концов, эти люди сильно повлияли на саму демку, пусть в ней и не участвовали. А решил я так сделать после пары скандалов, в которых авторы своих демок вставили чужой контент и даже не пометили, что он чужой. Перестраховался, скажем так.

Идея вставить цитату из какого-либо медиапродукта ко мне пришла не сразу. Скорее, она пришла после того, как я начал читать визуальную новеллу If My Heart Had Wings, и пару цитат оттуда прямо таки просились в информационный файл... вы их ещё увидите, думаю. Однако, недолго думая, я решил взять цитату из (до сих пор) моего любимого аниме, крайне интересно поднимающего тему творчества - "Кошечка из Сакурасо", из не менее любимой 21 серии, если быть точным - я её одну пересмотрел раз двадцать. А выбрал я именно её как раз из-за основного лейтмотива демки. В одном из фанатских переводов на русский эта фраза звучит так:

"Этот мир несправедлив. У обычного человека в нём нет и шанса. Хоть всю жизнь старайся, всё равно ничего не добьёшься. Мы до смерти себя загоняем, но всё зря. Нет смысла трудиться! Ни для кого и ни для чего! Мы делаем всё, что можем, но не можем сделать ничего."


===

МУЗЫКА

Для меня музыка в демосцене - это что-то определяющее. Именно она даёт понять, как должна выглядеть демка в целом, как в ней должны быть сложены сцены и какой эффект после какого должен идти. Это вообще очень важный аспект, который может определить крутость демки отдельно от самой демки, и, так уж получилось, что у многих работ я запоминал именно звук, а не визуальную составляющую.

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

Сам музыку писать я не умею. (а что я тогда вообще умею...) Поэтому за помощью я обратился к одному старому другу - STZoro. Уж у него точно есть архивы с музыкой, и явно найдётся что-нибудь, написанное в далёком 2011 и не пригодившееся до сих пор. Так и есть - из трёх треков, что он скинул, мне пришёлся по душе The Decayed Dream - именно он играет в демке.

Синхронизировать тут, пожалуй, нечего. Кроме моментов, когда музыкальные фрагменты начинают повторяться - именно тогда и нужно ставить переходы между сценами через затухание. То, что у музыки есть абстрактный BPM, - я понял на слух, а вот какой именно - пришлось вычислять. Тут у каждого свои инструменты, но я для этих целей использую... игру osu!. Серьёзно.

З.Ы. Аккаунт можете не искать - он уже удалён.

На скрине выше - тайминг трека, который давали на недавний Fast Challenge Compo, в котором я, впрочем, отказался участвовать после выбора тем... так, отвлеклись.

Это определённо не самый удобный способ. Синхронизировать эффекты между osu!, которая считает музыку в миллисекундах, и cables, который считает, что в секунде 30 кадров, конечно, непросто. Зато я знаю точное время каждого момента трека, вплоть до 1/16 от его BPM, а если он ещё и непостоянный - контролировать его тем более довольно просто. А может, всё дело в том, что с этой игрой я знаком примерно столько же, сколько с самим понятием демосцены, и использовать именно её мне просто привычнее.

В случае с моей демкой всё было предельно просто. Высчитал BPM - понял, на какой секунде идёт музыкальный повтор - поставил плавное затухание текущей сцены и плавное нарастание следующей. К слову, даже этот эффект сделан достаточно костыльно - я просто натянул прямоугольник на весь экран и менял его прозрачность. И тут я был очень удивлён одним фактом - если в таймлайне сделать одну зацикленную фигуру, то она может бесконечно продолжаться. Однако демка имеет как минимум одну сцену, экранное время которой существенно меньше, да и конечный экран хотелось бы оставить статичным, поэтому пришлось немного покопировать и попеределывать. Зато получилось.

Кстати, неинтересный факт - если подождать некоторое время на последнем экране, он снова уйдёт в фейд. Пусть будет не баг, а фича.


===

РЕЛИЗ

Демка была готова к релизу примерно весной 2022. Но, к сожалению, тогда в списке попадались либо демопати вроде Revision или Assembly, на которых я не релизнусь в здравом уме, ибо понимаю, что меня там ждёт, либо локальные демопати по определённым платформам вроде Outline или Gerp, и ждать на них современные демки не стоило бы.

Ближе к лету начали появляться более понятные предложения - Field-FX, qbParty, на худой конец Underground Conference. Но я решил подождать другого мероприятия - Black Valley, которое проходило в этом году впервые (вероятно, вместо Solskogen - в последний раз он был в 2020 году, и то онлайн). А решил я попытать удачу, потому что хотел поддержать пати своей работой, да и некоторых людей из списка организаторов я уже знал.

Подготовка была серьёзной. Написал инструкцию, как демку лучше запускать, спросил у организаторов, не занят ли у них определённый порт, чтобы захостить демку (специфическая проблема cables - без сервера демка вообще отказывается работать), загрузил саму демку в несколько разных инстанций, чтобы до неё точно можно было докопаться - почта не позволила скинуть архив с демкой, и так далее, и тому подобное. И вот наступает день X. В этот день помимо проведения демопати у меня ещё проходил День города, на который решено было съездить. И вот, просматривая салют, я со скрипом перегруженной сети пытаюсь одним глазом посмотреть стрим. Вот он, долгожданный момент - Newschool Compo!.. и моей демки нет в списке. Ни предупреждения, ни сообщения, ничего. Просто молчаливая дисквалификация.

И я отчаялся. С одной стороны - блин, печально, что твою первую работу не показывают. Зная мой предыдущий опыт, когда я пытался пропихнуть что-то своё первое (при этом адекватно выглядящее) и получал сотни отказов, я махнул на всё рукой и подумал что-то вроде "а может, ну его всё, первый блин и так комом". Но что-то пробудило во мне дополнительные силы. Их было немного, но они были.

Абсолютно не церемонясь, я решил без всякой подготовки кинуть эту же демку в ближайшее демопати - им оказался Edison. Зарегистрировался, закинул файл, без вопросов стал ждать самого мероприятия. На удачу. Не получится - значит, не моё. Получится - здорово.

Наступает день Y (ну, потому что день X уже был). Я посматриваю стрим, на котором всё происходит с дичайшими задержками, которые можно было бы спокойно предотвратить, если не болтать по полчаса о каких-то оффтопных вещах. Московское время - четыре часа ночи. "Всё. Не могу. Надо спать." - сказал себе я, отложил телефон, но решил не включать интернет. Прошло полчаса. Ради интереса с сонными глазами взял телефон в руки. Вижу одно новое уведомление из Discord'а. Комментарий к демке.

Всё, успех. Мою демку показали, пусть и в половину пятого ночи - это ли не чудо.

На следующий день меня запинали в Телеграме. Почему-то хвалили. Но самое интересное происходило на самом пати. Сначала я решил пересмотреть момент, где показывали мою демку - оказалось, что сначала запустили не ту работу. Вот это я понимаю, nothing is right. А потом решил посмотреть на объявление результатов. Среди шести работ я рассчитывал оказаться на шестом, собственно, месте. Но нет - третье. С хорошим таким количеством баллов - 128 (демка со второго места собрала 134 - немного не хватило, но я всё равно был счастлив). Попасть в верхнюю половину результатов - это уже знак.


Знак того, что это не конец.

И близко нет.

Report Page