1 Например, попадались люди, которые полностью скопировав проект, присваивали себе авторство наплевав на условия открытых лицензий GPL3, CC-BY-SA и позже аргументировали это тем, что текст лицензий написан на английском языке, который они не понимают.
За годы работы над Лайтпаком я слышал много похвалы, ругани и, конечно, критики разной степени полезности. Бо́льшая её часть была объективна, однообразна и не нова, а иногда мы получали откровенный буллшит1. Как бы то ни было, лучше меня в 2014 году в Лайтпаке не разбирался никто, так что критиковать его я буду самостоятельно.
Работает только с компьютером
Лайтпак анализировал картинку при помощи программы Prismatik и поэтому работал только там где эту программу можно было запустить. т.е. не было простого способа без костылей подсвечивать стену за телевизором когда на экране были эфирные каналы, или игры с PlayStation.
2 4K в те времена можно было увидеть только на выставках и точно не в гражданских гостиных.
Мы с самого начала понимали, что в сферическом мире в вакууме такое устройство должно работать pass-thru — включаться в разрыв кабеля и анализировать поток в реальном времени. Для этого необходимо было добавлять в архитектуру FPGA, и разводить плату на компонентах, которые способны работать с высокочастотными сигналами вплоть до FullHD2.
А ещё для легального использования всего этого необходимо становиться членом консорциума HDMI и приобретать лицензию на декодирование сигнала. Членство стоит десятки тысяч долларов. В 2011, когда над Лайтпаком работало 2,5 человека мы не могли себе позволить влезть в такую разработку. Правда, когда мы передавали проект в 2014, то оставили новой команде работающий прототип такого устройства, которое целиком спроектировал Семён Сачков.
Корявый софт, который часто не работает в играх
Самые первые версии софта были написаны с использованием Qt в угоду его кроссплатформенности. К сожалению, эта технология очень быстро превратилась в тяжёлое legacy, для отказа от которого пришлось бы всё писать с нуля. Софт и правда работал в Windows, MacOS и Linux и даже выглядел во всех этих операционках почти одинаково. Однако для захвата картинки в ранних версиях он использовал встроенный в Qt метод bitBliting, фактически делая по 30-60 скриншотов в секунду для последующего их анализа на такой же скорости.
3 Desktop Window Manager — менеджер окон операционной системы «Окна». Почитайте о его архитектуре переходного периода между Win7 и Win10.
Надо сказать, что в те времена ребята из Microsoft издевались над DWM3 так рьяно, что глава Valve, Гейб Ньюэл назвал Windows 8 «катастрофой для всех пользователей PC» и, в первую очередь, геймеров, а потом объявил о намерении перевести весь десктопный гейминг на Линукс.
Призматику с выходом Win8 тоже досталось. Софт, в попытках поддержать всю плеяду операционок и разнообразия их GUI вместе с игровыми оверлеями, начал фрагментироваться на глазах, обрастая разными, уникальными костылями для каждой конкретной платформы и версии ОС.
С частью игр захват работал, в других погружал систему в жуткие тормоза, или просто игнорировал изменения кадра. В какой-то момент Тимур не выходил на связь около 2 недель и потом объявился с релизом, где абсолютно нелегальным способом инжектировал в область памяти зарезервированную конкретной игрой кусок Призматика, который следил за изменениями на экране.
Работало быстро, вот только такое решение необходимо было адаптировать для каждой конкретной игрушки и всё-равно оставался риск, что такой инклюд порушит уже саму игру, а не только виндовый DWM.
И всё это во времена, когда софта типа OBS и библиотек для «захвата отовсюду» попросту не существовало т.к. не существовало и запроса на стриминг игр, а о существовании Твитча тогда знали 5 человек 2 из которых были его фаундерами.
В этот момент стало ясно, что софт необходимо перепроектировать согласно SOLID, разделив универсальный сервер, который управляет устройством и платформозависимую часть, которая осуществляет захват и реализует GUI. Прототип этой архитектуры тоже был сделан Тимом и так же передан новой команде в 2014.
Море проводов
Начиная с этого пункта перечислены важные лично для меня особенности Лайтпака, которые подлежали исправлению и которые до сих пор иногда снятся мне в кошмарах.
Не припомню, чтобы пользователи на что-то из этого жаловались, но, камон: Решать что нужно пользователю не дело самого пользователя.
Как только мы начали брать за устройства деньги стало ясно, что 2/3 веса упакованной посылки составляют провода. Даже когда мы ещё производили Лайтпак в России мы уже закупали кабель километрами прямо с завода-производителя. Нам доставляли его в бухтах, которые были упакованы в пятидесятилитровые мешки. Кабель-менеджмент съедал бо́льшую часть времени при установке Лайтпака среднестатистическим пользователем и это не давало мне покоя.
Провода были длинными, а складывать их почти никто из пользователей не умел.
Однако, в 2010-2012 годах экономически было не выгодно делать Лайтпак на светодиодной ленте. Во-первых: хороших, адресуемых лент на рынке попросту не было, а те, которые можно было купить, не подходили нам по разрядности драйверов и качеству самих светодиодов.
4 И вроде бы Woodenshark позже что-то такое делала, но об эффективности я судить не берусь.
Во-вторых: плотность светодиодов почти на любой, существующей тогда ленте, была для наших целей избыточной. В итоге пользователи вынуждены были бы платить за плохие светодиоды в том количестве в котором они им не были нужны и блоки питания, которые могли всё это тянуть. Очевидно было, что в будущем нужно выпускать кастомную ленту с собственными драйверами и подходящей частотой постановки светодиодов4. Такая лента сильно упрощала бы монтаж, правда, одновременно добавляя проблему соединения на углах. И если кто-то из вас сейчас подумал «вот придурок, китайцы же придумали уголки-коннекторы, я сам на Али видел», то отвечу заранее: «Ахаха. Нет!».
Плохая масштабируемость по площади
5 Вот так выглядит плохое продуктовое решение. Da boom tss! И даже то, что это решение было временным и стабильно работало, меня не извиняет. Это просто продуктовая ошибка.
Как только началась кампания на Кике, нам стали десятками приходить вопросы типа «У меня телевизор с диагональю 75 дюймов. Сколько Лайтпаков мне нужно купить?». Наша архитектура со светодиодными модулями не выдерживала никакой критики в случае подсветки таких площадей и в качестве полумеры мы придумали, как заставить несколько Лайтпаков работать вместе для тех, кто готов за такой странный подход платить5.
Скриншот из Призматика для Андроид. Из него понятно как именно несколько устройств можно было быстро настроить используя «созвездия».
Так появилась награда Multipack, идентификация серийников устройств в Призматике и настройка зон захвата учитывающая несколько Лайтпаков на хостовой машине. Чуть позже мы придумали концепцию «созвездий», которая несколько облегчала первоначальную настройку, но всё-равно оставалась UX-костылём. Кастомная лента так же должна была спасти нас от этих проблем масштабирования.
Динамика подсветки
Я знаю, что светодиоды и вообще любая мигающая и блестящая фигня прекрасно продаются. Я понимаю, как именно у людей возникает желание купить то, что показано в нашей демке. Когда они видят этот кусок из American McGee Alice, где Алиса бьёт своей игрушкой о землю, или пикирующий корабль Звездного Флота из Star Trek им сразу же хочется где-то шоркнуть своей кредиткой, потому что это выглядит потрясающе.
В реальности же эффект ещё лучше, чем на видео и мы неслабо постарались, чтобы снять его для вас хотя бы в половину так же, как это ощущается в полутёмной комнате.
6 Этот абзац — мой главный продуктовый вывод для Лайтпака.
К моему сожалению контенто-зависимая, динамическая подсветка отвлекает от экрана и даже в среднесрочной перспективе годится разве что для того, чтобы похвастаться ей перед гостями. Однако: статичная подсветка, либо незаметно меняющая свой цвет — лучшее, чем вы можете порадовать свои глаза, если привыкли работать с экранами в полумраке и темноте. Посидев за таким экраном несколько вечеров подряд, вы уже будете чувствовать себя неуютно без подсветки6.
Я пользуюсь Лайтпаком с момента его создания в 2011. Сейчас это простая светодиодная лента с зафиксированным цветом и автоматической регулировкой яркости. Не понимаю как без него жить.