Хватит прокручивать тысячи строк файла журнала, пытаясь выяснить, какой мод сломал вашу игру.
Log Error Extractor фиксирует каждую ошибку и предупреждение, создаваемое вашей игрой, и записывает их в чистый, читаемый отчет — только ошибки и предупреждения, и ничего больше. Затем он ранжирует каждый мод в вашей папке по количеству различных проблем, которые он вызывает, поэтому виновник находится в верхней части списка, а не зарыт где-то в журнале из 6000 строк.
Что он делает
Записывает отчет, содержащий только ошибки и предупреждения, сохраняемый как log_errors.txt рядом с вашим обычным журналом.
Рейтинг ваших модов от худшего к лучшему по определенному количеству ошибок с пометкой серьезных нарушителей.
Сворачивает повторяющиеся сообщения — один мод, выдающий одно и то же предупреждение 500 раз, показывает один раз со счетчиком, а не с 500 строками.
Разбивает отчет по модам, чтобы вы могли точно видеть, что выдает каждый из них.
Консольные команды доступны всем, кто их предпочитает: dumpLogErrors, topLogErrors, countLogErrors,clearLogErrors.
Начало работы
Привяжите клавишу в разделе «Параметры» → «Управление» → «Извлечение ошибок журнала», загрузите сохранение и нажмите его. Меню открывается где угодно — пешком, в транспорте, не важно. Переключайте параметры с помощью стрелок и нажмите ОК.
Сохранить отчет в файл — записывает полный отчет в файл log_errors.txt в папке Farming Simulator 2025.
Показать худшие моды — отображает главных нарушителей прямо на экране, файл не требуется.
Показать счетчик — сообщает, сколько ошибок и предупреждений было зарегистрировано на данный момент.
Очистить — удаляет все собранное до сих пор, чтобы следующий отчет начинался с чистого листа.
Последний вариант наиболее полезен, когда вы ищете конкретный конфликт. Очистите буфер, воссоздайте все, что сломалось, затем сохраните отчет — и он не будет содержать ничего, кроме того, что произошло между ними.
Важно — не переименовывайте мод.
Папка специально называется FS25_AAA_LogErrorExtractor. Farming Simulator загружает моды в алфавитном порядке, и AAA заставляет этот мод загружаться первым, чтобы он мог фиксировать ошибки во всем, что загружается после него. Переименуйте его, и он упадет в список, и все, что загружается до того, как оно останется незахваченным.
Требования и ограничения
Только ПК. Это скриптовый мод, а скриптовые моды не поддерживаются на PlayStation или Xbox.
Пока только синглплеер. Мультиплеер скорее не протестирован, чем известен как сломанный — он объявлен неподдерживаемым, поэтому не загружается при сохранении MP. Если вы хотите помочь, включите <multiplayer support="true"/> в modDesc, проверьте его и дайте мне знать, что произойдет.
Он не может фиксировать ошибки, возникающие до загрузки, поэтому сообщения о запуске базовой игры и сообщения на уровне движка не отображаются. Проверьте их в файле log.txt игры.
Сообщить о проблемах
Мод записывает небольшой файл проверки работоспособности log_status.txt каждый раз, когда вы загружаете сохранение. Если что-то не работает, откройте это и прикрепите, если сообщаете о проблеме.
Ненужные файлы удалены из архива.
Я знаю, что сказал не переименовывать почтовый индекс как в своем сообщении, так и в видео, показывающем, как его использовать. Но в комментариях было высказано предостережение, о котором я не подумал.
Префикс FS25_ — это правило отправки GIANTS ModHub, а не то, что требует игровой движок. Игра заботится только о том, чтобы имя состояло из букв, цифр и символов подчеркивания и не начиналось с цифры. Переименование zip-архива в AAA_LogErrorExtractor.zip работает нормально.
Так что продолжайте и щелкните правой кнопкой мыши мод, выберите «Переименовать», а затем удалите префикс FS25_, если вы обнаружите, что у вас не найдены моды.
Проверьте журнал консоли или базовой игры и увидите предупреждение о текстуре в файле log.txt — PNG в необработанном формате, который должен был быть DDS, и средство извлечения ошибок журнала не зафиксировало его. Отчет вернулся чистым. Это было похоже на ошибку в экстракторе. Это не так. Это границы того, как работает мод, и это стоит записать.
Как на самом деле работает экстрактор
Он не может прочитать log.txt. Это было решено заранее: песочница Lua разрешает io.open только в режиме записи, и игра в любом случае сохраняет файл журнала открытым исключительно. Ничто в скриптовом моде не может открыть его и очистить. Таким образом, вместо чтения журнала экстрактор находится перед функциями, которые *пишут* в него. Во время загрузки он оборачивает `printError`, `printWarning`, всё семейство `Logging` и отфильтрованную `print`, буферизует все, что им передается, и сбрасывает этот буфер по команде. Это хорошо работает. При загрузке 1200 модов он захватил 3182 сообщения.
Почему этот проскочил
Крючки не подводят. Если бы это предупреждение прошло через любую из этих функций, оно бы лежало на свалке вместе с другими тремя тысячами. Это не так. Так что через Lua он вообще никогда не проходил. Загрузка текстур происходит на уровне C++ движка, который записывается напрямую в log.txt. В пути нет функции Lua, поэтому нечего переносить. Добавьте к этому невозможность прочитать журнал, и сообщение станет действительно недостижимым. Не «трудно поймать», недостижимое с помощью этой конструкции.
Что еще есть в этой категории
Все, что движок обрабатывает сам, а не маршрутизирует через скрипт:
формат текстур и проблемы с загрузкой
сбои при загрузке i3d
сообщения компиляции шейдера
Все, что сообщает код Lua мода, по-прежнему нормально перехватывается, а это большая часть того, что действительно важно, когда вы гоняетесь за сломанным модом.
Практический вывод
«0 ошибок» из экстрактора означает «0 ошибок, о которых сообщил Lua». Это не означает, что журнал чистый. Это различие содержится в README, потому что тестер, который прочитает его неправильно, сообщит, что мод исправен, хотя это не так.
Возможная будущая работа
Для покрытия этого класса потребуется совершенно другой механизм, сканирующий папку модов на наличие текстур необработанного формата напрямую, вместо того, чтобы ждать, пока движок пожалуется. Это полностью обходит журнал. Это зависит от наличия списка каталогов в песочнице, который не был проверен. Стоит посмотреть, но это скорее новая функция, чем исправление.