Блог розробників (FFF#288) – Нові руйнування, нові помилки

Поделиться

опублікували 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), яка зазвичай перевіряє ігрову логіку. З чорновим випуском раніше на цьому тижні він підштовхнув мене до того, щоб привести тестову систему в форму, в якій ми могли б запускати автоматичні графічні тести (в надії уникнути проблем, які були у нас під час двох зламаних версій). У нас ще є кілька дрібних речей, які потрібно виправити, але в іншому випадку система автоматичного тестування тепер може запускати повний графічний інтерфейс під час виконання тестів (паралельно). Заради інтересу я налаштував його так, щоб вікна розташовувалися в сітці::

Нові залишки від руйнувань майже для всего Dom, Albert

Так як назавжди, при вбивстві суті ми використовували загальні залишки (за деякими винятками, стіни, колії …). Ми дбали тільки про розмір об’єкта, і це зроблено.

Це правильне рішення, але нам потрібні більш конкретні і природні опади, щоб можна було визначити, яка сутність була знищена. В цьому немає особливої необхідності, тому що примари зазвичай надають цю інформацію, але ми допрацьовуємо гру і робимо все можливе краще, коли це можливо. Отже, ми почали експериментувати з маленькими електричними стовпами.

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

Нічого страшного, нам просто потрібно зберегти залишки в об’єктному шарі, і все вирішено. Нова проблема – сортування шару об’єктів. Factorio відображає об’єкти зверху вниз і зліва направо. Це означає, що об’єкти зверху покриті об’єктами під ними, а об’єкти зліва – об’єктами справа. Таким чином, ми повинні бути дуже обережні з залишками Це ускладнює композицію, тому що це може статися:

У цьому випадку нам пощастило, тому що це виглядає красиво, але в іншому напрямку нам би не пощастило. З більш важкими залишками, такими як ядерний реактор або нафтопереробний завод, у нас більше не буде цієї щасливої ​​випадковості. Звичайно, ми постараємося зробити ці щасливі випадковості можливими при будь-якої настроювання, але дозвольте мені скептично поставитися до цього питання.

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

Добре, пам’ятайте, що гравець може пройти через це, і у залишків немає коробок зіткнення. Буде дуже дивно бачити гравця, буквально ігнорує фізична світу. Одним з можливих рішень було додати поле зіткнення до залишків, тому ми уникаємо цього неприємного візуального ефекту. Це рішення здається хорошим з самого початку, але воно зачіпає так багато аспектів реального балансу ігрового процесу, що ми відмовилися від нього.

Ми все ще експериментуємо з цим і намагаємося знайти кращий підхід між усіма цими обмеженнями. Сподіваюся, скоро ми знайдемо правильне рішення.

Як завжди, дайте нам знати, що ви думаєте на нашому форумі.


Поделиться

Comments: