Пятничные факты #361 — Предел остановок поезда, советы и хитрости

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

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

1.1 — Настоящий 1.0

Смысл 1.1 не в том, чтобы добавить какой-то новый контент, главная мотивация — доработать все существующие функции, чтобы они работали вместе должным образом. Это может показаться немного абстрактным и скучным, но это будет объяснено более четко в следующих FFF. Поверьте, фраза «До сих пор не знал, что мне это нужно» придет вам в голову не раз.

Работа над обновлением 1.1 началась в основном сразу после 1.0, так что уже есть что показать.

Прямо сейчас мы не собираемся давать никаких обещаний относительно того, когда это произойдет, но мы будем держать вас в курсе нашего прогресса с этими сообщениями в блоге и давать некоторое уведомление до его развертывания. Хотя я совершенно уверен, что мы прошли более чем половину пути. Чтобы вы были счастливы, пока это не произойдет, давайте рассмотрим некоторые изменения.

Предел остановок поезда

Это небольшая история о побочном проекте Boskid, связанном с поездом, для функции, которая запрашивалась довольно часто.(12).

Проблема

Итак, представьте себе ситуацию: вы сидите на своей фабрике и вам нужно больше железа … классика. Итак, вы строите красивую железную дорогу, чтобы доставлять руду с выделенных мест добычи руды обратно на свой завод по переплавке. Вы строите 2 рудных форпоста и устанавливаете 2 поезда, по 1 для каждого. У двух поездов похожий график; один идет от плавки железа 1 к железной руде 1, а другой идет к железной руде 2. Это прекрасно работает.

Однако при расширении производства возникают проблемы. Вам нужно просто скопировать и вставить «Плавка железа 1», и половина руды будет отправлена ​​в «Плавку железа 2». Теперь вам нужно вручную переназначить составы, попытаться сбалансировать пропускную способность шахт и т. Д. Если железная руда иссякнет, вам нужно перебалансировать всю систему, переназначить все поезда с этой станции и получить всеведущий обзор всех различных маршрутов, по которым ходят ваши поезда.

Чем больше шахт, тем больше плавки и больше поездов, это управление становится неисчислимой проблемой, и, честно говоря, это не весело (мнение).

Несовершенное решение

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

  • Когда вы строите новую добычу руды, вы просто называете ее «Железный рудник», и поезд приедет и заберет от нее.
  • Когда вы построите новую переплавку, просто назовите ее «Плавка железа», и поезд доставит немного руды.
  • Когда вы строите новый поезд, просто скопируйте и вставьте простое расписание, и оно начнет работать эффективно.

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

Лимит

Это довольно просто, как обычно бывает с хорошими решениями. Вы можете установить «Лимит поездов» в графическом интерфейсе остановки поезда, и остановка будет отслеживать, сколько поездов находится на станции или на пути к ней, что мы называем резервированием. Когда поезд выбирает следующий пункт назначения, он проверяет лимит всех остановок с этим именем, и если на остановке поезда уже слишком много забронированных мест, он пропустит ее. Если все возможные остановки поезда заполнены, поезд будет просто ждать.

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

 

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

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

Нам также пришлось иметь дело с предупреждениями «Нет пути». Если бы все остановки поезда были заполнены до предела, поезд показывал бы «Нет пути», что не очень понятно для игроков. Поэтому, когда поезд не может найти путь из-за ограничения движения поездов, он покажет специальное предупреждение: «Пункт назначения заполнен».

Влияние

Стороннему наблюдателю это действительно может показаться крошечной вещью, но для нас это одна из самых захватывающих особенностей 1.1. Я думаю, это также весьма показательно, что чего-то подобного давно не хватало, учитывая популярность мода Logistic Train Network. Хотя предел остановки поезда не такой мощный, как мод (преуменьшение), он откроет множество возможностей и добавит много интересных возможностей игрового процесса.

