Holdmybeer
Holdmybeer
Рейтинг:
120.48-0.24 за неделю
Постов: 3
Комментов: 306
C нами с: 2021-12-11

Посты пользователя Holdmybeer

Holdmybeer
Holdmybeer
3 мec.
Так получилось, что с бывшей женой разошлись, дочь 12 лет осталась с матерью, ну а я сейчас работаю в другом городе вахтой. В очередной мой приезд дочь показала, что поигрывает на смартфоне в игру Brawl Stars. С дочерью у меня всегда была сильная эмоциональная связь, но когда месяцами живешь за сотни км, какая бы ни была сильная связь, она растворяется моментом, поэтому лишняя ниточка буквально на вес золота. И я принял волевое решение в свои 40+ врываться в гачу-дрочильню для школотронов.
Для непосвященных, игра представляет собой игру в духе доты с видом сверху, куча режимов, больше сотни персонажей. Игра супердинамичная, постоял 5 сек и отрегенил полный столб хп, выстрелы ваншотают, все это взрывается, мигает, мельтешит, мультяшные кривляющиеся анимэ персонажи, полный мрак для старпера вроде меня.
Как оказалось, моё «биожелезо» тупо не «тянет» эту игру. Если малолетки уворачиваются от каждой быстрой пульки, то я как еблан смотрю на медленно летящую бочку динамита и бегу на неё, а реакции переложить палец на другую сторону не хватает. Хреновато стреляю, с моей реакцией речи о стрельбе на упреждение почти не идёт, могу только криво пулять на удачу. Ну не говоря о ситуации, когда полэкрана взорвалось и ты минуту глазами ищешь своего персонажа, к респауну еле успеваешь найти. Вообщем мой уровень игры был весьма и весьма очень не очень, даже сам не ожидал, что буду играть хуже середнячков. Если поначалу дочь поигрывала со мной в команде, то уже через пару недель делала это весьма нехотя. Зачем тащить вагона и психовать на батю, если можно с подружкой апнуть в 2-3 раза больше за тоже самое время?
Весьма грустно, когда дочь играет с тобой несколько каток, а ты только вагонишь, да ещё в уже почти в выигранных катках регулярно «даешь якоря». Приходилось просто из чувства стыда говорить «ладно, тут мне пора идти, покедова», ну чтоб человечек лишний раз с тобой не мучился. Когда скилл сильно отличается у игроков команды, страдают все: ты понимаешь, что лажаешь, не можешь сосредоточиться на игре и думаешь, как бы не облажаться,
союзники молча тебя терпят. Все поиграли в своё удовольствие, что называется. Когда скилл у всех на примерно одном высоком уровне, вы вместе быстро прогрессируете. А когда ты на дне, опыта взять особо негде, опытные союзники в пати не берут, а которые берут - играть не умеют, замкнутый круг собирающего крупицы опыта бомжа на помойке.
Больше месяца я украдкой ото всех на вахте каждый день уделял по полчаса этой сраной школотронной игре, прокачал три персонажа до прайма, на парочке персов худо-бедно мог что-то исполнить, но в целом объективно это было жалкое зрелище. Рандом в игре внимательно следит, чтоб % побед не падал ниже 50% и лошки не теряли мотивацию, после 2-3 проигрышей подряд подкидывает ботов, чтобы нубас «реабилитировался». То самое чувство, когда осталось открыть последний ежедневный сундучок и уже продул 3 раза школьникам, рандом дал наконец ботов, ты такой «наконец-то, щас победка, готовьте мой сундучок!» Но ты настолько рахит, что боты в самом начале катки тебя переехали и надо опять отыгрывать (сливать) две-три катки до следующих ботов. Я ещё подумал (наивный), что возможно виноват пальцевый интерфейс и на джойстике дела пойдут получше. Взял у кента джойстик ps4 на пробу, полдня настраивал мантис/осирис, ну и как оказалось, дело было конечно не пальцевом интерфейсе. В анамнезе: кожаная прокладка между джойстиком и креслом поистрепалась. Пичаль. Вернул джойстик взад…
Вообщем так и шли мои дела в этой игре неважно, но однажды на выходные выпал первый для меня легендарный персонажик, ворона. Его прокачал примерно наполовину, получалось на нем тоже так себе и тут заходит в игру любимая доченька. Похвастался вороненком, сыграли с ней несколько каток. Я в целом не сильно налажал, меня даже похвалили. Дочь зашла в мой профиль, проконсультировала меня по вновь выпавшим мне персонажикам. И говорит: «Вот ещё хороший перс Глоу тебе выпал, у меня его нету». Я его очень редко встречал, мне показался какой-то унылый персонаж. В бою, даже промахиваясь через раз, быстрее убивал его чем он меня.
Механика игры предусматривает, чтоб вы как можно больше играли и зарабатывали рейтинг на всех персонажах, которые у вас есть. Причем до рейта 200 вам дают одних ботов, поэтому фармить сундучки проще всего новыми не прокаченными персонажами. В общем, мы решили прокачать нам рейта лоулевелами. Дошла очередь и до этого Глоуи. Если основная часть персонажей просто стреляет снарядами, кто-то далеко одиночным снарядом, кто-то в упор широким конусом, кто-то кидает гранату по дуге, то этот Глоуи стреляет слабым снарядом и
если попал во врага образуется связь и хп врага медленно убывает. Если попал в союзника, то эта связь еле хилит, но внезапно этого «еле» оказалось весьма достаточно. Дочь сидела на ДД, а я был хилом и бегал сзади налечивал. Сразу поняли, что кажется можно работать!
В игре есть важная веха рейтинг персонажа 1к - Прайм (синий). До этого рейтинга снимают за поражение 2-4, за победу дают 6-10. Т.е. прокачать перса до прайма не проблема, даже если вы супер нубас, то просто играть придется в 3-5 раз больше. 2к рейтинга уже красный Прайм, там за поражение уже снимают чувствительно. Но все равно нубасу можно там прорваться (порваться). Есть еще золотой Прайм 3к, там уже нубасам делать нечего. В основном все качают персов до 1к - до синего прайма. Если на иконке персонажика перед боем написано 25+ праймов – сразу понятно задрот-батя игры киберкотлетит. Еще есть ПвП рейт: желтый, синий, розовый, красный, золотой. Если что, я щас на синем ПвП (в игре имеется ввиду).
У меня оставалась внутриигровая валюта и я повысил Глоуи до 8 лвл. Дочь села за Эмз 11 левела (максимальный) с уже набитым рейтом 1600 (половина до красного прайма, поднимала с подружкой). Запустили «нокаут 3х3» и понеслась. Эмз наносит кучу урона на средней дистанции и под хилом передамажит любого, а на короткой дистанции дамажит слабенько, но может оттолкнуть на среднюю, на крайний случай я своим Глоуи страхом отгоняю. Я и раньше знал, что доченька хорошо шпилит, но тут прям убедился, ДДшит за двоих-троих, а главное быстро мыслит с минимумом ошибок. Её персонаж требователен к позиции, и я сразу отметил, что у дочери всегда хорошая позиция. Моментальная четкая реакция в игровых ситуациях, особенно заметно в момент «вилки» решений бить/бежать, правильно проскакивает их без «зависаний». Когда хп на нуле играет без паники, готовая киберкотлетка, жаль мать сильно против компов.
Сценарий боя прост: после первой перестрелки наша команда отлечивается за 3 сек, а противникам надо 5 сек, это дает серьезное преимущество, противнику приходится вместо второй перестрелки разрывать дистанцию чтобы «продышаться». Наша задача все время подпридушивать оппонентов, и так как мы постоянно навязываем бой, то преимущество в инициативе мне компенсирует реакцию, ведь я примерно знаю, что буду делать в следующую секунду, а не реагировать своей допотопной кочерыжкой на перфокартах из прошлого тысячелетия. Минимум тактики-реакции, максимум стратегии-позиции-инициативы. Моя задача: прилежно держать дистанцию и позицию, изредка подключаться к ДД.  
Первая перестрелка ознакомительная, занимаем позиции, набираем суперы, второй накат уже трогаем вражин за мяконькое, третий накат и последующие – берсерки в кровавом тумане в режиме преследования. Нашего третьего убили и остались с доченькой 2 в 3: «юнга, подержите моё пиво, штурвал надо взять двумя руками!» Для старпера меня Глоуи оказался имбой, думаю, за Глоуи народ не играет только потому как школотронам надо самим нагибать, а бегать вокруг колон и в основном сапортить им слишком уныло. Не искал медь, а нашел золото!
Третий челик в нашей команде был рандомом и если попадался скиловый, то победы прям сплошняком шли. Я уже говорил, игра внимательно следит за % побед, и винрейт у нас был примерно 60%, игра держит кривую обучения/вовлечения. Не было ботов и частенько давало ребят с красными праймами и ПвП рангом красный и иногда золотой. Причем если мы их не убивали, то серьезно озадачивали (учитывая мой 8й левел). 
Ещё лично меня удивил факт того, что ребята с рандома пока идут подряд победы тыкают кнопку «сыграть ещё раз с текущей командой». Однако одно поражение - сразу тыкают на выход, хотя понятно, что игра просто дала специально сильного оппонента, чтоб нам интереснее было. Объективно готовая имба тима в которой ты к месту, но стоит раз оступиться, и союзники переходят в разряд «зачем вы Мне, неудачники», ни разу после поражения никто не тыкнул «продолжить» за несколько часов игры. Видимо боязнь поражений у школоты перевешивает аналитику оценки потенциала команды (но это не точно, возможно их ещё смущал мой лоулевел).
Играли мы аж до 3 утра, апнули 300 рейта дочери, я там пропотел знатно, но за эту ночь оторвался за месяц печальнобытия, не зря корячился, неделю потом ходил под впечатлением, даже здесь простыню накатал хз зачем. Вообще надо сказать с началом семейной жизни я завязал с командными играми и изредка поигрывал только соло, ну знаете, женщины просто не могут потерпеть, когда мужик полчаса не может оторваться от компа и подскочить по её уважительной просьбе. Прям вспомнил юность, несколько часов пролетело за минуту, оказалось все еще достоин! Когда прощались, дочь попросила не играть на Глоуи без неё, «ясно дело» ответил я и лег спать за несколько сотен километров от неё.
А ещё у меня в эту ночь было мощнейшее дежавю, яркая вспышка флешбека сверхновой внутри башки. Моя молодость прошла в WoW на холи пале, 2240 рейта своими клешнями… Не каждый ресто шама в образе волка лучше меня «дордил» колонну, если понимаете о чём я – мой Вам респект. Самое смешное, что я играл арену в мужицком сетапе ТСГ (ТСГ'ешникам – дабл респект) и стратегия нашего боя почти 20 лет назад была тупо непрерывно давить инициативой противника в плотном контакте: сильнее давишь – легче дышать, только остановился - сразу умер. Тут то ручки проснулись и все вспомнили! И тогда у меня тоже была основная задача держать позицию и хилить как не в себя, только мотивация была совершенно другая, да и вообще все было другое, я был другой, колесо сансары сделало по мне круг… 
Нынче я в нашей маленькой гильдии девочек-подружек из семи штыков не плебей, но патриций. Уважаемый сапорт 3х3 (!), батя уважаемого участника (!!), который не просто играет «за компанию» со школьниками, а могЁт развалить на центральной позиции (!!!), Глоуи № 1 (короночка моя), трипл респект получается. Красный прайм дочери и её лп (лучшей подруге) сделали, щас золотой делаем (и мне заодно, не знаю зачем мне, но мне очень надо), дело идёт тяжеловато, но идёт, главное я на веслах в паровозе, а не в вагоне сижу. Такие дела.
Рис. 1: Итог ночи - первая моя цифровая семейная реликвия.

Отличный комментарий!

Пришлось в профиль заглянуть, чтобы убедиться, что всё-таки не реклама BS. Ну... ладно.

Factorio: Вы разъёбываете ульи руками? Нет, просто показываю. Красивое!

Не без труда я прошёл чистилище своим весьма специфичным видосом по игре Factorio. На сайте присутствуют много любителей игры, мой длиннопост для них.
На видео стая из 20 паукотронов под руководством логического автомата разъёбывает кусак со скоростью ~100 ульев в минуту. Далее в  посте даётся описание работы логического автомата. Для понимания прочитанного желательно понимать принцип работы логики Factorio и примерно представлять, как работает счётчик и запоминающий регистр. Сложность поста со звездочкой, так сказать, для ценителей.
Автомат у меня получился удачный, что пришлось хвастаться не мог не поделиться.
Для Вашего внимания представлена видео и текстовая версия поста.
1.   Ключевые особенности логического автомата
Все паукотроны на карте стаей бегают уничтожают обнаруженные улья и червей. Для ремонта, пополнения боеприпасов и при уровне батарей ниже 30% стая направляется на парковку. Для срыва фокуса огня червей и плевак лидер стаи меняется каждые ~3 сек.

Широкий поиск гнезд и червей осуществляется в установленном радиусе, в случае обнаружения стая выдвигается на точку. При следовании стаи происходит второй «быстрый» поиск уже в значительно меньшем радиусе (50~60 клеток) для оперативного реагирования стаи на вычищение скоплений. После ликвидации всех обнаруженных врагов стая возвращается в место парковки.

Достоинство логического автомата – он не затирает другие зоны, что важно если вы используете их для, например, маркирования руды и последующий сбор AI майнером.

Не обошлось и без недостатков. Обычно логический автомат работает четко, но он довольно чувствителен к потере паукотронов в стае. Иногда не замечает потери, но обычно все очень плохо заканчивается :-( Простого и эффективного решения «эвакуации» я не додумал, потому ставьте побольше щитов и следите за оповещением «Направляюсь в зону паковки».

И второй недостаток, ID паукотронов должны идти по порядку начиная с единицы, рекомендую ставить паукотронов «на землю» с первого раза, иначе ID могут перескочить через один-два и в этом случае надо править ID «руками» чтоб ID шли по порядку начиная с единицы, иначе автомат «тупит». Кста, иногда достаточно "обвести" паукотронов мышкой и ID "переназначатся" сами.

Третий недостаток не связан с автоматом, а вытекает из поиска пути паукотронами. Паукотрон бегает только по прямой и не может обогнуть лужу, со всем вытекающими последствиями для автомата :-(
2.   Органы управления логическим автоматом
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, весьма рекомендую.  Не смотря на всю гениальность автора, к сожалению моды не отличаются стабильностью, автор видимо слабо владеет напильником, при работе с модами прям чувствуется есть что допилить.
4.   Начальное размещение
Автомат задействует всех паукотронов на карте и снаряжение оборудованием допустим 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 снаряженными пауканами, играйтесь - автомат готов к труду и обороне, запускается все комбинатором внизу слева, там же сами схемы.

Just the best screensaver, I guess

https://www.youtube.com/watch?v=Nl0HWx089P0Попробую ворваться со своим глупым видео в гражданство реактора, Факторио тут уважают. Контента аля тупой гайд на простяцкие темы или собрание поезда из 1000 автвагонов в ютубе полно, а я вроде как сделал оригинальный контент.На моем видео стак из 20 AI паукотронов в автоматическом режиме под руководством логического автомата час разъёбывает карту со скоростью ~100 ульев в минуту, использую как скринсэйвер. На Ваш суд.