ZeroNet Blogs

Static ZeroNet blogs mirror

Краски Сентября

Моя интерактивная литература

Привет! Эта запись пишется в Haiku, установленной на ноутбуке. ZeroNet взят из git. Для его запуска понадобилось поставить пару модулей через pip, с указанием библиотеки сетевых функций:

-> LIB=-lnetwork pip install msgpack gevent

zeronet-haiku.png (1366x768)


Сам текст набирается в консольной версии emacs, с включённым flyspell-mode. Правда, чтобы это стало возможным, мне пришлось внести правки в порты aspell и emacs.

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

Апология

Зачем? Если ответить лаконично, то я чувствую, что как программист я давно не нужен Linux'у. Linux уже продолжительное время не испытывает недостатка ни в фичах, ни в разработчиках. Haiku напротив, остро нуждается в поддержке.

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

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

screenshot2.png (1366x768)

Итак, моя апология проста -- Haiku интересная ОС!

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

Миниатюрность

Haiku обладает изяществом. На моём далеко не новом ноутбуке установлена Ubuntu и Haiku. Давайте замеряем скорость загрузки.

-> shutdown -r
# прошло немного времени...

Ubuntu загружалась 30 секунд до GDM и еще где-то 7 секунд до рабочего стола. Haiku загрузилась до рабочего стола примерно за 20 секунд.

У меня есть второй древний ноутбук на Pentium. Haiku стартует на нём примерно за те же 20 секунд.

Haiku не поддерживает никакого режима сна. Но скорость загрузки (и моментальное выключение) это частично компенсирует.

Я уже писал, что исходные коды системы занимают пару сотен мегабайт.

Я был не вполне прав. Часть редко изменяемых компонентов (например, WebKit) поставляются в виде готовых собранных пакетов, что сильно ускоряет сборку. Тем не менее, как и в случае с BSD, вся система представляет из себя единый проект, что упрощает её изучение.

Несмотря на лаконичность, система все-таки поддерживает основное оборудование. По крайней мере на ноутбуке заработал звук, wifi, проводная сеть. Можно установить яркость подсветки (на intel).

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

Однопользовательская система

Да, система однопользовательская. Да, можно написать rm -rf / и я думаю, это приведёт к проблемам, так как сотрёт пакеты и на следующей загрузке они не подмонтируются. С другой стороны, в Unix можно стереть свой домашний каталог, а это ведь и есть самые важные файлы в системе. :)

Зато это, в каком то смысле, упрощает жизнь. По крайней мере, я это ощутил. Просто запустил и работаешь. Никаких sudo, никакой мороки с правами. Никаких авторизаций. :) Пишу это и прямо вижу как трясёт бывалого Unix-оида. Понимаю, и мне даже нечем вас утешить, кроме того, что я сам Unix-оид. :)

Впечатления от использования

Пользоваться системой можно. Типовые программы, которыми я пользуюсь чаще всего:

  • терминал;
  • emacs (flyspell, w3m);
  • Браузеры Qupzilla и Dooble (в целом, адекватны современному интернету);
  • Telegram клиент;
  • Vision (irc клиент);
  • LibreOffice;
  • ZeroNet;
  • qbittorrent;
  • MediaPlayer;
  • Mail;
  • INSTEAD.

Чего нет, и я это заметил:

  • gimp (вообще, нет ничего gtk-шного, так как этот тулкит не перенесён. Но есть Krita);
  • inkscape;
  • darktable;
  • firefox.

В плане энергопотребления, система ест точно не больше Ubuntu.

Пакеты и обновление системы

Я переключился на ночные сборки репозиториев. Это можно сделать через GUI или прямо в консоли. После этого, обновление делается просто:

-> pkgman update
-> shutdown -r # если обновилась система

Я уже писал, что установка пакета -- это его монтирование. Это, кроме красоты, несёт и полезное свойство -- возможность откатываться к прошлым состояниям. Например, после одного из обновлений системы, мой второй ноутбук стал виснуть на загрузке. Чтобы вернуться к рабочему состоянию, я просто нажал "пробел" в момент работы загрузчика и выбрал предыдущее состояние из списка... То-есть, система поддерживает журнал состояний системы в смысле установленных пакетов. Правда, если этот журнал разростётся, это начнёт замедлять работу загрузчика.

Состояния записываются в /boot/system/packages/administrative и вы можете их почистить.

