Пятничные факты #288 – Новые разрушения, Новые ошибки

Spread the love

опубликовали Wheybags, Rseding, Dom, Albert

Удаление языковых переводов RTL Wheybags

Извините за то, что мы удалили переводы RTL (иврит и арабский) в 0.17.20.

До этого момента языки RTL были наполовину реализованы, где текст просто переворачивался, когда мы загружали его из Crowdin. Это «работает» на приличную долю вещей, но не почти на 100%. Чтобы достичь того уровня блеска, который мы хотим выпустить в версии 1.0, нам нужно потратить много времени на реализацию правильной поддержки макетов RTL. Это просто не имеет смысла для нас, учитывая наши текущие цели и долю нашей базы игроков, которая использует эти языки (менее 0,1%). Мы решили, что вместо того, чтобы полностью потрошить переводы, мы могли бы оставить их тем, кто им пользуется, но не предлагать их в графическом интерфейсе по умолчанию.

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

Интересные сообщения об ошибках Rseding

Несколько лет назад, когда я только начинал заниматься программированием, другие говорили мне, что кто-то обычно начинает с позиций QA / bug tester и, если они справляются, то могут перейти к «веселой» работе. Это подразумевает, что позиции тестировщика ошибок не являются забавными, и что я должен с нетерпением ждать выполнения этих задач. Это было 4 года, 7 месяцев и 8 дней назад (на момент написания этой статьи), когда я спросил Kovarex о возможном разрешении мне помочь исправить ошибки в Factorio, и сегодня исправление ошибок – моя вторая любимая часть работы над Factorio (с оптимизацией, занимающей первое место). ).

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

Некоторые из наиболее интересных из исправленных ошибок 0.17:

  • Игра вылетает при вызове меню выхода в многопользовательском режиме, когда вы используете планировщики чертежей / деконструкции, а затем отпускаете кнопку мыши.
  • Графический интерфейс игры будет скрыт, если игра была сохранена и загружена, пока открыт графический интерфейс технологии.
  • Изменение размера окна при загрузке на экранах 4k приведет к тому, что индикатор выполнения загрузки не будет отображаться (но текст по-прежнему работал нормально).
  • Игра вылетает при удалении нужного рельса из временного маршрута поезда, если целевой рельс был тупиком.
  • Игра вылетит, если вы откроете графический интерфейс с модами обновлений, не войдете в систему, затем закроете приглашение входа в систему, нажмете кнопку «Обновить», войдете в систему, выйдете из графического интерфейса обновлений и вернетесь к нему (обнаружен при журнале сбоев).
  • Игра будет аварийно завершена, если цель открытого графического интерфейса станет недействительной в течение того же тика, что и запуск автосохранения (обнаруживается в журналах ошибок).
  • Игра вылетает при попытке открыть графический интерфейс установить фильтр в инвентаре боеприпасов другого игрока, открытого с помощью команды / open (найденной из журналов ошибок).
  • Игра вылетит, если вы снова присоединитесь к многопользовательской игре, из-за которой вы потеряли связь, пока показывалось окно подсказок и хитростей (найдено из журналов ошибок).
  • Игра вылетит при принятии приглашения в игру Steam, если в ходе предыдущей попытки присоединиться к многопользовательской игре вручную. (найдено из журналов ошибок).
  • Игра вылетала бы при загрузке, если бы у вас было  сохранение с модами с 2-мя разными сборочными машинами с 2-мя разными рецептами жидкости, которые оба перешли на разные рецепты с разным количеством входов / выходов жидкости (найденных из автоматических журналов ошибок).

Большинство из них, где ~ 10 строк исправляет все, но шаги воспроизведения заняли от нескольких часов до дня.
Они до сих пор не победили лучших из них, которые мы имели ранее

  • Игра вылетает при нажатии «Restart» в запущенной игре, если новая игра создается по тому же адресу памяти, что и старая игра.
  • Логика передачи многопользовательской карты застряла бы навсегда, пытаясь отправить последний пакет, если бы CRC для пакета оказался конкретным значением, которое некоторые маршрутизаторы интерпретировали как плохой / недействительный / помеченный как отброшенный.
  • И, наконец, самое лучшее: игра случайным образом вылетает в многопоточной логике рендеринга, если у вас есть процессор AMD Ryzen с более старыми чипсетами и BIOS. Мы все еще получаем отчеты о сбоях от этого – несколько с каждым выпуском. Исправить это просто: обновить драйверы чипсета и BIOS. Достаточно часто, что мы, скорее всего, добавим специальное сообщение, если обнаружим, что это происходит. Смотрите это сообщение на форуме.

В целом исправление ошибок идет хорошо. Ранее на этой неделе у нас был сложный релиз, связанный с тем, что некоторая логика графического интерфейса не работала правильно. В прошлом мы говорили о нашей автоматизированной тестовой системе (FFF-186), которая обычно проверяет игровую логику. С черновым выпуском ранее на этой неделе он подтолкнул меня к тому, чтобы привести тестовую систему в форму, в которой мы могли бы запускать автоматические графические тесты (в надежде избежать проблем, которые были у нас во время двух сломанных версий). У нас еще есть несколько мелких вещей, которые нужно исправить, но в противном случае система автоматического тестирования теперь может запускать полный графический интерфейс во время выполнения тестов (параллельно). Ради интереса я настроил его так, чтобы окна располагались в сетке:

//youtu.be/LXnyTZBmfXM

Новые остатки от разрушений почти для всего Dom, Albert

Так как навсегда, при убийстве сущности мы использовали общие остатки (за некоторыми исключениями, стены, рельсы …). Мы заботились только о размере объекта, и это сделано.

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

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

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

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

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

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

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

Как всегда, дайте нам знать, что вы думаете на нашем форуме.


Комментарии: