FS25 16x Map Fix — основная причина + инструмент для исправления
Почему карты размером 16x (и больше) в Farming Simulator 25 вылетают с ошибкой «allocReg»?
или застряли на «100% компиляции шейдеров»? Здесь вы найдете полную диагностику и инструмент.
это позволяет загружать и синхронизировать многопользовательский режим на обычном оборудовании.
Важно:
Вам нравится инструмент?
Вы можете поддержать разработку Ko-fi — пожалуйста, укажите «16x Map Fix», чтобы я знал, над чем работать дальше.
Диагностика на выделенном сервере и клиенте с 16 ГБ ОЗУ, оба с одной и той же картой 16x.
Инструмент уменьшил количество ошибок allocReg на реальной карте 16x с 878 987 до 0, что сделало ее пригодной для многопользовательской игры.
Короче говоря (TL;DR),
Сбой allocReg на самом деле вызван двумя разными проблемами, которые выглядят одинаково:
Причина Решение
Требования к памяти в одиночном режиме — карта 16x требует примерно 20-32 ГБ при первоначальной компиляции данных плотности (карты плотности); 16 ГБ мало.
Большой файл подкачки (48ГБ+) + DX11 → загружается оригинальная, немодифицированная карта. Мультиплеер
Регистрация фрагментов фиксированной емкости в модуле синхронизации карты плотности уменьшает записываемый уровень плотности карты до 8192 пикселей для карт плотности 16384 пикселей — см. инструмент ниже.
Доказательство того, что в многопользовательской игре дело не в оперативной памяти: выделенный сервер с 262 ГБ ОЗУ по-прежнему выдавал те же ошибки 3014 «allocReg». Больше оперативной памяти или больший файл подкачки не помогают в многопользовательском режиме — проблему решает только меньшее количество плиток.
Причина подробно.
Переполняющие слои (фрукты, почва, сорняки, информационный слой) представляют собой записываемые карты плотности «деталей местности» игры — вы пашете, сеете и собираете урожай в любом месте на них, в том числе вне поля зрения, а сервер контролирует всю карту. Данные, доступные для записи, не могут использовать «виртуальное текстурирование» (при котором передаются только видимые плитки, доступные только для чтения). Поэтому эти слои должны быть полностью в памяти и зарегистрированы. Ваши требования к ресурсам зависят от площади карты: 16x означает 16-кратное количество плиток. В одиночном режиме клиент загружает свои собственные предварительно скомпилированные файлы .gdm; Единственным узким местом является кратковременный всплеск использования памяти во время первой компиляции, который устраняется достаточно большим файлом подкачки.
В многопользовательском режиме сервер передает карты плотности каждому присоединяющемуся клиенту, который перекомпилирует их в реальном времени через реестр плиток фиксированного размера (TiledBitmapOperationCompiler). Плотность 16384 пикселей приводит к переполнению — и, следовательно, к тысячам операций «allocReg». Это представляет собой жесткий предел емкости, не зависящий от оперативной памяти; Именно поэтому даже серверы с 262 ГБ ОЗУ выходят из строя, а эффективный верхний предел GIANTS для многопользовательского режима в четыре раза превышает стандартный размер (4x): Карта 4x — это самая большая область, плотность записи которой вписывается как в реестр, так и в синхронизацию на одно соединение.
Инструмент
tool/mapfix.py +tool/Optimize-Map.bat (перетаскивание в Windows). Он масштабирует любую чрезмерную плотность или информационный слой (16384 пикселей, степень двойки) карты до безопасных для двигателя 8192 пикселей — именно то разрешение, с которым поставляются рабочие карты 4x. Информация о поле и культурах сохраняется (декодирование → повторная выборка ближайшего соседа → повторное кодирование; проверено на идентичность пикселей на 99,9%, покрытие культур без изменений). Карты высот и геометрия местности (dem.png, сетка с 2ⁿ+1 точкой) распознаются по их размеру (не степени двойки) и не изменяются.
Приложение
Перетащите ZIP-файл карты в папку Optimize-Map.bat (требуется Python 3 — Pillow будет установлен автоматически).
В той же папке будет создан файл с расширением «_fixed.zip» — исходный файл останется неизменным.
Загрузите исправленную карту на свой сервер, начните новую игру (важно: старые сейвы содержат старую редакцию стихов) и принимайте участие в игре.
Включает grleconvert (лицензия MIT) для преобразования между .gdm/.grle и PNG. Поддерживает карты 16x и 32x; Выходные данные всегда имеют безопасный формат 8192 пикселей.
Примечание о многопользовательском режиме (автосохранение ГИГАНТОВ).Даже с исправленной видеокартой выделенный сервер GIANTS выполняет блокирующее автоматическое сохранение («auto_save_interval», по умолчанию: 10 минут). На больших видеокартах этот процесс сохранения блокирует основной поток на такое время, что соединение с клиентом может быть потеряно именно в этот момент («соединение потеряно»), в то время как сам сервер остается в сети. Чтобы свести к минимуму эту проблему, увеличьте значение auto_save_interval в выделенномServerConfig.xml (например, до 30–60).
Дополнительный мод: Auto VRAM Optimizer.
Небольшой автономный мод, который увеличивает лимит потоковой передачи текстур в FS25 (около 4 ГБ по умолчанию) до фактического объема видеопамяти вашей видеокарты. Это приводит к более плавной загрузке и меньшему количеству всплывающих окон на всех видеокартах с более чем 4 ГБ видеопамяти, а не только на картах 16x.