Текстуры, файлы и паки · 3 мин чтения

Потеря текстур в FiveM: почему город размывается и как исправить

Читать на:: English · Español · Français · Deutsch · Português · Italiano · Polski · Türkçe

Игроки въезжают в город: дороги размыты, здания несколько секунд серые, иногда текстуры не грузятся вовсе. Игроки FiveM называют это потерей текстур или «city bug». Если это происходит только на вашем сервере, причина обычно в том, что сервер стримит.

Что такое потеря текстур

Всё, что стримит сервер (машины, одежда, пропы, карты), делит память текстур с самим городом игры. Когда то, что игроку нужно загрузить вокруг себя, не помещается, текстуры приходят поздно, размытыми или не приходят.

Сам FiveM указывает на худших нарушителей. Каждый стримируемый файл больше 16 MiB памяти получает предупреждение в консоли сервера, а с 48 MiB предупреждение говорит прямо: "Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)." (Слишком большие ассеты могут и БУДУТ вызывать проблемы со стримингом, например модели не загружаются или не отрисовываются.) (Что измеряет это предупреждение.)

Частые причины на сервере:

  • Слишком большие файлы: 4K-текстуры машин и одежды, целый пак, упакованный в один .ytd.
  • Один файл стримится двумя ресурсами: игра получает только один, а за стриминг второго вы платите.
  • Одни и те же текстуры повторяются в словарях пака: каждая копия стримится.
  • Текстуры без мипмап: у игры нет меньшего уровня, на который можно откатиться, поэтому они занимают полный размер на любом расстоянии.

Если у игрока потеря текстур на каждом сервере, к которому он подключается, проблема на его стороне (в его настройках или на его ПК), а не в ваших ресурсах.

Шаг 1: посмотрите, что стримит сервер

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

  • Graphics memory (графическая память) и System memory (системная память) для всего, что стримите.
  • By resource (по ресурсу), отсортировано по памяти: ресурсы, на которые стоит посмотреть первыми.
  • Oversized: каждый файл больше 16 MiB графической памяти.
  • Streamed by more than one resource (стримится более чем одним ресурсом): оставьте по одной копии каждого.
Отчёт Server Budget по четырём тестовым ресурсам: графическая и системная память, слишком большие файлы, файлы, которые стримятся дважды, и память каждого ресурса
Четыре наших тестовых ресурса, один из них намеренно скопирован: его 8 файлов показаны как стримящиеся дважды.

Эти суммы показывают, что сервер мог бы стримить, а не то, что один игрок загружает за раз: игрок загружает только то, что вокруг него. Это всё равно правильный список для разбора.

Шаг 2: уменьшите слишком большие файлы

Перетащите помеченные stream-файлы в Asset Optimizer, задайте Largest texture size (1024 или 2048 для того, что игроки видят вблизи), оставьте Add missing mipmaps включённым и скачайте облегчённые файлы. Они сохраняют имена, поэтому возвращаются прямо в stream/.

Шаг 3: сделайте повторяющиеся текстуры общими

Для пака, который повторяет одни и те же текстуры во многих словарях (паки одежды и машин часто так делают), Texture Dedupe находит копии, переносит их в один общий .ytd и пишет gtxd.meta и строки fxmanifest, чтобы модели находили их там. Переносятся только текстуры с одним именем и одинаковыми пикселями.

Родительские словари текстур читаются, когда игрок заходит на сервер. После их изменения игрокам нужно переподключиться, иначе машины могут показываться без текстур, пока они этого не сделают.

Шаг 4: проверьте, что ничего не пропало

Перетащите изменённый ресурс в Missing Textures Check: каждая модель должна по-прежнему находить каждую текстуру. Затем перетащите папку в Server Budget снова и сравните.

То же исправление с Server Budget и Asset Optimizer есть и в виде видеоурока.

Вопросы

Может ли один ресурс вызвать потерю текстур?
Да, если он достаточно тяжёлый: один пак машин или одежды с 4K-текстурами может стримить большую часть того, что отправляет сервер. Поэтому Server Budget сортирует ресурсы по памяти.
Нужно ли удалять ресурсы?
Обычно нет. Уменьшение слишком больших текстур, удаление файлов, которые стримятся дважды, и перенос повторяющихся текстур в общий словарь значительно снижают нагрузку на большинство серверов, ничего не убирая.

Инструмент для этого

Server Budget

Перетащите папку resources: память, которую стримит каждый ресурс, слишком большие файлы, о которых предупреждает FiveM, и файлы, которые стримятся дважды.

Открыть Server Budget

Пригодится также: Asset Optimizer · Texture Dedupe

Другие руководства

Все руководства →

Каждый инструмент можно попробовать бесплатно: 5 экспортов в день. Войдите через Discord, чтобы пользоваться ими.