В общем, всё решилось тем что мне примерно через 5 дней послали сообщения. Дескать товар ремонту не подлежит, и мне полагается полный возврат средств. На который я могу купить любой другой продукт, из этой сити магазинов. Ну, я и подумал почему бы не прообгрэйдить немного комп, и взял I9 10850k и память G.Skill Trident Z neo 3200Mhz 2x8. Пока что поставил предыдущую Gtx 1660t. Все вроде как закончилось хорошо, но про покупку лучей прийдётся забыть примерно на год. Ну или пока не закончится вся эта канитель с перекупщиками и манерами.
Данный пост создан исключительно с целью продемонстрировать, что реактор может иметь встроенный баянометр приемлемой функциональности без существенных затрат на его реализацию и сервера. Он ни в коем случае не пытается бросить тень на существующий баянометр от ExtraDj - вполне возможно его баянометр в сто раз круче (я не знаю).
Я совсем недавно начал создавать посты на реакторе, но уже успел ощутить всю проблематику поиска повторяющегося контента на этом ресурсе. И задумался о том, как много времени реактор мог бы сэкономить постерам, имей он встроенный баянометр. Сколько человек не смогли преодолеть сложности размещения контента на реакторе и сколько перестали это делать из-за большого количества времени, которое на это требуется (сужу исключительно по себе).
А недавно ещё и получил разрешение от Вождя. Что ж, доступа к коду сайта и базе у меня нет. Выкачивать весь его контент, чтобы собрать отдельный баянометр я особо желанием не горю. Но могу, по крайней мере, разобраться в ситуации и продемонстрировать Proof of concept.
Я дотнетчик по большей части, поэтому технологии используются соответствующие. Вряд ли технологии, которые используются реактором, имеют какие-то существенные ограничения чтобы справиться с этой задачей.
Итак. Перцептивный хэш - похоже, то, что нам нужно. Проблема распространенная, поэтому сразу же нашлась библиотека, которая этот хэш считает - по крайней мере эту рутину писать не придётся. Как будто мы ещё ничего не сделали, а решение уже готово. Протестируем.
Первый кадр из видео. Разрешение 720х1280 против 320х568.
AverageHash и PerceptualHash - абсолютно одинаковые цифры. А это значит, что если вы сохраните этот хэш в БД рядом с картинкой, вы легко сможете достать по нему запись о картинке. Похоже баянометр в простейшем виде уже готов.
Извлечение данных. Т.к. некоторые реакторчане ссылались на проблему поиска в большом количестве данных, нужно протестировать и это. Приблизительно 7000000 картинок есть на реакторе. Возьмём MS Sql server. Создадим таблицу с 7000000 записей со случайными цифрами в качестве хэша. Чтобы всё было по-честному:
Изменим одно из значение на реальный хэш с картинки выше. И посмотрим сколько надо времени чтобы её найти.
По-моему проблем тут нет.
Дальше. Что если картинка немного отличается от оригинала. Например нам надо сравнить первый кадр видео с гифкой. Гифка, будет иметь кучу артефактов и, возможно, другой начальный кадр. Как тут:
Хэши не совпадают. Всё пропало? Не совсем. Обратите внимание на подсчёт "похожести" хэшей внизу картинок. Всё что нам нужно сделать, чтобы начать находить не только идентичные картинки, но ещё и похожие - это перенести логику подсчёта похожести в запрос к БД. Получим.
Теперь по затратам времени и ресурсов. На этот Proof of concept ушло несколько часов - большая часть на подготовку и написание поста. Добавить его на любой свой сайт я могу за несколько часов. Нагрузку на сервер вы можете видеть в статистике запроса к БД. По-моему скромному мнению - она никакая. А если учесть, что эти запросы будут редкими - только при создании новых постов, то ими вообще можно пренебречь. Железу, на котором запущен sql сервер более пяти лет. Более того, пять лет назад это был бюджетный домашний комп.
Около 8:00. Начало комбинированной атаки боевиков ХАМАС из Сектора Газа по Израилю. Ракетный обстрел, параллельно которому началось военное вторжение на юг страны. При чём боевики используют как наземные, так и воздушные средства для вторжения, в частности парапланы.
9:00. Армия Израиля потеряла контроль над одной из своих баз на границе с Газой КПП «Эрез»
В ХАМАС заявили о начале «великой революции» и призвали арабов, живущих в Израиле и вокруг него, к ней присоединиться. Есть информация о том, что боевики используют здания мечетей для вещания военной пропаганды и призывов к Джихаду.
9:30. Новая волна массовых пусков ракет по Израилю
10:00. Армия Израиля начала вывозить военную технику с юга страны — чтобы не отдавать её противнику. На видео — истребители F16, которые перевозят на тягаче подальше от мест столкновения. Всё, что не успели спасти, массово захватывают боевики.
Тем временем глава военного крыла ХАМАС, контролирующего сектор Газа, Мухаммед Дейф рассказал о начале операции "Наводнение Аль-Акса". Её цель — создание палестинского государства. Министр обороны Израиля заявил, что его стране объявили войну. Всего по ней было выпущено 5000 ракет, а пока оборона была перегружена, диверсанты на парапланах прорвались через границу.
Израильских солдат, которых удалось взять в плен, вывозят в Газу; мирных жителей пытаются спасти и эвакуировать. Некоторым из них пришлось спасаться от палестинцев прямо во время тусовок, пикников и прогулок в парках.
10:44. ЦАХАЛ (Армия Израиля) объявила о начале контртеррористической операции «Железные мечи» в Секторе Газа. В стране объявлена мобилизация резервистов.
11:50. "Граждане Израиля, мы находимся в состоянии войны. Это не операция, не эскалация — это война. И мы победим. ХАМАС заплатит за неё беспрецедентную цену" - официальное заявление Премьера Нетаньяху.
На текущий момент времени ХАМАС удалось проникнуть в следующие населённые пункты Израиля, идут боевые столкновения между ЦАХАЛ и боевиками. Наибольшие поселения, куда удалось вторгнуться боевикам - это города Ашкелон (150 тысяч жителей), Нетивот (37 тысяч жителей) и Сдерот (27 тысяч жителей).
12:00. ЦАХАЛ готовится к возможному нападению с Севера страны. Поступает информация об активизации боевиков Хезболлы в Ливане.
Отличный комментарий!
Хоспаде когда уже эти исламистские животные подохнут
Этих исламских животных сознательно и годами держать в бедности и накачивают пропагандой, чтобы генерировать условно-бесконечный поток боевиков-новобранцев. Лучше спроси когда подохнут те, кто такую ситуацию сознательно создал и сознательно поддерживает, прикрываясь заботой о бедных арабских беженцах.
Привет Реактор! Я написала продолжение того, как я снова начала стримить на twitch после webcam. Это мой персональный опыт, надеюсь Вам будет интересно. На этот раз постаралась сделать покороче. Но если что-то не раскрыла, или Вас что-то заинтересует, пишите в комментах. Приятного чтения.
1. Как попала на twitch впервые. Первые стримы
Я уже писала в прошлой статье, что познакомилась с twitch я еще задолго до webcam. Я тогда только переехала в другой город и работу еще не нашла. Мне предложили начать стримить, рассказали, что есть сайт, где можно играть в игры – люди будут это смотреть и донатить. Тогда мы купили комп с неплохим на тот момент железом (б/у). Правда на этом покупка оборудования закончилась. Кажется, я стримила ещё и без микрофона, с обычными проводными наушниками (или беспроводными), оборудования для света тоже не было.
Мои игры были Fortnite и Red Dead Redemption 2 (Причем вторая игра была с слишком открытым миром, меня удивляло то, что иногда можно было просто скакать на лошади полдня). Зрителей было от 3 до 20 максимум, донатов не было вообще. Зато я в Fortnite познакомилась с интересным парнем, стримером Коляном из Москвы (FakeFoxLive если читаешь этот пост, большой тебе привет). Вдвоем играть и общаться на стриме было весело.
К сожалению, профита не было, и я устроилась на обычную работу, ведь нужно было зарабатывать деньги и на что-то жить. Таким образом, моя первая попытка стать известным стримером закончилась.
2. Попытка №2
Новое вхождение на twitch произошло в тот момент, когда webcam стал для меня рутиной и очень хотелось сменить деятельность. Мне предложили twitch как альтернативу, рассказав о том, что стримить можно не только игры, но и просто общение. Разница будет только в том, что не придётся оголяться. Плюс у меня были софтбоксы, прикольные наряды и я купила микрофон.
Первые стримы я решила рассказывать про свой опыт на бонга в категории IRL. К моему большому удивлению, зрители стали заходить, писать и задавать мне вопросы. К тому же, я была уже более активна с чатом (сказался опыт общения с мемберами), наличие микрофона и софтбоксов дало прирост качества трансляции, а ещё, разговор с зрителями про вебкам и другие взрослые темы делал мою трансляцию более интересной по содержанию. Зрителей было на пике до сотни и пошли первые донаты. Конечно, я успела попробовать стримить игры, все тот же Fortnite, Witcher 3, Skyrim, но на это приходило гораздо меньше людей. Могу уверенно сказать, что стать игровым популярным стримером гораздо тяжелее, чем IRL.
3. Про софт и ништяки трансляции
Помимо оборудования, я долгое время разбиралась в какой программе лучше стримить. Сначала у меня был классический OBS (остался с бонги), но мне он показался чересчур замороченным для twitch на тот момент, все плагины нужно было добавлять руками, ковыряться и так далее. Погуглив и посмотрев другие трансляции, я выбрала для себя Streamlabs OBS. Тут многие решение (например смайлы на экране), встроены уже внутри программы, что очень удобно было для меня. Позднее, я всё равно разобралась, как вставить все веб источники. Поэтому появились и звуки за баллы канала, и всевозможные варианты оповещений из Donation Alerts.
В этом мне кстати twitch очень понравился. Вся его текущая кастомизация, во-первых можно оформить профиль по своему вкусу, ты вообще не ограничен ничем, кроме своей фантазии. Во-вторых, приколы для аудитории, я как раз таки пользовалась баллами канала, для звуков и заданий. Слышала, что были ещё и мини-игры, но до этого руки у меня не дошли. В общем, было очень прикольно всё это изучать и пробовать. Чуть позднее я добавила собственные самодельные смайлики, кривые немного, но сделанные лично.
4. Про зрителей
Аудитория twitch очень разная. Есть как нормальные ребята, которые тебя мотивируют стримить, поддерживают морально и материально, а есть лютые токсики и тролли, начиная теми, кто просто пришёл угарнуть над тобой, заканчивая теми, кто просто решил запостить пасту с запрещёнкой (про это вообще стоит сказать отдельно). Даже на бонге не было такой дичи. Возможно потому, что в среднем аудитория взрослее, или возможно потому, что там потребность большинства сводится к получению удовольствия. Можете написать в комментах, почему на twitch так много токсичности.
Собственно, на twitch я узнала, что такое gachimuchi, почему говночист должен быть закалён и плечист, и чем Kappa отличается от SmOrc и PogChamp. Я узнала, что зрителям заходят странные караоке песни в моём исполнении и короткие юбочки. И что люди не знают, что twitch это не webcam и ножки просить показать нужно на других сайтах (тут я всё же немного ошиблась, особенно когда увидела категорию бассейны). Ну и в конечном итоге, тут же я стала продвигать свой Boosty и телеграм канал.
5. Про деньги
На twitch огромная возможность монетизировать своё творчество (оговорюсь, что для стримеров РФ всё поменялось, но расскажу как было в момент, пока я стримила). Во-первых внутренняя система монетизации – это платная подписка 3 уровней, за которую зрители получают премиум смайлики, отсутствие рекламы и просто показывают степень своей поддержки, контекстная реклама, которая показывается во время стрима с определенными интервалами и система Cheers, внутренняя валюта twitch, которая конвертируется в баксы. Я не особо успешный стример, но даже мне удалось заработать за 4 месяца около $500.
Во-вторых, донатные площадки. Самая популярная в СНГ Donation Alerts. Самый популярный вид поддержки – классический донат. Но можно выставить цели на то, что тебе нужно, и зрители будут собирать эту сумму (такой упрощенный краудфандинг), ещё есть рулетка (когда зрители донатят, ты должен выполнить действие из рулетки. Конечно есть и другие сервисы (западные), но ими я не пользовалась.
В-третьих, продвижение своих сторонних площадок, как я уже говорила это telegram и Boosty. Другие пиарят онлик и patreon и так далее.
В-четвертых, прямая поддержка на карту. В описании указываешь номер, и зритель может поддержать без комиссии.
И это только те способы, которые я попробовала. До контрактов и рекламных интеграций я не успела прокачать онлайн.
Доход был, как и в webcam ненормированный. Иногда ты можешь сидеть по несколько часов при нулевом балансе, а потом зайдет человек и задонатит твою месячную зарплату, которую ты получала за 12 часов в магазинчике сладостей. Плюс позднее были выплаты с twitch подписок (придёт какой-нибудь шейх на трансляцию и подарит зрителям 100 подписок). В целом, с twitch плюс Boosty я смогла купить себе планшет и дорогой ноутбук. Могу сказать, что совокупно получалось больше, чем на бонге, но и стараться (какая ирония) приходилось больше.
6. Пару слов про политику и модерацию платформы
Twitch отличается о webcam кардинально. Что можно сказать и показать на бонге, на twitch будет расценено как причина для бана. С другой стороны, можно привести на трансляцию друзей и собаку, и тебе за это ничего не будет. Скажем так, везде свои нюансы. Ну и да, запрещенные слова и хейтспич. Есть список слов по очень разным признакам, которые говорить нельзя, а ещё нельзя быть супер токсиком. В какой-то степени это даже логично, площадка всё таки развлекательная, но местами они реально перегибают.
7. Плюсы и минусы twitch
Плюсы: ненормированный график (сам выбираешь когда включить и когда выключить), можно заработать много денег и популярность, своё коммьюнити людей, которые всегда поддержут.
Минусы по сути зеркальны: можно ничего не заработать (я знаю десятки примеров, особенно парней, которые могут месяцами стримить в пустоту, морально это очень опустошает), куча троллей и токсиков, не совсем понятная система модерации (точно и достоверно никто не может сказать, за что можно получить бан).
8. Переход в adult
Всё было прекрасно, аудитория потихоньку росла, я танцевала, пела в караоке, общалась со зрителями, иногда играла, а потом случился февраль. После 24 февраля, по вполне понятным причинам, в чате стали сыпаться оскорбления в мой адрес (почему именно в мой, я не знаю), причем от людей которые только вчера ко мне относились прекрасно. Плюс куча рандомных зрителей, которые заходили именно ради хейта. Из-за происходящих событий настроение стримить пропало, да и как можно танцевать и петь когда происходит такое. Плюс поток постоянного негатива, я человек впечатлительный и мне тяжело оставаться веселой и улыбчивой, когда меня оскорбляют, мягко говоря. Ну а спустя несколько дней twitch отключил выплаты с площадки (у меня там до сих пор заморожены деньги, как и у сотен других стримеров из РФ). К тому же, зарубежные зрители потеряли возможность донатить. На этой волне, спустя 2 недели, я полностью ушла в телеграм, boosty и завела fansly.
К апрелю месяцу стало очевидным, что, чтобы откуда-то брать трафик, нужно было создать аккаунты на порнтьюбах (видеохостингах для взрослых), и выкладывать туда мои сольные видео, которых было создано уже много (зачем и почему, я могу потом рассказать отдельно).
В процессе ведения и изучения того, как работают эти площадки, я предложила молодому человеку делать совместный контент. И именно вот так я и вкатилась полноценно в порно. Но об этом в другой раз.
P.S. Иногда я скучаю по twitch, это действительно весело, пробивает на креатив и много очень приятных людей, но в данный момент у меня нет хорошего интернета для стриминга. Кто знает, может быть, я к этому ещё вернусь, когда перееду в страну с мощным интернетом.
P.P.S. Возможно, тогда мне стоило взять паузу, и просто через 2-3 недели вернуться к стримингу. Но почему то на тот момент мне показалось логичным заняться чем-то новым.
Factorio: Вы разъёбываете ульи руками? Нет, просто показываю. Красивое!
Не без труда я прошёл чистилище своим весьма специфичным видосом по игре Factorio. На сайте присутствуют много любителей игры, мой длиннопост для них.
На видео стая из 20 паукотронов под руководством логического автомата разъёбывает кусак со скоростью ~100 ульев в минуту. Далее в посте даётся описание работы логического автомата. Для понимания прочитанного желательно понимать принцип работы логики Factorio и примерно представлять, как работает счётчик и запоминающий регистр. Сложность поста со звездочкой, так сказать, для ценителей.
Автомат у меня получился удачный, что пришлось хвастаться не мог не поделиться.
Для Вашего внимания представлена видео и текстовая версия поста.
1. Ключевые особенности логического автомата
Все паукотроны на карте стаей бегают уничтожают обнаруженные улья и червей. Для ремонта, пополнения боеприпасов и при уровне батарей ниже 30% стая направляется на парковку. Для срыва фокуса огня червей и плевак лидер стаи меняется каждые ~3 сек.
Широкий поиск гнезд и червей осуществляется в установленном радиусе, в случае обнаружения стая выдвигается на точку. При следовании стаи происходит второй «быстрый» поиск уже в значительно меньшем радиусе (50~60 клеток) для оперативного реагирования стаи на вычищение скоплений. После ликвидации всех обнаруженных врагов стая возвращается в место парковки.
Достоинство логического автомата – он не затирает другие зоны, что важно если вы используете их для, например, маркирования руды и последующий сбор AI майнером.
Не обошлось и без недостатков. Обычно логический автомат работает четко, но он довольно чувствителен к потере паукотронов в стае. Иногда не замечает потери, но обычно все очень плохо заканчивается :-( Простого и эффективного решения «эвакуации» я не додумал, потому ставьте побольше щитов и следите за оповещением «Направляюсь в зону паковки».
И второй недостаток, ID паукотронов должны идти по порядку начиная с единицы, рекомендую ставить паукотронов «на землю» с первого раза, иначе ID могут перескочить через один-два и в этом случае надо править ID «руками» чтоб ID шли по порядку начиная с единицы, иначе автомат «тупит». Кста, иногда достаточно "обвести" паукотронов мышкой и ID "переназначатся" сами.
Третий недостаток не связан с автоматом, а вытекает из поиска пути паукотронами. Паукотрон бегает только по прямой и не может обогнуть лужу, со всем вытекающими последствиями для автомата :-(
1) "главная кнопка начала Геноцида" вкл/выкл (комбинатор внизу справа), 2) возврат на базу - парковка вкл/выкл (комбинатор в центре), 3) пополнение боекомплекта вкл/выкл (комбинатор слева сверху) Эта кнопка для бездарных нищуков-неудачников, которые не в состоянии произвести десяток другой тыщ ракет и хотят, чтобы пауканы разбирались с гнездами экологов с помощью персональных лазеров в броне по хардкору, на канале присутствует видео где 40 паукотронов превознемогают хардкор, скорость ниже на порядок, за 4 часа потеряно 5 пакоутронов, для просмотра необходим валидол, 4) радиус поиска гнезд (комбинатор в центре), 5) установка начальных точек зоны поиска (зоны «красная стрелка на юг» - комбинатор в центре), 6) очистка зоны (вспомогательная кнопка, комбинатор справа, сделана для удобства и используется для очистки всех клеток установленной зоны, чтобы не лазить по всей карте вспоминая где установил какую-либо зону), 7) установка числа сменяемых лидеров умноженное на 200 (значение задается в сравнивающем комбинаторе, в данном случае равно 1500, т.е. настроен перебор лидерами первых семи пауков – лучше не меняйте эту настройку, семи паукотронов обычно хватает на ротацию без потерь), 8) оповещение со значком заправки - включается при возврате на место паковки.
3. Требуемые моды
Для реализации логического автомата необходимы следующие моды игры Factorio: 1. AAI programmable vehicles (возможность управления юнитами как в РТС стратегии), 2. AAI programmable structures (здания для управления юнитами из первого мода) 3. AAI signals (необходим для первых двух модов), 4. AAI zones (необходим для первых двух модов),, 5. Equipment gantry (здания для снаряжения модулями сетки оборудования юнитов).
Вообще автор модов Earendel очень уважаемый и талантливый человек, сделал великолепный мод Space Exploration, весьма рекомендую. Не смотря на всю гениальность автора, к сожалению моды не отличаются стабильностью, автор видимо слабо владеет напильником, при работе с модами прям чувствуется есть что допилить.
Автомат задействует всех паукотронов на карте и снаряжение оборудованием допустим 10+ паукотронов довольно утомительно, для этого используем мод Equipment gantry и вспомогательную схему по автоматическому снаряжению паукотронов в соответствии с заданной сеткой оборудования.
Рассмотрим работу здания Equipment gantry: сверху грузим модули, слева снизу юнит, справа снизу забираем снаряженный юнит модулем. За одну итерацию устанавливается один модуль в крайний верхний левый свободный слот оборудования, поэтому в этой схеме используется многократный проход со счётчиком проходов. Количество модулей регулируется в манипуляторах слева. В представленной схеме паукотрон снаряжается: портативный термоядерный реактор – 1 шт., персональных лазерных защиты - 3 шт., энергетических щитов МК2 - 6 шт., личных аккумулятора МК2 - 4 шт. Полученный паукотрон грузится в гараж, затем размещается на карте, в постоянном комбинаторе у гаража задаем количество загружаемых в депо ракет 1000 шт. Не забудьте соединить постоянный комбинатор с гаражом, перемычка в схеме почему-то не сохраняется.
И ещё один момент, дроны иногда собирают эту схему в неправильном порядке и первый паукотрон собирается неверно, тут надо обнулить схему закинув паукотрон в конец конвеера, манипулятор снимая паукотрон обнулит схему и остальные паукотроны уже будут снаряжены правильно. Поэтому еще раз, Проверьте сетку оборудования первого паукотрона!
5. Описание работы логического автомата
Для корректной работы автомата установите депо, загрузите его ракетами, поставьте рядом дронстанции для ремонта. На депо установите первую клетку зоны "чёрная стрелка на юг".
Далее пока наша стая гопников «печется» и заряжается, перейдем к принципу работы логического автомата. Для начала опишем зоны, которые использует автомат:
первая клетка зоны «чёрная левая диагональ» - приоритетная клетка для уничтожения найденная быстрым поиском вокруг лидера стаи в радиусе 60 клеток, паукотроны первым делом бегут именно в эту точку,
первая клетка зоны «чёрная коробка» - клетка для уничтожения найденные широким медленным поиском, паукотроны идут к ней если нет клеток зоны «чёрная левая диагональ»,
первая клетка зоны «чёрная стрелка на юг» - депо для ремонта и пополнения боекомплекта,
клетки зоны «красная стрелка на юг» - начальные точки для широкого поиска, перебираются в цикле и применяются для охвата поиском сложных форм рельефа.
1. Блоки №1 и 2 отвечают за выдачу ID лидера стаи и его координаты.
2. Блок № 1 в цикле Unit Scanner проверяет самочувствие паукотронов. Если здоровье менее 2000 хп, заряд батареи менее 30% или боезапас ниже 30 ракет, то на «проблемном» паукотроне цикл останавливается и выдается сигнал «L» (Load "то биш"), лидером стаи назначается «проблемный» паукотрон.
3. Блок № 2 при отсутствии «проблемных» паукотронов – с шагом ~3 сек осуществляет перебор первых семи паукотронов (можно настроить в сравнивающем комбинаторе, см. первую часть статьи, п. 7) и выдает лидера стаи.
ID лидера из блоков № 1 или 2 преобразуется Unit Scanner’ом в его координаты.
4. Чтобы не делать по паре лишних Tile Scanner’ов и Zone Controller’ов сделан блок № 3, который определяет режим работы сканеров (блоки № 4 и 5): 1 сек - режим 0: случайное сканирование клеток, 0.5 сек – режим 1: перебор уже отмеченных зон с затиранием зон, которые очищенны от гнезд и червей.
Быстродействия двухрежимной работы двух блоков сканеров + маркеров хватает для оперативного реагирования стаи. По началу я сделал вообще одноканальный чертырехрежимный сканер + маркер, но его скорости было маловато, поэтому пришлось добавить второй канал.
5. Блок № 4 выполняет «быстрый поиск» вокруг лидера стаи в радиусе 60 клеток (ну как быстрый, просто поле покрытия для поиска значительно меньше чем в блоке № 5). Работает в 2х режимах. Режим 0 – радиус 60 клеток и координаты лидера, Режим 1 – последовательный перебор первых 30 клеток зоны «чёрная левая диагональ» с выдачей их координат.
Эти данные поочередно подаются в Tile Scanner для определения наличия гнезд и червей. Далее уже по результатам наличия/отсутствия гнезд и червей производится маркировка клетки.
Тут замечу, что толковая реализация этого блока была проблемой № 1. Так при переборе клеток зоны «чёрная левая диагональ» если заново перемаркировывать зону, то первая клетка зоны начинает «мигрировать». При маркировке «поверх» она записывается последней, а первой клеткой зоны становиться вторая. Иногда это приводит к тому, что паукотроны стоят на месте, т.к. целевая клетка «крутится» вокруг них :-(
Решение вопроса состоит в пропуске промаркированных клеток с червями и ульями. Учитывая двухрежимную работу сканера, реализация этого ветвления мне очень тяжело давалась. Опять же в других схемах могут использоваться свои зоны и удалять эти зоны нельзя, так к примеру сканер в режиме 0 может запросто случайно удалить зону парковки, там же нету улья или червя, а это дополнительные проверки (комбинаторы) уже на тип зоны, пропуске клеток без червей и ульев и т.д. и т.п. Короче после часа попыток пыток «в подумать» я случайно нашел элегантное окологениальное простое решение уложившееся буквально в 3 комбинатора. Вообще, я был настолько поражен простотой решения, что под впечатлением собственно и надумал поделиться схемой с народом. На блоке № 4 реализацию этого решения я обозначил синим, её работу предлагаю изучить самостоятельно, она этого стоит, задание с двумя звёздочками.
При количестве зон «чёрная левая диагональ» больше 50 наблюдаются «провалы» в реакции стаи, поэтому они через логический костыль «рандомно вычищаются» куском блока № 5 ограничиваясь количеством 30 ед. (обозначено зеленым).
6. Блок № 5 работает идентично блоку № 4, просто выполняет широкий поиск в заданной дистанции и маркирует клетки зоной «чёрная коробка». Если вы установили несколько зон «красная стрелка вниз», то начальные точки поиска эти зоны. За счёт размещения зон «красная стрелка вниз» можно охватывать поля сложного рельефа пятнами поиска.
Для удобства в блок размещена реализация очистки всех клеток установленной зоны (обозначено зеленым). Иногда ищешь эту «красную стрелку на юг» чтобы переставить и не можешь найти куда её последний раз воткнул. Вот это как раз для таких случаев.
7. Блок № 6 определяет, что делает стая. Используемые сигналы по порядку приоритета: L – следование к первой клетке зоны «чёрная стрелка на юг» - парковка, В – следование к первой клетке зоны «чёрная левая диагональ», А – следование к первой клетке зоны «чёрная коробка», Если все сигналы равны 0, выдается сигнал L.
Синяя область – Zone Scanner’ы выдают координаты первых клеток зоны «чёрная левая диагональ» и «чёрная коробка», которые подаются в блок расстановки приоритетов между А и В (зеленая область). Под красной областью узел выдает координаты первой клетки зоны «чёрная стрелка на юг».
В зависимости от управляющего сигнала блок выдает координаты следования для лидера.
8. Блок № 7 быстро перебирает всех паукотронов на карте, если паукотрон не лидер, то выдает координаты лидера, если лидер –координаты следования из блока № 6. ID паукотронов и координаты «скармливаются» в Unit Controller.
8*. Внимательные зрители могут обратить внимание, что в блоке № 5 имеется очистка всех клеток зоны «чёрная левая диагональ» раз в 5 мин. Это сделано для того, чтобы стая пореже возвращалась «дочищать рядом обнаруженное, но оставленное далеко позади так как скопления ульев могут перекрываться, и стая не успела зачистить одно скопление как нашла и зашла на следующее», беготни стае и так хватает :-)
6. Подведение итогов
В общем, как-то так все это и работает. Что хотелось бы добавить, важно понимать, что на демо-видео автомат «работает с идеальными конями длинной один метр и весом один килограмм в сферическом вакуме». «На земле» обычно все не так задорно и заморочки с отладкой и настройкой параметров неизбежны.
Для зрелищности на демо-видео у нас присутствуют бронированные жуки, но еще там же присутствуют ещё «прокаченные» ракеты и лазеры, и минимум воды на карте. Да и то, на демо-видео с танцевальной музыкой нашей стае гопников экологи чуть «не дали за щеку», а потом при эвакуации стая еще как на зло «с позором запуталась даже не в трех, а в одной маленькой лужке», так что пришлось его величеству автору вмешаться лично (на демо-видео № 2 момент "тупника" с 21:35).
«На земле» ракеты и лазеры, у Вас могут быть слабее, через чур много больших луж и т.д. и т.п. Например, я пытался «поиграться» с автоматом на своём сохранении с модами Space Exploration и Krastorio 2. Из-за особенностей механики модов ракеты с пачкой паукотронов там тупо не работают, а лазеры жрут электроэнергию так, что стая бегает на подзарядку после встречи 2-3 ульев и процесс вроде бы и идет, но «в час по чайной ложке», а шанс что дорогостоящая стая «возьмет за щеку» он конечно низкий, но не нулевой. Ну вы сами знаете, критические ситуации развиваются по экспоненте, вот смотришь «вроде все ок, процесс прёт», моргнул, стаю уже доедают... По итогу думаешь: «Че за балет я ставлю уже третий час? Где мой старый добрый арт-поезд, ему тут на 5 минут работы?».
Теперь пройдемся по реализации логики в автомате, тут работает простое правило: чем проще и быстрее узел – тем лучше, "бороться" приходится буквально за каждый такт. Качество? Кому нужно качество, если скорость в мире Факторио главная защита. Остановился = помер, никакой щит не поможет. Да, можно построить ветвистое решение на все случаи жизни, но потом, когда вы выпускаете свою стаю сдавать практический экзамен нашим экологам, то они за любую цепочку принятия решений длиннее трех комбинаторов сообщают: «Тебя оценили и признали ничтожеством». И начинают штрафовать паукотроны как у «профнепригодного».
Скорость логики у игры всего 60 тактов в секунду, и из-за такого быстродействия медленнодействия вытекают проблемы циклопических размеров по организации непрерывного, оперативного и бесперебойного управления стаей логическим автоматом. Чтобы примерно осознать их масштаб приведу пару примеров:
Например, блок № 1 не может перебирать паукотронов для поиска «проблемных» быстрее чем 4-5 тактов, для стаи в 20 штук «пощупывание» всех паукотронов занимает 5 * 20 = 100 тактов или ~2 секунды игрового времени. В самом наихудшем сценарии учитывая время прохождения управляющего сигнала на эвакуацию по тракту блоков № 6 и 7 сама команда «L - следование в зону паковки» дойдет до Unit Controller’а к концу третьей секунды. Еще три секунды ваша стая «слоупоков» будет выполнять разворот в строну базы. Не факт, что они туда доползут в составе, который был на момент принятия решения на эвакуацию…
Или взять блок № 5, для установленного радиуса поиска в 500-700 клеток для карты с установками «600% размеры и 600% частота скоплений ульев» через 10 минут работы сканера у нас будет порядка ~5к зон «чёрная коробка», их надо оперативно перепроверять и удалять уже очищенные от ульев и червей. Очевидно, что на один проход ~5к зон для удаления зачищенных стаей клеток зоны будет необходимо «всего лишь каких-то» ~100 секунд… А если проверять только первую клетку зоны, то момент обнаружения зоны, с которой надо снять марку, «спешит» от самого момента перемаркировки на ~10 тактов, эти 9 тактов сканер находится в режиме «простоя», ваша стая тоже в режиме «простоя», а наши членистоногие друзья экологи нет...
Приходится две минуты "на проход проверки наличия отсутствия зачистки" зоны через костыль сворачивать в 3 секунды, плюс в зачистке очищенных зон помогает блок 4 в режиме 0. Этим обусловлены редкие некритичные "простои" работы автомата, они происходят вдали от скоплений и не превышают 3-5 секунд.
Или взять п. 7 второй части поста (там про число сменяемых лидеров стаи), казалось бы, что мешает взять значение «звездочка» из блока № 1 (да даже тупо поставить постоянный комбинатор и забить туда N=7), все подать в комбинатор умножить N на 200 и уже в сравнивающем комбинаторе исправить условие "A < 1500" на "A < N", так же по уму, да? Вообще да, но на самом деле нет! Я так и сделал поначалу. Но диверсант-комбинатор с условием "A > N" c огромным удовольствием может посреди замеса «встать колом» или «начать трусится в эпилептическом припадке» подвешивая весь автомат, 10 сек и гг – ваш молл делает новые 20 пауканов и модули к ним... Этот далеко неочевидный нерегулярный «баг» вызвал очень неприятное удивление и попортил мне много крови, «Факторио мэджик» одним словом.
Учитывая вышеизложенное (и ключевые недостатки, отмеченные ранее в первой части статьи) очевидно, что инженерное проектирование логического автомата с приемлемой скоростью принятия решений на имеющейся элементной базе нетривиальная задача. Неудивительно, что логический автомат изобилует «костылями», оптимизацией всего чего только можно и нельзя, и отказывается «работать из коробки», часто требует доводки с настройкой (да-да, и в логике Факторио не обошлось без руки эффективного менеджера, увы). Поэтому, к сожалению, использовать автомат как рабочий инструмент тяжеловато, а вот поиграться вполне можно. К нашему сожалению...
Кста, а вы в курсе, что сами моды не отличаются стабильностью? Я про это упоминал, например после получаса четкой работы сканер юнита или зоны запросто может принять волевое решение "отдохнуть" минуту-другую, т.е. выход тупо не работает, даже провод "накинуть" нельзя, шок! :-( Ну теперь вы в курсе, ваши дохлые пауканы кста тоже... Грустно.
Эпилог
Некоторое количество клеток зоны «чёрная коробка» уже имеется, посему запускаем любимую музыку, включаем видео на запись, садимся в паукотрон, на паукотроне не забываем включить режим «Only AI» и жмем главную кнопку автомата. Даже созерцание работы самого автомата завораживает, по миганию лампочек комбинаторов примерно понятно какие решения он в данный момент принимает, конвеер крутится –ресурсы мутятся.
Теперь ждем окончания музыки – поздравляю, Ваш личный скринсэвер готов.
На этом архитектор фабрик Холдмайбир доклад окончил, берегите себя и свою фабрику, всем спасибо и до новых встреч, пока.
П.С.: В ходе полевых испытаний я дорабатывал и чуть изменял автомат и его параметры уже после написания поста, поэтому картинки, представленные в посте, сами схемы и их параметры могут несколько отличаться от видео и картинок в посте. Лень переделывать, да и принцип работы блоков я не трогал, так что пусть в посте все остаётся как было, истинные ценители разбираться в чужом коде в нагороженных мною дебрях думаю разберутся.
На всякий случай, вдруг кто-то не допонял или не может «въехать как тут шо и куды сувать и тыкать» держите сэйв с уже готовой станцией и 20 снаряженными пауканами, играйтесь - автомат готов к труду и обороне, запускается все комбинатором внизу слева, там же сами схемы.
Агентство приступило к разработке дизайна станции для пребывания человека на Марсе ещё в 2014 году, однако окончательный выбор – в пользу архитектурного бюро Hassel Studio, – был сделан лишь на днях.
В рамках космической программы Artemis NASA планирует отправить людей на Марс в середине 2030-х годов. Если астронавтам удастся высадиться на Марс, то они не смогут вернуться на Землю в течение нескольких лет.
Задача инженеров заключалась в создании станции площадью 100 м², в которой могли бы комфортно разместиться четыре астронавта в течение целого года.
Для определения подходящего места для строительства на Марс отправится группа роботов-исследователей. При помощи 3D-печати они уже приступят к первым этапам строительства.
Как только внешний щит будет готов, астронавты прибудут на планету с надувными капсулами, в которых и будут размещаться жилые и рабочие помещения.
Теперь копируем всё, вставляем в поле комментария и отправляем.
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме как запостить несколько постов с компа (+1000 постов - как запостить несколько постов с компа)
Отличный комментарий!