Здравствуйте,
мы закончили регулярную серию Friday Facts, и тем не менее, мы еще так много хотим поговорить. Хочу уточнить, что мы не собираемся выпускать FFF каждую неделю, но их будет несколько в ближайшее время.
1.1 - Настоящая 1.0 Суть 1.1 заключается не в добавлении нового контента, а в том, чтобы доработать все существующие функции, чтобы они работали вместе надлежащим образом. Это может показаться немного абстрактным и скучным, но это будет объяснено более четко в следующих FFF. Поверьте, фраза «До сих пор не знала, что мне это нужно» придет вам в голову не раз.
Работа над обновлением 1.1 началась в основном сразу после выпуска 1.0, так что уже есть что показать.
Прямо сейчас мы не собираемся давать никаких обещаний относительно того, когда это произойдет, но мы будем держать вас в курсе нашего прогресса с этими сообщениями в блоге и давать некоторое уведомление до его развертывания. Хотя я совершенно уверен, что мы прошли более чем половину пути. Чтобы вы были счастливы, пока это не произойдет, давайте рассмотрим некоторые изменения.
Ограничение остановок поезда Это небольшая история о дополнительном проекте Boskid, связанном с поездом, для функции, которая запрашивалась довольно часто ( 1 [forum.factorio.com], 2 [forum.factorio.com]).
Проблема Итак, представьте себе ситуацию: вы сидите на своем заводе и вам нужно больше железа ... классика. Итак, вы строите красивую железную дорогу, чтобы доставлять руду с выделенных горнодобывающих предприятий обратно на свой металлургический завод. Вы строите 2 аванпоста с рудой и устанавливаете 2 поезда, по 1 для каждого. У двух поездов похожий график; один идет от плавки железа 1 к железной руде 1, а другой идет к железной руде 2. Это прекрасно работает.
Однако возникают проблемы, когда вы хотите расширить свое производство. Вы хотите просто скопировать и вставить «Плавку железа 1», и половина руды будет отправлена в «Плавку железа 2». Теперь вам нужно начать вручную переназначать составы, пытаясь сбалансировать пропускную способность шахт и т. Д. Если железная шахта иссякнет, вам нужно перебалансировать всю систему, переназначить все поезда с этой станции и получить всеведущий обзор всех различных маршрутов, по которым ходят ваши поезда.
Чем больше шахт, тем больше плавки и больше поездов, такое управление становится неисчислимой проблемой, и, честно говоря, это не весело (мнение).
Неидеальное решение Есть хорошее решение, которое работает (почти). То есть назвать все рудные станции одинаковыми, и все плавильные станции одинаковыми. При выборе пункта назначения поезд может отправиться на любую остановку поезда с этим названием, что означает:
- Когда вы строите новую рудную заставу, вы просто называете ее «Железный рудник», и поезд приедет и заберет от нее.
- Когда вы построите новый завод по плавке чугуна, просто назовите его «Металлургический завод», и поезд доставит немного руды.
- Когда вы строите новый поезд, просто скопируйте и вставьте простое расписание, и оно начнет работать эффективно.
Однако есть небольшая проблема с системой, которая полностью разрушает идею. Поезда не умные. Они будут следовать к произвольно выбранной остановке поезда с правильным названием в зависимости от расстояния до пункта назначения и некоторых других факторов. Это означает, что легко может случиться так, что все поезда в конечном итоге обслуживают только 1 приемник железной руды, в то время как есть другие заставы, заполненные рудой, и поезда не прибывают, чтобы ее забрать. Вы можете несколько облегчить проблему, используя схему сети для включения и отключения остановок поездов, но это только половина меры. Например, вы все еще можете закончить тем, что 10 поездов мчатся к одному небольшому пикапу железной руды, что может привести к тому, что поезда встанут в очередь на главной линии и все заклинят.
Лимит
Это довольно просто, как обычно бывает с хорошими решениями. Вы можете установить «Лимит поездов» в графическом интерфейсе остановки поезда, и остановка будет отслеживать, сколько поездов находится на станции или на пути к ней, что мы называем бронированием. Когда поезд выбирает следующий пункт назначения, он проверяет лимит всех остановок с этим именем, и если на остановке поезда уже слишком много забронированных мест, он пропустит ее. Если все возможные остановки поезда заняты, поезд будет просто ждать.
Это в значительной степени отлично решает проблему с обозначением всех остановок поезда одинаково, а также решает несколько других потенциальных неприятностей. Например, раньше штабелер для плавильного завода должен был быть достаточно большим, чтобы вместить сразу все поезда железной руды, потому что нельзя было быть уверенным, что все они не вернутся одновременно. Теперь вы можете установить ограничение поезда для остановки поезда для выплавки чугуна на максимальную вместимость станции, что означает, что вы можете построить штабелер меньшего размера и быть уверенным, что он никогда не станет переполненным.
Ограничение поездов также можно контролировать с помощью коммутационной сети, так что есть еще больше возможностей. Одна из идей заключается в том, чтобы установить лимит поездов равным 0, пока на станции не будет полной загрузки руды. Вы также можете прочитать текущее количество бронирований, которые найдут свое интересное применение.
Есть крайний случай, который нам пришлось решить во время работы над этой функцией. Что произойдет, если лимит будет снижен, когда поезд уже находится в пути? Наша первая идея заключалась в том, чтобы заставить все поезда, находящиеся в пути, изменить маршрут и найти новое место назначения. Это работает во многих случаях, но если нет остановки поезда, к которой он мог бы двигаться, он в конечном итоге остановился бы и ждал посреди путей, что нанесло бы невыразимый экономический ущерб.
Поэтому мы решили, что даже если лимит будет изменен, любые поезда с бронированием все равно будут туда ходить. Это означает, что это не строго «жесткий» лимит, но мы считаем, что это хорошо, поскольку установка лимита на 0 предоставляет альтернативный способ управления поведением поезда по сравнению с тем, когда станция отключена. В основном поезд будет учитывать предел только при первом решении, к какой остановке следует идти, после чего ему все равно, изменится ли предел.
Нам также пришлось иметь дело с предупреждениями «Нет пути». Если бы все остановки поезда были заполнены до предела, поезд показывал бы «Нет пути», что не очень понятно для игроков. Поэтому, когда поезд не может найти путь из-за ограничения движения поездов, он покажет специальное предупреждение: «Пункт назначения заполнен».
Воздействие Для стороннего наблюдателя это действительно может показаться крошечной вещью, но для нас это одна из самых захватывающих особенностей 1.1. Я думаю, это также весьма показательно, что чего-то подобного давно не хватало, учитывая популярность мода Logistic Train Network [mods.factorio.com]. Хотя предел остановки поезда не такой мощный, как мод (преуменьшение), он откроет много возможностей и добавит много интересных возможностей игрового процесса.
Не знаю, говорю ли я один, но мне нравится, когда правила системы очень просты, а сложность возникает в результате взаимодействия этих очень простых систем. Я думаю, что ограничение на поезд - прекрасный пример простого правила, которое приведет к действительно интересному и сложному поведению. Я могу представить себе, что я просто езжу на железном поезде с простым графиком «Pickup Iron -> Dropoff Iron», и он водит меня по всей фабрике, поскольку хаотичное взаимодействие ограничений поездов и других поездов означает, что каждый раз, когда ему нужно куда-то поехать еще. Я могу себе представить, что при построении такой сети железных дорог, где движение менее предсказуемо, чем система «Статический маршрут», потребуется множество интересных дизайнерских решений.
Советы и уловки Советы и уловки были особенностью игры в течение очень долгого времени. Они начинались как способ объяснить игрокам вещи, которые не были объяснены больше нигде. Ярким примером является подсказка «Alt-mode». Игра без Alt-режима болезненна, и даже более болезненно смотреть, поэтому мы должны были как-то сказать игроку.
Первые дни Когда я говорю о ранних днях, я имею в виду первые дни, даже до инди-кампании. Первая реализация советов была простой, но немного грубой.
Графический интерфейс подсказок и приемов в версии 0.6.4.
Первоначальный дизайн:
- Они будут всплывать при запуске игры.
- Вы можете щелкнуть по ним вперед (назад нет).
- Вы можете закрыть графический интерфейс, не было возможности снова открыть его, кроме повторной загрузки сохраненной игры.
- Изображения были несовместимыми по размеру, поэтому графический интерфейс менял размер.
- Был встроенный флажок для их отключения.
Он выполнил свою работу, но он нуждался в доработке, как и в остальной части игры.
Первый апдейт со временем советы и хитрости упали в тёмный угол. Это всегда было низкоприоритетным и явно не было задачей «Графика» или «Программист» по их улучшению, это было чем-то средним. Вот где я пришел и взял на себя задачу внести некоторые улучшения.
Советы и рекомендации GUI в версии 0.16.51.
Первые улучшения:
- Вы можете перемещаться по ним вперед и назад.
- Вы можете закрывать и открывать их с помощью горячей клавиши.
- Изображения были сделаны повторно с постоянным разрешением и увеличением.
- Вы можете открыть их в мультиплеере.
На этом этапе мы переключили внимание на другие «учебные каналы», так как надеялись, что новые мини-уроки и NPE означают, что нам не нужно столько советов. Мы думаем, что лучше, если такие вещи, как использование элементов, будут объяснены во всплывающей подсказке элемента, а не в другом графическом интерфейсе в другом месте.
За исключением некоторых обновлений стиля графического интерфейса, советы и рекомендации не претерпели значительных изменений в следующих нескольких основных версиях.
1.0.0 При переходе к версии 1.0 я в последний раз взглянул на советы и рекомендации. Подсказки - это один из первых графических интерфейсов пользователя, который видит игрок, когда запускает Freeplay, поэтому я хотел дать им последний штрих перед полной версией.
Графический интерфейс "Советы и приемы" в версии 1.0.0.
На этот раз улучшения стали последним завершающим штрихом, позволившим довести советы и рекомендации до их окончательной формы.
- Увеличен размер изображения и обновлены все изображения до высокого разрешения.
- Добавлены фреймы и субпанели, чтобы соответствовать визуальному дизайну нового графического интерфейса.
- Новые стили кнопок.
- Стандартная кнопка закрытия в правом верхнем углу.
Так что это правильно? Я, наконец, отдыхаю и смотрю, как восходит солнце в благодарной вселенной ...
Вдохновение для изменений Еще до выпуска 1.0 меня вдохновляли мини-вики из Krastorio 2 [mods.factorio.com] и Informatron [моды .factorio.com] мод.
Основная искра, это указатель тем. Решает множество проблем:
- Вы можете сразу увидеть названия всех советов.
- Вам не нужно просматривать все подсказки.
- Это, естественно, позволяет категоризировать советы.
- Перед тем, как нажать на подсказку, игрок имеет некоторое представление о содержании подсказки.
- Небольшие значки предметов выглядят привлекательно.
Однако с приближением крайнего срока 1.0 и не желая расширять сферу применения, я просто позволил этой идее созреть в моей голове ... до сих пор.
Новые советы и хитрости Картинка стоит 1000 слов, и в данном случае это очень правда. Итак, давайте начнем с этого: давайте рассмотрим
и объясним некоторые из начальных изменений:
- Теперь сбоку есть указатель.
- Теперь, когда есть указатель, мы можем удалить кнопки «Вперед» и «Назад».
- Есть кнопка поиска, мы можем искать по заголовкам подсказок.
- Подсказки разделены на категории и имеют соответствующий отступ.
- Есть кнопка «Отметить как прочитанное», мы вернемся к ней позже ...
Довольно много изменений в макете графического интерфейса, и он работает очень хорошо. Но мы можем пойти дальше.
Проблема остается, проблема небольшая, но в долгосрочной перспективе и при наличии сложных процентов она становится большим источником боли. Проблема в том, что в советах по-прежнему используются изображения, а это значит, что они устаревают по мере обновления. Мы много раз пересматривали все скриншоты за эти годы.
Так что мы можем с этим поделать?
Моделирование В этом случае GIF стоит 1000 изображений, поэтому давайте начнем с этого:
https://cdn.factorio.com/assets/img/blog/fff-361-tips-110-gif.mp4
Вы видите на веб-странице GIF (технически .mp4), но мы не добавляем GIF в игру. То, что показывает GIF, - это графический интерфейс «Советы и уловки» в реальном времени, отображающий реальную симуляцию сущностей внутри графического интерфейса. Это чудо техники - божественный дар сверху (коварекс).
Виджет моделирования решает довольно много начальных проблем с использованием снимков экрана / изображений, но мы можем пойти еще дальше.
https://cdn.factorio.com/assets/img/blog/fff-361-tips-110-drag-building.mp4
Мы можем использовать моделирование не только для демонстрации заводской среды. Используя скрипты Lua, мы можем создавать целые скриптовые сцены и демонстрации. Во многих случаях это намного эффективнее. Например, предварительный просмотр здания, движение мыши и прослушивание «реальных звуков» делают подсказку более значимой.
Объединение с помощью мини-руководств.
Осталась еще одна проблема: у нас все еще есть графический интерфейс для мини-руководств. Так что это странная и неловкая ситуация, когда некоторые вещи объясняются в графическом интерфейсе подсказок, а другие - в мини-руководствах.
Графический интерфейс мини-учебника сам по себе является довольно сложной задачей, и у него много проблем, схожих со старым графическим интерфейсом «Советы и рекомендации». «Изображения» мини-учебника - это просто «связанные» значки технологий с «связанными элементами» под ними. Текст дает краткое описание того, что вы можете ожидать от учебника.
Было бы неплохо, если бы мини-уроки имели те же функции, что и советы и уловки, указатель, красивые большие изображения, побуждающие игроков нажать кнопку «Воспроизвести обучение» ... и т. Д.
Так что, если мы просто как-то поместим мини-уроки в графический интерфейс с советами и трюками? Это имеет большой смысл и объединяет канал связи. Теперь вы знаете, что если вам нужна помощь по какой-либо теме в игре, есть одно место, где вы должны искать какие-то рекомендации, - GUI советов.
У мини-руководств были некоторые интересные особенности или свои собственные, они отображались только в том случае, если игрок выполнил некоторые требования, и предлагались игроку, если он выполнял определенные действия. Например, учебные пособия по поездам будут отображаться только после того, как вы изучите железнодорожную технологию. Если мы объединим две концепции, мы сможем использовать функции разблокировки и предложения для советов и рекомендаций.
Таким образом, мы объединяем функциональность двух систем. Мини-уроки остались прежними, но они представлены внутри подсказки, и мы подключаем систему предложений и зависимостей к подсказкам. Мы добавили кнопку «Отметить как прочитанное», и подсказки будут отображаться после прочтения зависимостей.
https://cdn.factorio.com/assets/img/blog/fff-361-hiding-tips.mp4
Мы рассматриваем эту новую систему разблокировки и рекомендаций как одно из наиболее важных улучшений. Это означает, что графический интерфейс подсказок и приемов начинается только с необходимых подсказок, и по мере вашего продвижения в игре соответствующие подсказки открываются и показываются вам. Это очень похоже на то, как игра начинается с нескольких рецептов, а более сложные аспекты открываются со временем.
Советы можно изменять! Когда-то последняя небольшая проблема со старыми советами и приемами заключалась в том, что они были в некотором смысле «жестко запрограммированы». Они были загружены из очень специфического файла JSON в каталоге основных данных. Это означает, что у модов не было возможности добавлять или изменять какие-либо подсказки.
Вполне естественно, что с этим обновлением и модернизацией подсказок мы открываем систему для моддеров. Внутренне советы работают как любой другой прототип, поэтому моду очень легко добавлять собственные записи.
Набор советов При добавлении новых советов было заманчиво сделать советы по всем вопросам. Однако, подумав, мы решили не заходить слишком далеко. Мы не хотим, чтобы советы и приемы превратились в «Факторипедию» или «внутриигровую вики». В общем, предметы, сущности и общая механика должны объяснять себя более прямым образом, например, с помощью всплывающих подсказок.
Мы хотим, чтобы советы и приемы объясняли механику и темы, которые являются более сложными или которые трудно объяснить где-то еще. Имея это в виду, мы выбрали несколько свободных категорий:
- Вещи, не относящиеся к какому-то конкретному элементу, например, альт-информация, здание-призрак.
- Когда визуальное представление очень помогает, например, сплиттеры, ленточные конвейеры, устройства для вставки с длинными руками
- Когда это что-то связано с комбинацией нескольких элементов, например, ворота через рельсы, копипаст.
- «Уловки», например, перемещение лаборатории в лабораторию, перемещение стека, перетаскивание здания.
Важно отметить, что мы должны объяснять только то, чего игроки на самом деле не понимают. Я никогда не слышал жалоб на то, что кто-то не понимает, как работают солнечные панели или аккумуляторы, поэтому включать их в советы и рекомендации было бы просто лишним, даже если это технически соответствует критериям.
Заключение Мы вполне довольны результатом, подсказки и уловки. Графический интерфейс всегда был одной из тех парадоксальных систем, которые были одновременно чрезвычайно полезными и ужасно неэффективными. Мы действительно надеемся, что все усилия, которые мы вложили в это, помогут.
Говоря о помощи, нам нужна ваша помощь: какие советы вы бы нашли полезными при игре? Поиск TIL на Reddit[www.google.com] может быть источником вдохновения, но все равно трудно сравнивать важность отдельных независимых сообщений Reddit, к тому же многие из них устарели. Итак, если вы хотите оставить отзыв, обсуждение FFF - лучшее место (да, мы читаем Reddit).