Не знаю, один ли я такой, но мне нравится, когда правила системы очень просты, а сложность возникает в результате взаимодействия этих очень простых систем. Я думаю, что ограничение на поезд — прекрасный пример простого правила, которое приведет к действительно интересному и сложному поведению. Я могу представить себе, что я просто езжу на железном поезде с простым графиком «Забрать железо -> разгрузить железо», и он водит меня по всей фабрике, поскольку хаотичное взаимодействие ограничений поездов и других поездов означает, что каждый раз, когда ему нужно куда-то поехать еще. Я могу себе представить, что при построении такой сети железных дорог, где движение менее предсказуемо, чем система «Статический маршрут», потребуется множество интересных дизайнерских решений.


Советы и хитрости

Советы и хитрости были особенностью игры очень давно. Они начинались как способ объяснить игрокам вещи, которые не были объяснены больше нигде. Ярким примером является подсказка «Alt-режим». Играть без Alt-режима болезненно, и даже более болезненно смотреть, поэтому мы должны были как-то сказать игроку.

Ранние дни

Когда я говорю «ранние дни», я имею в виду первые дни, даже до инди-кампании. Первая реализация советов была простой, но немного грубой.

Советы и хитрости GUI в версии 0.6.4.

Первоначальный дизайн:

  • Они будут всплывать при запуске игры.
  • Вы можете щелкнуть по ним вперед (назад нет).
  • Вы можете закрыть графический интерфейс, не было возможности снова открыть его, кроме повторной загрузки сохраненной игры.
  • Изображения были несовместимыми по размеру, поэтому графический интерфейс менял размер.
  • Был встроенный флажок для их отключения.

Первое обновление

Со временем советы и хитрости попали в тёмный угол. Это всегда было низкоприоритетным и явно не было задачей «Графика» или «Программист», это было чем-то средним. Вот где я пришел и взял на себя задачу внести некоторые улучшения.

 

Советы и хитрости GUI в версии 0.16.51.

Первые улучшения:

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

На этом этапе мы переключили внимание на другие «учебные каналы», так как надеялись, что новые мини-уроки и NPE означают, что нам не нужно столько советов. Мы думаем, что лучше, если такие вещи, как использование элементов, будут объяснены во всплывающей подсказке элемента, а не в другом графическом интерфейсе в другом месте.

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

1.0.0

Приближаясь к версии 1.0, я в последний раз взглянул на советы и рекомендации. Подсказки — это один из первых графических интерфейсов пользователя, который видит игрок при запуске Freeplay, поэтому я хотел дать им последний штрих перед полной версией.

Советы и хитрости GUI в версии 1.0.0

На этот раз улучшения стали последним завершающим штрихом, позволившим довести советы и рекомендации до их окончательной формы.

  • Увеличен размер изображения и обновлены все изображения до высокого разрешения.
  • Добавлены фреймы и подпанели, чтобы соответствовать визуальному дизайну нового графического интерфейса.
  • Новые стили кнопок.
  • Стандартная кнопка закрытия в правом верхнем углу.

Так что это правильно? Я наконец отдыхаю и смотрю, как восходит солнце в благодарной вселенной …

Вдохновение для перемен

Еще до выпуска 1.0 меня вдохновляли мини-вики, найденные в Krastorio 2 и Informatron .

Основная идея, это указатель тем. Решает множество проблем:

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

Новые советы и хитрости

Картинка стоит описания в 1000 слов, и в данном случае это очень верно. Итак, начнем с этого:

Давайте рассмотрим и объясним некоторые из начальных изменений:

  • Теперь сбоку есть указатель.
  • Теперь, когда есть указатель, мы можем удалить кнопки «Вперед» и «Назад».
  • Есть кнопка поиска, мы можем искать по заголовкам подсказок.
  • Подсказки разделены на категории и имеют соответствующий отступ.
  • Есть кнопка «Отметить как прочитанное», мы вернемся к ней позже …

Довольно много изменений в макете графического интерфейса, и он действительно хорошо работает. Но мы можем пойти дальше.

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

Так что мы можем с этим поделать?

Моделирование

В этом случае GIF стоит 1000 изображений, поэтому давайте начнем с этого:

Вы видите на веб-странице GIF (технически .mp4), но мы не добавляем GIF в игру. Что показывает GIF, так это графический интерфейс «Советы и хитрости» в реальном времени, отображающий реальную симуляцию сущностей внутри графического интерфейса. Это чудо техники — божественный дар сверху (kovarex).

Виджет моделирования решает довольно много начальных проблем с использованием снимков экрана / изображений, но мы можем пойти еще дальше.

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

Объединение с помощью мини-руководств

У нас осталась другая проблема, у нас все еще есть графический интерфейс мини-учебника. Так что это странная и неловкая ситуация, когда некоторые вещи объясняются в графическом интерфейсе подсказок, а другие — в мини-руководствах.

Графический интерфейс мини-учебника сам по себе является довольно сложной задачей, и у него много проблем, схожих со старым графическим интерфейсом «Советы и хитрости». «Изображения» мини-учебника — это просто «связанные» значки технологий с «связанными элементами» под ними. Текст дает краткое описание того, что вы можете ожидать от учебника.

Было бы неплохо, если бы мини-уроки имели те же функции, что и советы и уловки, указатель, красивые большие изображения, побуждающие игроков нажать кнопку «Воспроизвести обучение» … и т. Д.

Так что, если мы просто как-то поместим мини-уроки в графический интерфейс с советами и трюками? Это имеет большой смысл и объединяет канал связи. Теперь вы знаете, что если вам нужна помощь по какой-либо теме в игре, есть одно место, где вы должны искать какие-то рекомендации, — GUI советов.

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

Таким образом, мы объединяем функциональность двух систем. Мини-уроки остались прежними, но они представлены внутри подсказки, и мы подключаем систему предложений и зависимостей к подсказкам. Мы добавили кнопку «Отметить как прочитанное», и подсказки будут отображаться после прочтения зависимостей.

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

Подсказки можно изменять модами!

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

Вполне естественно, что с этим обновлением и модернизацией подсказок мы открываем систему для моддеров. Внутренне советы работают как любой другой прототип, поэтому моду очень легко добавлять собственные записи.

Объем советов

При добавлении новых советов было искушение сделать советы по всем вопросам. Однако, поразмыслив, мы решили не заходить слишком далеко. Мы не хотим, чтобы советы и рекомендации превратились в «Факторипедию» или «внутриигровую вики». В общем, предметы, сущности и общая механика должны объяснять себя более прямым образом, например, с помощью всплывающих подсказок.

Мы хотим, чтобы советы и хитрости объясняли механику и темы, которые являются более сложными или которые трудно объяснить где-то еще. Имея это в виду, мы выбрали несколько свободных категорий:

  • Вещи, не связанные с каким-то конкретным предметом, например, альт-информация, здание-призрак.
  • Когда визуальное представление очень помогает, например, разделители,  конвейеры, манипуляторы.
  • Когда это что-то связано с комбинацией большего количества элементов, например, ворота через рельсы, копипаст.
  • «Хитрости», например, перемещение лаборатории в лабораторию, перенос стека, перетаскивание здания.

Важно отметить, что мы должны объяснять только то, чего игроки на самом деле не понимают. Я никогда не слышал жалоб на то, что кто-то не понимает, как работают солнечные панели или аккумуляторы, поэтому включать их в советы и рекомендации было бы просто лишним, даже если это технически соответствует критериям.

Вывод

Мы вполне довольны результатом. Графический интерфейс всегда был одной из тех парадоксальных систем, которые были одновременно чрезвычайно полезными и ужасно неэффективными. Мы действительно надеемся, что все усилия, которые мы вложили в это, помогут.

Говоря о помощи, нам нужна ваша помощь: какие советы вы бы нашли полезными при игре? Поиск TIL on Reddit может быть источником вдохновения, но по-прежнему сложно сравнивать важность отдельных независимых постов Reddit, к тому же многие из них устарели. Итак, если вы хотите дать нам отзыв, обсуждение FFF — лучшее место (да, мы читаем Reddit).

Comments: