Alt-F4 #12 — Обратное проектирование паука

опубликовали

В этом  выпуске номер 12 Alt-F4 xthexder раскрывает некоторые технические закулисные моменты, касающиеся прыгающего паука внизу страницы. Затем TheKool дает новичкам представление о производственных модулях и их использовании. Наконец, T-A-R делится некоторой информацией о предстоящем мероприятии сообщества, которое выглядит очень забавным.

Создание Паука для сайта xthexder

Как вы, несомненно, знаете, на веб-сайте Alt-F4 внизу каждой страницы есть паук, похожий на ракету на веб-сайте Factorio. Многие люди, вероятно, щелкали по нему, надеясь, что произойдет что-то захватывающее, но разочарованы, когда паук-трон просто продолжал подпрыгивать на месте. Читатели со зорким глазом могли заметить, что это изменилось с выпуском Alt-F4 # 8. Если вы еще не видели этого, почему бы не прокрутить вниз, нажать на своего маленького приятеля и попросить его следовать за вами!

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

Первоначальный план заключался в том, чтобы паук ползал вверх по странице и был такой же верхней кнопкой, что и ракета на официальном сайте Factorio. Это потребовало записи анимации движения вверх, а затем зацикливания ее при перемещении вверх по странице. Затем Dr.Magpie  пришла в голову идея сделать так, чтобы паук следовал за пультом прицеливания по странице, как это происходит в игре. Это выходило за рамки того, что можно было сделать с использованием записей, поскольку требовалось слишком много комбинаций.

Зная наше сообщество, вероятно, найдутся сумасшедшие, которые помогут с этим просто ради того, чтобы это было вызовом….

— psihius (October 3, 2020)

Вызов принят

Создание функционального паука для веб-сайта, безусловно, было сложной задачей, но работать над ним также было довольно весело. Комментарий psihius побудил меня приступить к работе . Первым делом нужно было просто нарисовать паук-а, используя оригинальные спрайты Factorio, чтобы их можно было перемещать независимо. Я решил использовать необработанные элементы HTML и CSS, надеясь, что браузер сможет ускорить рендеринг с помощью графического процессора. Оказалось, что у этого есть несколько недостатков, поскольку определенные изменения вызвали пересчет макета всей страницы и свели на нет любые преимущества в производительности. Однако, нарисовав базового паука, я мог начать работать над анимацией в JavaScript.

Это верхняя часть ноги. Она состоит из трех спрайтов и полностью анимирована с использованием HTML и CSS (без JavaScript).

Ранний снимок экрана с грубым изображением паука в «Т-позе». Анимации пока нет, а у этой нет коленей.

После того, как все ноги соединены, паук состоит из 58 уникальных спрайтов (на каждой ноге есть семь спрайтов, плюс два для тела). Все эти элементы управляются с помощью переменных CSS, которые можно изменять из JavaScript. Я начал с четырех переменных на каждую ногу: длины верхней и нижней части ног, а также верхнего и нижнего углов. Затем, используя некоторые тригонометрические функции, я мог вычислить значения, необходимые для того, чтобы ступня приземлилась в определенной точке. Используя мышь в качестве цели, стало очевидным первое серьезное препятствие… где вы поместите колено?

В этом первом тесте колено было зафиксировано под углом 90 °.

Я начал изучать видеоролики о перемещении паука в Factorio, чтобы попытаться определить, как заставить движение ноги выглядеть правильно. Это видео Factorio Crab Rave оказалось чрезвычайно полезным, так как я мог прыгать кадр за кадром и изучать движения ног. Я прошел много итераций, пробуя разные соотношения и формулы, но ни одна не соответствовала движению, которое мы видим в игре. Затем мне пришло в голову, что я не мыслю в трех измерениях. Тело Spidertron парит над землей, и в изометрической проекции Factorio это достигается простым вычитанием части оси z (высота) из оси y (юг). Помня об этом, я вернулся к видео и заметил, что колени паука находятся на фиксированной высоте (ось z) над телом, а колени находятся примерно на полпути между телом и ступней по осям x и y. Затем это 3D-положение проецируется в 2D, в результате чего получается почти идеальная копия игровых пропорций.

Чтобы заставить spidertron ходить самостоятельно, я потратил некоторое время на очистку исходного кода-спагетти и начал с анимации простоя. Это было легко; это просто синусоида, приложенная к высоте тела над землей. Изначально тело имело независимую скорость и положение; Позже это было изменено, чтобы использовать среднее положение каждой ноги, чтобы предотвратить рассинхронизацию ног и тела. Осталось всего восемь точек для анимации и «шагов» к цели.

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

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

В четверг днем ​​был создан блог spidertron.alt-f4.blog, чтобы вся техническая команда Alt-F4 могла протестировать spidertron и помочь с поиском и исправлением ошибок. Способ расчета прогнозирования движения по отношению к частоте кадров вызывал любые задержки (которых было много) при телепортации ног, и в целом очень глючные движения. Из-за некоторых ошибок CSS сегменты ног также имели минимальную длину, что в определенных положениях приводило к дальнейшим ошибочным движениям. После еще одной поздней ночи кодирования некоторые из основных ошибок были исправлены, и первый публичный выпуск был опубликован в блоге.

В течение следующих недель было исправлено больше ошибок, таких как ошибки округления пикселей в длине ног, из-за которых ноги дрожали в режиме ожидания, и различные частоты обновления монитора, вызывающие изменение скорости паука, в результате чего ноги не синхронизировались с телом. Spidertron также получил несколько других обновлений, таких как оранжевая краска, исправления для макета мобильной страницы и множество улучшений производительности. В целом результатом я очень доволен. Он даже оказался на 150 КБ меньше, чем исходный idle gif, со всеми включенными спрайтами, JavaScript и таблицами стилей CSS!

Спасибо r.MagPiepsihius и остальным из Alt-F4 за помощь в создании и тестировании паука. Для заинтересованных исходный код доступен на GitHub. Надеюсь, всем будет так же весело играть с ним, как и мне. (Спрайты не включаются в гите, поскольку они являются исключительной собственностью Wube и используются с их разрешения.)

Уголок сложности: модули производительности TheKool

Добро пожаловать в первую из серии статей об элементах игры, которые на первый взгляд кажутся пугающими, но, как оказалось, не так уж сложны для начала использования. Сериал начинается с трилогии о модулях, в которой нужно немного времени, чтобы сосредоточиться на каждом из трех вариантов по очереди. Позже серия может вернуться с дополнительными темами. В каждой статье будет предпринята попытка ответить на три простых вопроса: что это?, Какие результаты она может дать? И где ее следует использовать?

Предисловие: сложности в Factorio

Прежде чем углубиться в детали, я хотел бы кратко коснуться того, почему мы можем уклоняться от сложных аспектов игры и придерживаться известных нам удобных. Если вы когда-нибудь обнаруживали, что смотрите на что-то незнакомое и говорите себе: «Это выглядит сложным; Я просто буду придерживаться того, что знаю, и выясню это позже », то вы испытали предвзятость к сложности.

u/Quazarz_’s Science River

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

Или вы можете просто добавить несколько модулей в существующую схему…

Что такое модули производительности?

Если вы не знакомы с ними, модули — это предметы, которые вы можете размещать в зданиях, чтобы изменить некоторые их рабочие характеристики, такие как скорость изготовления и потребление энергии. Их также можно разместить в маяках, передавая свой эффект на каждое здание в пределах досягаемости. Это может быть очень мощно, поэтому модули часто используются в больших постройках, чтобы уменьшить количество зданий, необходимых для достижения определенной цели. Это часто означает, что они рассматриваются как конечный инструмент, как, например, в статье LoneWolf Megabase Thinking. Однако они могут стать довольно сильными гораздо раньше. Действительно, их можно использовать уже на стадии зеленой науки, появляясь сразу после сложных схем в дереве технологий.

Модули производительности являются наиболее сложными с механической точки зрения модулями в игре, поскольку они выполняют четыре задачи: увеличивают загрязнение, увеличивают потребление энергии, замедляют работу машины и добавляют бонус производительности. Какими бы сложными они ни казались, последнее — единственное, что действительно важно. Бонус производительности работает так же, как бонус производительности добычи: если у вас есть, например, 10% бонус производительности, то каждый цикл будет добавлять 10% к полосе производительности, а когда он достигнет 100%, вы получите бесплатный продукт. Правильно, бесплатно. Это даже не потребовало никаких ресурсов, оно просто появилось из воздуха.

Какие результаты они могут дать?

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

Самым ранним применением, вероятно, будет два модуля производительности 1 в сборочной машине 2, что дает + 8% бонус производительности за счет -30% скорости и большого количества дополнительного потребления энергии и загрязнения окружающей среды. Одно из последних применений — четыре модуля производительности 3 в сборочной машине 3, которая дает + 40% производительности и -60% скорости, с большим количеством дополнительных затрат энергии и загрязнения окружающей среды. Надеюсь, на этом этапе вы больше не беспокоитесь о кусающих! Получение на 40% больше продукции от ваших ресурсов — довольно серьезное дело, и эта выгода накапливается на всем протяжении дерева технологий, если вы используете их везде, где можете. Если вы используете их при каждом удобном случае в рецепте ракетного бункера, вы можете снизить потребность в сырой руде до 15% от первоначальной стоимости! Не верите мне? Взгляните на себя.

Как уже упоминалось, они также снижают рабочую скорость всего, во что они помещены. Если вы строите близко к отношениям на своем заводе, вам нужно будет учитывать как замедленную рабочую скорость, так и бонусные выходы в своих расчетах, потому что они будут все ваши отношения на их головы. Чтобы решить эту проблему, я обычно просто позволяю калькулятору KirkMcDonald’s сделать всю работу за меня.

Где их использовать?

Итак, вы решили, что хотите использовать модули повышения производительности. Куда их положить? Очевидный ответ — «везде, где только можно», но есть несколько случаев, которые заслуживают особого упоминания, даже если вы их больше нигде не используете.

  • Ракетная шахта: если вы загрузите в шахту четыре модуля из 3 модулей производительности, вам понадобится всего около 70 ракетных деталей, чтобы сделать ракету, и вы, вероятно, вообще не заметите медленного эффекта.
  • Нефть: если вы используете карту, на которой недостаточно месторождений нефти в пределах досягаемости, и вы изо всех сил пытаетесь прокачать достаточно сырой нефти, подумайте о размещении модулей производительности на своих нефтеперерабатывающих заводах и во всем, что использует нефть и пластмассовые продукты. Может показаться, что это не так уж много, но это может помочь сэкономить нефть
  • Лаборатории: вы можете разместить модули производительности в лабораториях! Свободная наука! Они даже не загрязняют окружающую среду; вы полностью избегаете худшего недостатка!
  • Буры: это ловушка! Не делай этого! Это не умножается на результаты ваших исследований производительности добычи полезных ископаемых, а просто увеличивает их, и эти исследования дают гораздо более значительный бонус. Лучше использовать модули скорости или эффективности.

Тем не менее, у модулей производительности есть несколько особых предостережений. В частности, они могут использоваться только для промежуточных продуктов, то есть тех предметов, которые используются в других рецептах и ​​не размещаются как здания. Во-вторых, их нельзя ставить в маяки. ! Если вы не использовали модули повышения производительности, вам следует подумать о том, чтобы объединить несколько модулей для ракетной шахты или лабораторий, чтобы увидеть, насколько они важны.

Спасибо за рыбу T-A-R

В качестве посвящения Comfy Factorio я хотел бы поделиться приглашением на другое многопользовательское мероприятие, которое состоится , 7 ноября, 19:00 CET. Приглашаем всех поиграть или просто зайти посмотреть.

Comfy Factorio — это сообщество, в котором особое внимание уделяется оригинальным картам и «чил» опыту. Популярными сценариями Comfy являются Biter battles, Mount Fortress и недавний teleporting Chronotrain. Чтобы отпраздновать своего 3000-го члена в Discord, Comfy объединился с Big Community Games, которая организовала мероприятие сообщества, упомянутое в Alt-F4 # 7, чтобы провести Massive Multiplayer Fish Defense Game.

Давайте посмотрим на карту, которую мы будем играть; неудивительно, что она в форме рыбы:

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

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

Содействие

Как всегда, мы ищем людей, которые хотят внести свой вклад в Alt-F4, будь то отправка статьи или помощь с переводом. Если у вас есть что-то интересное, чем вы хотите поделиться с сообществом в безупречной форме, это место для этого. Если вы не совсем уверены в этом, мы с радостью поможем, обсудив идеи содержания и вопросы структуры. Если это похоже на то, что вас интересует, присоединяйтесь к Discord, чтобы начать!

Comments: