Здравствуйте!
Добро пожаловать в раздел «Факты недели».
Указатели или доски объявлений — обычное явление в видеоиграх, вероятно, не намного уступающее вездесущим деревянным ящикам или взрывчатым бочкам. Это хороший, чистый и понятный способ общения с игроком, и это было то, что мы давно хотели увидеть в Factorio...
Display Panel - Дизайн (Эарендель)
Полная функциональность новой сущности "Display Panel" отображения будет полностью объяснена ниже. Для дизайна нам нужно знать только то, что это сущность, которая может отображать любую иконку по вашему выбору (предмет, рецепт, виртуальный сигнал).
Первая версия, которую я увидел, была указателем, добавленным Klonan. Это был хороший плейсхолдер, и общая концепция отображаемой сущности как указателя была чем-то, что стоило рассмотреть. Теоретически указатель мог бы работать, но есть несколько отвлекающих факторов:
- Указательный столб — это в первую очередь 2D-структура, и под этим я подразумеваю, что он высокий и плоский, но не имеет большой глубины. Если опорный столб указателя находится в середине плитки, то как более высокая сущность, это выталкивает область отображения вверх и наружу плитки, которую занимает сущность.
- Если указатель переместить вперед, чтобы дисплей поместил больше информации в пределах плитки сущности, то, поскольку это в основном двухмерная структура, будет казаться, что большая часть плитки позади него пустует, и он будет выглядеть странно, если его выстроить в ряд с другими объектами.
- Поверхность дисплея в итоге становится вертикальным прямоугольником, но значки, которые появляются на дисплее, — это значки, которые предназначены для просмотра в графическом интерфейсе или горизонтальной плоскости, например, на земле или транспортной ленте. Это заставило бы все значки выглядеть более неуместными и бороться с кажущейся проекцией камеры Factorio.
Если бы какая-либо версия указателя работала, то она, вероятно, должна была бы быть больше похожа на один из тех временных дорожных знаков, которые стоят на земле и опираются на какие-то треугольные опорные стойки. Большая проблема в том, что ни один из этих вариантов не имеет нужной эстетики.
Первый дизайн - Демонстрационная пластина
Мой первый дизайн был быстрым макетом чего-то, что исправило бы многие из этих проблем. Это была бы широкая, блочная, в основном горизонтальная поверхность дисплея, которая бы работала более естественно с имеющимися у нас значками. Это больше похоже на металлическую табличку дисплея, которую вы можете увидеть в старом промышленном музее или военном мемориале. Следующая проблема заключается в том, что если бы значок был нарисован на поверхности, то на самом деле он должен был бы быть немного сжат по вертикальной оси из-за направления камеры. Чтобы избежать этого, я слегка наклонил поверхность вперед, чтобы она была обращена к камере. Многие панели дисплея наклонены к ожидаемому положению головы стоящего читателя, поэтому это выглядело разумно.
Последнее, что было, это то, что значки, как правило, лучше всего смотрелись и были четкими на темно-сером фоне, поэтому это тоже было добавлено. Изображение ниже примерно то к чему я пришел тогда. Это не было задумано как полноценный дизайн и не было сделано в обычном разрешении 4x концепт-арта. Тем не менее, это работало лучше, чем указатель, поэтому его добавили в игру на несколько месяцев. Ему даже удалось пробраться в несколько FFF.
Второй дизайн - Больше логики
Когда пришло время сделать правильный дизайн, некоторые требования изменились. Это был уже не просто статический дисплей, он имел логическое соединение для изменения значка и многого другого. Он также был имплементирован позже как часть системы логической сети, вместе со всеми комбинаторами, выключателем питания и программируемым динамиком. Таким образом, новый дисплей должен был выглядеть как часть этого пласта технологий.
Новый дизайн основан на базе в стиле комбинатора. Все комбинаторы разные, поэтому база дисплея также «такая же, но другая» в некотором роде.
Для самой лицевой стороны дисплея я выбрал ЭЛТ (электронно-лучевую трубку). Такая изогнутая поверхность дисплея идеально подходит для эстетики этой части технологического дерева. Экран такого типа обычно наклонен вперед, но если вы посмотрите на множество старых дисплеев NASA, многие из них были наклонены довольно сильно вверх. Вероятно, это сделано для того, чтобы их было хорошо видно из положения сидя или стоя. По причинам, упомянутым ранее, для наших иконок лучше всего, если поверхность дисплея находится ближе к камере, что составляет угол 45 градусов. Экран ЭЛТ наклонен примерно на 40 градусов, так что он почти обращен к экрану, но вы все равно можете видеть некоторые интересные детали сверху.
Первая итерация нового дизайна была основана на вращении всей структуры без изменения ее формы в каждом направлении. Это заставило экран двигаться в зависимости от ориентации сущности, что более соответствует форме объекта, но было не очень здорово, когда значок и текст смещались влево или вправо, поэтому это пришлось изменить.
Вторая итерация сохраняет экран устойчивым на протяжении всех вращений. Это означает, что форма структуры отличается для каждого вращения. Было немного трудно удержать точки соединения цепей в разумных местах, но это сработало.
Мы могли бы сделать эту сущность всего в одном возможном расположении но наличие вращающихся логических соединений цепей довольно важно, потому что это одна из немногих сущностей в игре, ориентированных на отображение, и наличие проводов что пересекали бы экран, — это не то, что вам нужно. Вращение сущности для изменения положений соединений логических цепей помогает сохранить экран чистым. Даже если вы вращаете их как часть более крупного массива комбинаторов, они все вращаются вместе и предотвращают запутывание проводов. (Кроме того, даже постоянный комбинатор имеет 4 вращения, поэтому было бы странно, если бы на панели отображения было бы только 1).
Этот дизайн довольно новый, поэтому нам нужно будет его еще протестировать, прежде чем называть его окончательным. Пока нет 3D-модели, она будет сделана, если мы решим, что эта версия нас устраивает.
Display Panel - Функциональность (Клонан)
Дисплейная панель по своей сути и простейшему назначению — это всего лишь способ отображения сообщений игрокам, поэтому она стала естественной первой функцией.
Показ сообщений
В графическом интерфейсе дисплейной панели игроки могут ввести сообщение, которое позже будет показано. По умолчанию сообщение отображается только при наведении курсора на дисплейную панель игроком.
Однако иногда нам нужно, чтобы информация была видна постоянно, поэтому мы добавили опцию, позволяющую сделать текст видимым всегда (в альтернативном режиме).Для коротких сообщений это нормально, но мы не можем просто спамить целыми абзацами на экране игрока все время. Поэтому мы сделали так, что будет отображаться только первая строка текста, а полное сообщение будет появляться только при наведении.
Показ значков
Затем нам показалось само собой разумеющимся, что мы можем задать какой ни будь значок для показа. Это не требует никаких объяснений, вы выбираете значок, и он рисуется на сущности.
Однако, мы пошли еще дальше, добавив опцию «Показать на карте», которая выводит использование экранных панелей на новый уровень.
Нажатие на значок на карте открывает указатель для легкого редактирования.
Это очень похоже на систему пользовательских тегов, но не требует ручного управления при добавлении или удалении части вашего завода. И, конечно, Коварекс заставил это работать с новыми параметризованными чертежами, так что штамповка стандартного дизайна будет иметь панель отображения с правильным значком и с идеальным выравниванием.
Подключение к коммутационной сети
Подключение дисплейной панели к логической сети открывает целый ящик пандоры. Изначально мы не знали, как это сделать - ввод текста с помощью логики? Логическая сеть не так работает.
Поэтому мы остановились на простой системе:
- Вы указываете список сообщений, каждое из которых имеет свое собственное условие.
- Список оценивается сверху вниз (их можно перетаскивать, чтобы изменить порядок).
- Отображается первое сообщение, которое соответствует условию.
Мы также добавили функцию использования «Любого сигнала» в качестве подстановочного знака для установки значка, чтобы вы могли создавать динамические дисплеи комбинаторов.
Масив комбинаторов выбирает рецепт для всех дробилок, а на панели дисплея отображается текущий выходной сигнал.
Мы довольно часто использовали дисплейные панели в наших офисных LAN-вечеринках, они отлично подходят для многопользовательской игры, где общение является ключевым фактором. Display panels будут доступны бесплатно как часть обновления базовой игры 2.0.
Исправления захвата инсертера (Твинсен)
Играя с новыми быстрыми транспортными лентами, я заметил проблему. В некоторых ситуациях даже самые быстрые манипуляторы не могли забрать предметы с лент. Они почти дотягивались до них, но промахивались. Похожая проблема, которая всегда присутствовала в игре, — это твёрдотопливные манипуляторы, которые не успевали забрать топливо для себя с экспресс-транспортных лент. И лично я находил эту проблему крайне раздражающей и не имеющей никакой игровой пользы. Быстрые манипуляторы не могут справится с зеленым конвейером. Видео на скорости 0,5x.Твердотопливные манипуляторы не могут ухватить топливо с экспресс-транспортной ленты.
Видео на скорости 0,5x.
Если посмотреть на них в замедленном темпе, особенно в примере с твердотопливным, то кажется, что рука прекрасно дотягивается до предметов, поэтому она должна просто поднять их, если они достаточно близко. Реализация простого захвата должна исправить обе проблемы. Но.. как обычно, все было не так просто.
Манипуляторы имеют 2 независимые скорости движения:
- Скорость вращения — насколько быстро вращается рука вокруг своей оси.
- Скорость вытягивания — насколько быстро вытягивается и втягивается рука.
После некоторой отладки выяснилось, что скорость выдвижения была слишком медленной: рука поворачивалась на правильный угол, но кисти требовалось много времени, чтобы достичь нужной длины. Поэтому нам пришлось отладить эту скорость. Я также улучшил логику привязки, так что манипуляторы будут лучше реагировать на предмет, когда он достаточно близко.
С изменениями обе проблемы исправлены. Вставки теперь более последовательны, менее склонны к досадным сбоям, а также дают им небольшой бафф при снятии с транспортных лент.