Часто бывает нужно заменить какой-то один из компонентов пакета. Например, драйвер. Для этого предусмотрен каталог /boot/system/non-packaged. Например, таким образом я отлаживал драйвер wifi. Чтобы не пересобирать всю систему, я собирал только драйвер и клал его в non-packaged.

Разработка портов

sopwith.png (1366x768)

Я внёс несколько изменений в некоторые порты. В частности, одно из изменений позволило мне писать этот текст в emacs. На самом деле, для разработки портов порог вхождения совсем не высок.

Вы забираете дерево haikuports и haikuporter из github. Читаете инструкцию и вот, вы уже готовы собирать пакеты из исходников.

Если нужно изменить какой-то пакет, то к вашим услугам функции haikuporter по автоматическому созданию патчсетов. Добавить новый порт -- тоже не проблема. Дальше -- делаем PR и ждем...

Есть, конечно, свои нюансы и вопросы:

  • как должна выглядеть структура каталогов пакета;
  • как создать векторную иконку;
  • где хранить настройки программы;
  • и т.д.

Но во всём этом несложно разобраться, а описание процесса создания пакета -- отдельная история.

В качестве примера, вот как выглядит рецепт для INSTEAD.

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

Сборка системы

Систему очень просто собрать. Причём сделать это можно как изнутри самой Haiku, так и на Linux-машине. Во втором случае вам придётся собрать сначала тулчейн. Но сделать это нужно будет один раз. Сборка на Debian не вызвала проблем. На i7 она прошла довольно быстро. Для собрки образа, который можно записать на флешку используйте цель @nightly-anyboot.

-> jam -q @nightly-anyboot

Вообще, система сборки очень простая. Например, когда я что-то исправляю в системе, я собираю на самой системе только то, что нужно:

-> jam -q iprowifi4965
-> cp objects/haiku/x86_64/release/add-ons/kernel/drivers/network/wlan/iprowifi4965/ipro
wifi4965 /system/non-packaged/add-ons/kernel/drivers/bin/iprowifi4965

Вот и весь цикл разработки. В общем, это всё создаёт приятное ощущение того, что ты владеешь системой. То чувство, которого почти не осталось в Linux. Я приведу пару примеров.

Пример 0: xhci

Когда я только поставил систему на ноут и сделал:

-> tail -f /var/log/syslog

То увидел постоянные сообщения от ядра системы... Мне это не понравилось. Я скачал исходный код и нашёл сообщения в коде. После этого я собрал haiku.hpkg с отладочными сообщениями xhci и начал искать проблему. Довольно быстро удалось найти ошибку и исправить её.

Кстати, это не тот syslog, что используется в Unix. Например, в него сохраняются сессии из отладчика ядра KDL.

Пример 1: iprowifi2100

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

Теперь адаптер iprowifi2100 снова работает во FreeBSD и в Haiku.

Пример 2: почта

Встроенная в Haiku почта работает довольно занятным образом. Почта забирается специальным демоном mail_daemon:

~> launch_roster info x-vnd.be-post

Почтовые сообщения складываются в виде отдельных файлов в свои каталоги. Дальше, вы открываете файловый менеджер и смотрите сообщения.

mail-attr.png (832x436)

Если вы выберете какое-то из сообщений -- откроется программа просмотра (и написания) почты. Красиво и просто.

К сожалению, почта у меня не работала с mail.ru и частенько валилась. После марафона отладки появилась серия патчей, которая позволяет мне пользоваться почтой на постоянной основе.

Отладка

Если ядро по какой-то причине упадёт, то вы попадаете в отладчик уровня ядра. Вы можете вызвать его и без ожидания падения, конечно. Для этого нажмите: alt+PrtSc+d. Для продолжения работы наберите cont. Я не буду подробно описывать отладчик. Если вы разработчик уровня ядра, то разберётесь. Я просто упоминаю сам факт наличия этого отладчика из коробки. Это здорово!

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

segfault-mail.png (1366x768)

В общем, установив систему, вы сразу готовы к полезной деятельности. ;)

Рассмотрение патчей

Патчи для Haiku (ядро и окружение) принимаются через систему gerrit по адресу: https://review.haiku-os.org,

screenshot4.png (1366x768)

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

Но на самом деле gerrit оказался удобной и полезной штукой. Кратко, алгоритм действия такой:

  • Регистрируетесь на https://review.haiku-os.org
  • Добавляете свой открытый ssh ключ
  • Забираете проект git clone ssh://user@git.haiku-os.org/haiku
  • Далее, можно пустить бранч и делать изменения
  • $ git commit
  • $ git push origin HEAD:refs/for/master

Далее, вам могут написать замечания, которые вы отрабатываете.

  • Отработали замечания
  • $ git commit -a --amend
  • Убедиться что в комментариях к коммиту есть "Change-Id: ID тикета в gerrit"
  • $ git push origin HEAD:refs/for/master

Вы можете прочитать о правилах добавления своих изменений здесь.

Также будет полезен Development FAQ.

Вместо заключения

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

Мы живём в мире, где ценность принято мерить коммерческой эффективностью. Я лично не разделяю такого взгляда на мир. История развития ИТ знает много примеров, когда отличные, красивые решения были вытеснены громоздкими и уродливыми продуктами. Похожие вещи можно найти и в других сферах человеческой деятельности... Так или иначе, Haiku -- очень интересная система, которой не хватает внимания свободных разработчиков. И кто знает, может быть, вы и есть такой разработчик? :) И если моя статья вас заинтересовала -- я достиг своей цели.

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

Не так давно я выпустил модуль INSTEAD для написания игр с текстовым вводом. Модуль я писал с расчётом на русскоязычную аудиторию и авторов. Но хотелось, конечно, чтобы при желании можно было написать и англоязычную игру. Поэтому я добавил в модуль и английский вариант библиотеки.eng-mp3.jpeg (1024x576)


Так вот. Я, конечно, понимал, что английский вариант будет проще, но не ожидал, что настолько проще!

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

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

Один простой пример. В русском языке у нас большинство неодушевлённых предметов имеет род. В английском не так. Конечно, там тоже есть "ship" как "she" и так далее, но это все-таки скорее исключение. То-есть, говоря "ложка" или "нож" -- я ловлю себя на мысли, что моё отношение к этим предметам окрашивается в разные оттенки в зависимости от рода! В английском это "it" - и всё тут. С точки зрения разума -- всё верно. Это предмет, какой тут может быть род?

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

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

При работе над английской библиотекой метапарсера, очень наглядным стало ещё одно отличие. Обилие глаголов с похожим смыслом (но разными оттенками) в русском. В английском языке было интересно обнаружить множество вариантов "взять", "атаковать" и "изучить". Но для большинства других глаголов, вариантов очень мало.

diff.png (1365x469)

Так что русский язык очень эмоционален и выразителен. И мне лично это нравится. Почему? Не потому ли, что я уже изменён языком (прошивкой)? Или, все-таки, потому, что мой язык мне соответствует?

В общем, философия языка, должно быть, очень глубокая и интересная тема...

На днях прочитал на OpenNet новость о переходе Haiku в статус бета-версии. "Гайка", одна из тех "гиковских" ОС которая мне всегда нравилась. Вообще, среди всех альтернативных ОС она казалась самой "человеческой". Смотрел я её последний раз года 3 назад и думал, что разработка "угасала". Так что новость, конечно, порадовала и я решил посмотреть как дела у ребят на данный момент...


screenshot5.png (1280x1024)

Если вы вообще не знаете, что это за система, то это попытка воссоздать BeOS. Лично я никогда не пользовался оригинальной BeOS, поэтому для меня проект представляет интерес просто как пример "гиковской" ОС для души. Причём эта ОС изначально позиционируется как ОС для пользователей, в которой GUI -- это неотъемлемая часть системы. Это очень здорово. Итак, что я увидел...

Главное. Haiku при желании можно использовать на реальном железе. Я пробовал загружаться с USB флешки на ноутбуке (Thinkpad на i3) и на рабочей машине. Система грузится. Сеть, Wifi, звук -- работают. Это важное свойство. Я люблю запускать системы на реальном железе. Это мотивирует, в том числе, и разработку для этой ОС.

Система стартует просто реактивно! Я думаю, если искать практическую ценность проекта, то если у вас где-то на полке пылится дохлый нетбук -- это хороший кандидат для установки на него "гайки".

Оконная система оставляет приятное впечатление. В ней есть встроенное средство делать "табы" из окон. Достаточно нажать кнопку "win" и перетащить окно за ярлычок к другому окну. Также, окна можно цеплять друг к другу в режиме тайлинга. Вот как это выглядит.

tiling.png (1280x1024)

Теперь, система собирается и для 64 битных платформ. Раньше, система была привязана к gcc2. Это было обусловлено целями проекта -- бинарная совместимость с оригинальной BeOS. Мне это казалось ненужным ограничением в наше время. И к счастью, теперь гайка собирается в том числе и gcc 7й версии! Для 32 и 64 бит. Но есть вариант сборки с gcc2. Я ставил 64 битные сборки.

В системе есть прекрасный пакетный менеджер и дерево портов. Это значит, что установка и обновление софта делается просто: pkgman update. Естественно, не обязательно делать это из консоли, но мне так привычней. Сама пакетная система тоже интересная. Пакеты -- это образы, которые монтируются ядром прозрачным образом. Это реально очень круто! И похоже, позволяет просто откатываться к нужным состояниям пакетов.

Система не Unix-подобная. Более того, она однопользовательская. Но есть слой POSIX совместимости, что даёт возможность собирать многие привычные программы и библиотеки: bash, mc, git, qt5, sdl2 и другие. Сейчас в репозитории больше 4000 пакетов.

Если забрать из git исходный код гайки, и посмотреть сколько занимают исходные коды базовой системы (ядро + окружение), то это будет около 150Мб. Это нереально круто! Например, для сравнения распакованное ядро Linux 4.14 это ... 775Мб.

Строго говоря, в гайке используется не микро-ядро. Но и монолитом его сложно назвать. Не смотря на то, что сеть, драйверы и файловая система (sys/add-ons/kernel)выполняются в режиме ядра, в модульном смысле они отделены от "микро-ядра". Размер которого не превышает 5Мб (sys/system/kernel). Часть сервисов выполнены уже в традициях микро-ядерной архитектуры и выполняются в режиме отдельных процессов (servers/).

В общем это всё напомнило мне ядро Windows NT. Его тоже можно было бы назвать гибридным, по крайней мере в начале, когда графическая подсистема ещё не стала частью ядра, а OS/2 и Win32 были просто службами.

Ядро написано на cpp и это очень чистый и приятный в эстетическом плане код. Кстати, ядро Haiku развивалось как форк NewOS. Ядро NewOS написано бывшим инженером BeOS Тревисом Гейсельбрехтом, ныне работающем в Google над ОС Fuchsia. Ядро которой (Zircon) уже является настоящим микро-ядром. Но об этом в другой раз.

Конечно, первым делом я попытался перенести на гайку INSTEAD. SDL и SDL2, luajit и libiconv уже были в портах, поэтому сборка не представляла проблем. Правда, сборка с SDL2 имела дефекты со звуком (трекерная музыка) и курсором. Поэтому, я откатился на SDL1.

screenshot4.jpg (1024x768)

Дальше я уже попытался сделать полноценный порт. Мне помогали ребята с Telegram канала. В целом, способ работы с деревом портов тоже очень удобный. Работа автоматизирована с помощью haikuporter. Вот каким получился файл-рецепт для INSTEAD. Я также написал небольшой код, реализующий диалог выбора файлов и изменил место хранения настроек и игр в соответствии со стандартами Haiku.

screenshot3.png (1280x1024)

Потом я вошёл во вкус и исправил небольшие ошибки в портах SDL и SDL2, которые тоже были смержены в дерево портов.

Вообще, Haiku это как раз тот проект, который прямо манит меня, чтобы стать еще одним проектом "для души".

Если говорить о проблемах, то их, конечно, достаточно:

  • нестабильный веб-браузер WebPositive;

  • отсутствие suspend to ram/disk (правда, система грузится настолько быстро, что это можно не считать реальным недостатком);

  • незрелая поддержка USB3;

  • отсутствие 3d ускорения видео;

  • ...

Однако, я никогда не понимал людей, подходящих к таким проектам с точки зрения выполняемых функций. Я помню времена, когда я занимался ядром Windows NT и Linux 2.xx показался мне убогой поделкой. Да, ядро было объективно хуже. Система (я не помню точно, что это был за дистрибутив. KSI Linix?) вызывала рвотные позывы в течении месяцев. Однако было чувство чего-то неизведанного, красивого, ОТКРЫТОГО. Чего-то принципиально иного, принадлежащего не корпорации а нам -- программистам! Поэтому я работал с системой, изучал её и ... это стало моей новой работой. Потом, через год или два мой мозг уже стал мыслить в соответствии с Linux. Поэтому уже Windows NT стала вызывать рвотные позывы... Однако, это всё дало бесценный опыт. Я знал как работают ядра этих систем.

Если бы я рассуждал с точки зрения функциональности, честно, я бы пользовался Windows и сейчас. Если рассуждать с точки зрения функциональности, нужно быть с мейнстримом и точка. Поэтому мне очень близки гиковские проекты. Они собирают вокруг себя людей с пытливыми умами. А это и есть черта настоящих хакеров. Если человек снова затевает старую песню: "а вот у вас тут чего-то нет". Или: "А лучше Б, потому что мне так удобней"... Мне становится скучно. Посмотри, что хорошего в системе. За что её любят разработчики? Что нового ты можешь узнать.

О, смотри, она работает! Круто! Давай попробуем сделать это!

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

Да, Linux стал мейнстримом и востребованным в промышленной сфере. И уже новое поколение "фанов" часто смотрит свысока на другие хакерские системы. Примерно так же, как раньше смотрели на Linux. Какая ирония! Ребята, да вы проиграли сами себе! Конечно, это относится только к части "фанатов". Большинство разработчиков, все-таки, не растеряли духа свободы.

В общем, Haiku прекрасная система. Её есть за что любить. С ней приятно иметь дело и в роли разработчика, и в роли ... пользователя. Сейчас, когда многие любительские проекты закрываются, хочется пожелать "гайке" не сдаваться. А разработчикам -- не забывать о свободе и радости творчества. Помните, как называлась книга Линуса Торвальдса? :)

Чем хороши игры на PICO-8? Почти каждая из них - маленький концепт. И когда хочется расслабить мозги, вместо чтения новостей или социальных сетей можно просмотреть несколько таких "игрушек". И это может принести свои открытия! Да, существует TIC80 -- открытый аналог PICO. Не хуже (а может, и лучше!), но ограничения у него не такие жестокие, как у PICO. Разрешение 128x128 и фиксированная палитра так и призывают -- просто сядь и напиши игру! Жаль, что у PICO не открытый код. Но игрушка получилась классная. Мне кажется, проекты типа PICO (и его клонов) прекрасно подходят на роль инструмента для обучения программированию.


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

Сложно сказать о чём имеено игра STRUNG OUT in heaven's high. Но запустив раз, её не хочется закрывать. В чём секрет, я не знаю. Возможно, в прекрасном музыкальном треке. Летаем котом в "космосе". Собираем кислород, активируем спутники, смотрим старые фотографии... Рано или поздно кислород (или что там под понимается в игре под словом "nip") кончается.

cat.png (643x516)

Кстати, игры на PICO-8 вполне сносно запускаются в браузере смартфона. Просто надо нажать на кнопку full-screen после запуска. Общее с robotfindskitten здесь то, что практически мы просто смотрим разные объекты, читаем их описание. И движемся дальше... Только в этой игре появляется динамика в виде дефицитного ресурса. Прямо как в жизни.

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

duck.png (639x513)

Игра начинается как "симулятор кормления утки". Но дальше.... В общем, просто помните -- игра проходима. Пройти её можно за минут 5. Музыкальный трек в финале тоже достойный. Я надолго запомню этих уток...

Конечно, таких "особенных" и "сумасшедших" игр на PICO-8 от общей массы немного. И это хорошо! Потому что в игру Little Dragon Adventure можно поиграть не потому, что она странная, необычная или концептуальная. Нет, это просто качественная handmade игра, сделанная с любовью.

dragon.png (639x507)

Исследуем лабиринт дракончиком. Постепенно повышаем свои возможности. Это прямое заимствование из игры Metroid и в данном случае это плюс. Чувство исследования присутсвует. Игра полностью проходится минут за 10. Обратите внимание на простой, но запоминающийся трек. :) Ту-ту-ту-ду-ту ... ту... Ту-ту-ту-ду-ту... ту... :)

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

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

Интересно, что в INSTEAD похожие цели достигаются за счёт текстовой основы приключения. Для создания своей истории достаточно идеи и... немного практики.

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

Меня всегда интересовал механизм этого узнавания. Каким образом произведение вдруг становится признанным? Что или кто является критерием?


melvill02.jpg (300x426)

Вот и "Моби Дик" Германа Мелвилла не был принят современниками. Приведу несколько цитат:

«Моби Дик» не был принят литературной критикой и не получил успеха у читателей. От Мелвилла отвернулись. Мелвилл жил в Питтсфильде до 1863 года, продолжая писать и борясь с нуждой. Несколько книг, выпущенных им за эти годы, не восстановили его литературной репутации.

После разгромной критики вышедшего спустя год готического романа «Пьер, или Двусмысленности» (Pierre, or The Ambiguities, 1852), — где изображён писатель, который среди шумной толпы чувствует себя таким же одиноким, как на полюсе, — Мелвилл стал публиковаться анонимно, печатая рассказы в журналах.

Когда Мелвилл умер в 1891 году, то был уже настолько забыт, что автор короткого некролога в «Нью-Йорк таймс» не сумел правильно написать его имя.

С 1920-х началось переосмысление Мелвилла, и его признали классиком мировой литературы.

Началось переосмысление. Выглядит загадочно, правда? В английской статье на Wikipedia этот момент описан подробнее (спасибо @techniX).

The "Melville Revival" of the late 1910s and 1920s brought about a reassessment of his work. The centennial of his birth was in 1919. Carl Van Doren's 1917 article on Melville in a standard history of American literature was the start of renewed appreciation. Van Doren also encouraged Raymond Weaver, who wrote the author's first full-length biography, Herman Melville: Mariner and Mystic (1921).

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

Так что, после 70 лет люди, наконец, доросли до понимания творчества Мелвилла? Или, может быть, вернулась мода на романтизм? Или в 1851 году критики "перекрыли кислород", а через 70 лет нашёлся другой критик? Не знаю, я не искусствовед и я могу только удивляться.

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

Мы живём в цифровую эпоху. Что будет с десятками тысяч игр, художественных и музыкальных произведений через 50, 70, 100 лет? Станет ли что-нибудь из этого наследием культуры, или все сгинет в забытье и устаревших технологиях? Очевидно, сейчас мы наблюдаем "перенасыщение", но кто в наши дни возьмёт на себя роль "критерия"? Или всё, что нам остаётся -- хранить традицию? Узнал бы цифровой мир нового Достоевского, или талантливый автор был бы задушен монетизацией, мотивацией, изучением ЦА и другими особенностями современного "культурного рынка"?

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

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

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


Мне нравится писать сюжетные игры. Рассказывать истории, которые меня самого захватили. Но когда ты пишешь некоммерческие игры, ты неизбежно сталкиваешься с проблемой распространения.

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

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

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

Свои последние игры Другой Марс и Вахта я пытался "продвигать" доступными мне способами, оставаясь в рамках свободного движения. Что именно я делал?

  • Я попытался оживить нашу группу vk, создавая на стене новости и отчёты о проделанной работе. Также включил кросспостинг в фейсбук.

  • Я публиковал новость о "Вахте" в одной из крупных групп vk (название сейчас не вспомню).

  • Наш старый jabber чат был интегрирован с чатом в Telegram, что в теории сделало наш чат доступней для потенциальных энтузиастов.

  • В канал Telegram (не путать с чатом) я также регулярно постил новости. Не говоря уже о своём twitter.

  • Я опубликовал игры на gamin.me. Здесь и здесь.

  • Я создал страничку на itch.io со своими играми.

  • Я опубликовал новости на linux.org.ru. Одна из новостей -- прошла. Вторую не пропустили из за деятельности троллей, превративших тему обсуждения в религиозный спор. Подробности. И пояснения. Забавно, но похоже "чёрный" пиар дал лучший эффект. Это и грустно и смешно.

  • Я опубликовал новость на opennet.

  • Я писал о некоторых своих играх на reddit (лень искать ссылки).

  • Я опубликовал две статьи на dtf.ru.

  • Я присутствовал в mastodon, idec и zeronet (как примеры "альтернативных" сетей).

Какие выводы я могу сделать?

С одной стороны, результат есть. Я узнал, что у моих игр существует целевая аудитория. И это сильно вдохновило.

С другой стороны, количество поигравших в мои игры, по меркам индустрии, очень мало. Я оцениваю это число в районе 2000 скачек (учитывая тот факт, что статистика web запусков не ведётся). Хотя, откровенно говоря, мне не очень интересна именно статистика. :)

Выкладывание игр на itch -- практически ничего не даёт само по себе. Причина понятна. Для продвижения нужны рекламные показы. Площадки не создаются просто так, площадки зарабатывают. Когда на ресурсе представлены тысячи (или уже десятки тысяч?) игр, заметить конкретную игру практически невозможно.

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

Хороший отклик я получил после размещения публикаций на dtf.ru. Наверное, это самый положительный опыт из всех попыток.

Интересно, но адресный выход на аудиторию "альтернативных" сообществ тоже работает. Последнее наблюдение наводит на интересные размышления.

Когда ты пишешь нишевую с точки зрения "мейнстрима" вещь, выход на нишевые же сообщества, похоже, неплохой вариант! Например, INSTEAD изначально работал только на Linux системах. Какой процент пользователей Linux? 3%? 4%?. Но в абсолютных цифрах это довольно много людей. И,проект, работающий на Linux может рассчитывать быть замеченным этой аудиторией! Какой процент пользователей FreeBSD? 1%? Однако, когда INSTEAD находится в портах этой системы, можно рассчитывать на то, что игры на нём будут замечены! Всё это даёт во много раз больше, чем простая публикация игры на тематическом форуме.

Ещё один пример. Размещение статей в ZeroNet с мизерной аудиторией. Однако, размещение этих же статей в блоге на medium.com осталось абсолютно незамеченным.

Камерный театр в спальном районе Москвы может рассчитывать на маленькую, но свою аудиторию! Школьная рок-группа тоже может на неё рассчитывать. :) Остальные примеры вы можете придумать сами. Думаю, что продвижение свободной игры, это все-таки в первую очередь ориентация на "свои" сообщества. А игра по правилам индустрии -- это совсем другая история. Но только проблема в том, что "альтернативные" сообщества практически вымыты из современного коммерческого интернета...

Что касается меня, то я абсолютно измотан социальным взаимодействием и негативным (редким, но токсичным!) фидбеком. В очередной раз я понимаю: программировать и сочинять истории очень захватывающая вещь, но социальное взаимодействие -- изматывает и подрезает крылья.

Что дальше? Не знаю. Но запасы валерьянки подходят к концу. :)

Небольшой опрос. Я создал несколько постов разной направленности. Если этот блог кто-то читает, что бы вы хотели в нём видеть? Если честно, пока не знаю, буду ли его вести дальше, но пока процесс идёт -- останавливать его не буду. :)


  • Рассуждения общего плана, о творчестве;

  • Рассказы о моих играх;

  • Программерские темы, ядро Linux и так далее;
  • Ретро :).
  • Что то еще?

P.S. Кроме того, увеличил лимиты на комментарии. Вроде бы должно быть все ок.

Мне нравятся игры, которые честно бросают вызов. Нет, речь идет не об играх, в которые нужно погрузиться с головой, чтобы изучить механику или освоить сложный игровой процесс. Сложные симуляторы или RPG с сотней показателей -- не для меня. Речь идёт о простых играх, которые раскрываются по мере роста вашего скилла. Кстати, кто не видел скоростных игроков в Tetris?


Я практически не играю в мейнстрим, поэтому в качестве примера будут приведены игры, о которых вы, вероятно, никогда не слышали. И, думаю, вряд ли будете играть. :) Но их объединяет то, что все они созданы энтузиастами.

Начну с серии игры sqrzx от команды retroguru.

sqrxz_screenshot2.jpg (240x180)

Всего выпущено 4 части. Я полностью прошёл, кажется, три из них. Это ремейк одноимённой игры под DOS (которую я никогда не видел). Игра прекрасна! Трекерная музыка, симпатичная олд-скул графика. Но главное -- убойный игровой процесс! Формально это просто марио-подобный платформер. Бегаем зайцем, собираем звёзды, дёргаем рычаги, избегаем врагов... Но дизайн уровней просто прекрасен! После 100-й смерти ты, наконец, ловишь то самое чувство и летишь, летишь по этому безумному уровню, сжигая за собой мосты. Насколько я помню, первая часть -- довольно простая. Возможно, это именно ремейк игры с DOS. Вторая и третья -- уже намного интересней! По ссылкам есть ролики, которые покажут вам на что похож процесс игры. Рекомендую!

Кроме того, ребята с retroguru сделали ремейк Giana Sisters!

screenshot1.png (640x400)

Ремейк называется Giana Sister's Return и это тоже пример классной качественной работы. Игра пройдена до конца (и неоднократно). Хотя сложной она становится уже ближе к концу.

Следующие две игры будут относиться к жанру многопользовательских игр. Одна из них, похоже, давно забыта. Речь идёт об игре, которая, скорее всего, есть в вашем дистрибутиве Linux. Это xpilot (или её вариация - xpilot-ng).

Xpilotscreen.jpg (1143x921)

Чтобы оценить крутость этой игры, во первых, нужно играть мышкой и во вторых, нужно играть с игроками, которые умеют в неё играть. :) Игра не такая простая, как кажется на первый взгляд. Мастерство "профессиональных" игроков поражает. К сожалению, похоже, что сегодня сервера пустуют. Но можно посмотреть один из роликов на youtube. Обратите внимание, как доставляется зелёный шар на базу. Повторить это игроку без опыта нереально сложно.

А теперь, хорошие новости. В следующую игру вы можете поиграть прямо сейчас, так как она всё ещё жива и активность на серверах присутствует. Игра эта -- armagetron advanced. Кстати, в вашем Linux или BSD она тоже, скорее всего есть. :)

armagetronad_screenshot.png (500x349)

Игра в которой вы на световом мотоцикле из фильма Tron (да по сути, это обычная 3d-змейка!) соревнуетесь с другими игроками в одном из режимов игры. Режимов масса, но самые интересные это Dogfight и Sumo. Очень сложно описывать на что это всё похоже. Можно посмотреть некоторые видео.

Не смотря на внешнюю простоту, это страшный спиномозговик! Один из секретов, double и triple bind. Что это такое? Допустим у вас две кнопки: z влево и x вправо. Уже можно играть. Теперь сделаем двойной бинд: z, a - влево, x, d - вправо. Нажимаем сразу две клавиши a+z. Или с некоторой задержкой, и получаем резкий разворот. Ну - тройной бинд даёт еще большую свободу.

mazing.jpg (854x322)

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

У игры полно вариаций и режимов, для старта я рекомендую сервер Yellow Submarine. И биндинги: qaz - влево, xdr - вправо. При старте игры нажмите пару раз "c" для выбора удачного ракурса камеры и всё -- можно начинать проигрывать. :)

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


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

Отбросив троллей, мы встречаемся с критикой как она есть. Прежде всего отмечу один важный аспект. Если критика задевает, значит она воспринимается вами личностно. То-есть, критика воспринимается как личный выпад против вас. Здесь следует остановиться. Большинство моих знакомых считает это бредом. Критика произведения никак не может распространяться на автора.

Я с этим не согласен и вот почему.

Одна из причин повышенной токсичности общения вообще и критики в частности состоит в том, что в наше время объект творчества это почти всегда товар. Тысячи фильмов, десятки тысяч игр, книг и других видов развлечений. Мир переполнен этим. Сам продукт уходит на второй план, а на первом месте оказываются маркетологи. Ведь их цель становиться более важной -- закоротить продукт (один из многих!) на целевую аудиторию. Без этого, товар никому не нужен. Поэтому сегодня за наше время, внимание и деньги сражаются армии маркетологов. Критика в этом смысле это одновременно и обратная связь для производителя (если фильм не окупается, будет сниматься другой фильм -- который окупится) и наша эмоциональная реакция на "спам". То-есть, токсичность отзывов -- это следствие пресыщения и информационной неврастении в современном капиталистическом обществе.

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

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

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

Другая причина -- вы настолько неумело сделали работу, что произведения не получилось. Откровенно говоря, я не верю в эту причину, хотя критики часто любят говорить, что критикуют именно исполнение, а не замысел. Даже ребёнок, хотя он рисует и неумело, но от души, вполне способен передать свой внутренний мир. В таком случае взрослый может сказать что-то вроде: "Ух ты! Какой уютный домик на лесной полянке! И небо голубое! А давай я помогу нарисовать тебе зайца?". Мне кажется, если произведение срезонировало, то огрехи реализации выходят на второй план. Конечно, на них нужно указать (и это самый полезный вид критики), но чаще всего я наблюдаю другую картину. Критику не нравится произведение в целом, а потом он начинает перечислять конкретные недостатки реализации, как обоснование своего вердикта.

Подводя итог, болезненность восприятия критики "художником" объясняется тем, что она воспринимается как выпад против его искренности и вкуса.

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

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

Если же вы независимый разработчик и занимаетесь авторским творчеством, то полезно уяснить для себя следующие вещи:

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

  • Очевидно, вам хотелось бы быть услышанным максимальным числом людей. Но вы должны честно ответить себе, для чего вы занимаетесь творчеством? Если для того, чтобы понравиться как можно большему числу людей, то вы создаёте "продукт". Тогда просто старайтесь удовлетворить вкус большинства. Но если вы создаёте произведения следуя своему вкусу и чувству прекрасного, то у вас остаётся не очень много вариантов действий. Вы можете либо подчиниться критике и свернуть свою деятельность, либо продолжить делать то, что вы делали!

  • Если вас беспокоит именно резкость критического отзыва в интернете, то задумайтесь о том, что при встрече с критиком в реальной жизни или в личной переписке, скорее всего вы бы общались совершенно нормально! К сожалению, интернет творит "чудеса".

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

В заключении этой статейки хочу передать большое спасибо всем тем, кто поддерживает "художников". Без художников мир был бы скучным местом...


Warning: file_put_contents(): Only 0 of 160506 bytes written, possibly out of free disk space in /var/www/html/system/includes/dispatch.php on line 358