Карты и MLO для FiveM-сервера
Рано или поздно любой RP-проект на FiveM упирается в одно и то же: ванильная карта Лос-Сантоса всем игрокам примелькалась, а полицейский участок в Мишн-Роу видели уже тысячу раз в тысяче стримов. Решение — кастомные карты и MLO (Map Location, кастомные интерьеры вроде отдела полиции, больницы, банка или мебельного магазина), но тут же вылезает вторая проблема: тяжёлая карта на слабом ПК игрока превращается в слайд-шоу, а неправильно собранный ресурс роняет сервер при старте. Разберём, как ставить карты и MLO так, чтобы не убить ни сервер, ни фреймрейт у половины онлайна.
Содержание
- Что такое MLO и чем он отличается от обычной карты
- Структура ресурса: fxmanifest.lua и файлы карты
- Стриминг ассетов: почему нельзя просто закинуть всё в один ресурс
- Оптимизация под железо игроков: не убей FPS половине онлайна
- Где брать карты и MLO: репозитории, маркеты, лицензии
- Проверка совместимости версий: карта должна дружить с билдом сервера
- Тестирование перед продом: как не устроить даунтайм из-за карты
Что такое MLO и чем он отличается от обычной карты
Обычная кастомная карта — это, как правило, добавление объектов поверх существующего мира: новое здание, дорога, мост, целый район. MLO — частный случай, конкретно интерьер, встроенный в существующую или новую точку на карте через YMAP-файл с interior-проксёй.
Разница важна для оптимизации: обычная карта грузится, пока игрок физически рядом (по streaming-радиусу), а MLO подгружается только когда игрок реально заходит внутрь через дверной портал — интерьеры не должны занимать память у всех, кто просто едет мимо здания снаружи. Если после установки MLO у игроков просаживается FPS даже вне интерьера — почти наверняка ресурс собран без нормального стриминга и тянет всё разом.
Для RP-серверов на фреймворках вроде ESX или QBCore (если ещё не определился, что выбрать под свой проект) MLO — это в первую очередь полицейские участки, больницы, банки, автосалоны и разные кастомные магазины: своя атмосфера сразу поднимает субъективное качество сервера в глазах игроков, даже если геймплейный код не менялся вообще.
Структура ресурса: fxmanifest.lua и файлы карты
Любая карта или MLO в FiveM — это ресурс, который живёт в собственной папке resources/[maps]/moya-karta/ и обязательно содержит fxmanifest.lua. Без манифеста FiveM ресурс просто не увидит.
Минимальный fxmanifest.lua для карты на базе YMAP:
fx_version 'cerulean'
game 'gta5'
author 'ИмяАвтора'
description 'Кастомная карта: полицейский участок MRPD'
version '1.0.0'
data_file 'DLC_ITYP_REQUEST' 'stream/moya_karta.ytyp'
files {
'stream/moya_karta.ymap',
'stream/moya_karta.ytyp',
}
this_is_a_map 'yes'
Директива this_is_a_map 'yes' критична — она сообщает FiveM, что ресурс содержит статичные карты, и включает нужный режим синхронизации потоковых файлов между клиентами. Забыть её — частая причина, когда карта видна автору, но не видна другим игрокам на сервере.
Дальше в server.cfg ресурс запускается как обычно:
ensure moya-karta
Порядок в server.cfg имеет значение, если карта зависит от других ресурсов (например, от базового пака интерьеров) — зависимые ресурсы должны стартовать раньше. Если карта ставится поверх готового фреймворка, часто нужен ещё и отдельный "загрузчик" — например, ресурс с ymap-конфигом, который включает нужный interior вместо ванильного (актуально для MLO, которые заменяют существующее здание, а не добавляют новое).
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверСтриминг ассетов: почему нельзя просто закинуть всё в один ресурс
Стриминг — это система FiveM (и в целом движка RAGE), которая подгружает модели, текстуры и коллизии по мере приближения игрока, а не разом при заходе на сервер. Если игнорировать эту логику и пихать десятки тяжёлых моделей в один ресурс без деления на потоковые файлы, происходит две неприятные вещи: долгий разовый лаг-спайк при первом приближении к зоне и рост потребления VRAM на клиенте, который не освобождается вовремя.
Практические правила, которые стоит соблюдать при добавлении карт:
- Держи модели в папке
stream/и подключай черезdata_fileв манифесте — это штатный путь потоковой загрузки. - Не собирай гигантские единые
.ymapна весь город — дели по районам или зонам, чтобы клиент грузил только то, что рядом. - Для текстур используй сжатие DXT/BC (стандартный формат для GTA V), а не сырые PNG — это напрямую влияет и на размер ресурса, и на VRAM.
- Проверяй LOD-модели (levels of detail) — если карта без LOD, объекты не будут корректно "упрощаться" на расстоянии, и это лишняя нагрузка на рендер даже там, где детали не видно.
Оптимизация под железо игроков: не убей FPS половине онлайна
Вот тут стоит сказать прямо: кастомные карты и особенно тяжёлые MLO-интерьеры с большим количеством пропсов (мебель, декор, освещение) — одна из самых частых причин жалоб на просадки FPS на RP-серверах. Разработчик карты часто тестирует её на своём топовом ПК и не замечает проблемы, а у трети игроков сервера — бюджетные видеокарты или ноутбуки.
На что смотреть перед тем, как ставить карту на прод:
- Количество пропсов и источников света. Динамическое освещение (особенно много source-точек в одном интерьере) — один из самых дорогих эффектов в движке. MLO с десятками ламп по всей карте почти гарантированно просадит FPS на слабом железе.
- Полигонаж моделей. Кастомные хайполи-модели (двери, мебель, декор) без оптимизированных LOD тяжелее ванильных ассетов Rockstar в разы.
- Коллизии. Лишние или неоптимизированные коллизии грузят не GPU, а CPU-часть клиента — и просадки от этого заметны иначе, рывками, а не стабильным низким FPS.
Точные цифры прироста или падения FPS зависят от конкретного железа игрока и конкретной карты — универсального ориентира тут нет, и любые "плюс 20 FPS после оптимизации" без контекста конкретной сборки — маркетинг, а не факт. Единственный надёжный способ понять, насколько карта тяжёлая — протестировать на паре ПК разного уровня до релиза на прод, а не после первой волны жалоб в Discord.
Отдельно: если сервер официально заявляет минимальные системные требования для игроков, тяжёлые карты стоит либо делать опциональными (например, отдельный ресурс с "лёгкой" версией интерьера), либо честно предупреждать в правилах сервера, что для комфортной игры нужно железо выше среднего.
Где брать карты и MLO: репозитории, маркеты, лицензии
Экосистема карт FiveM держится на community-контенте, и тут важно разделять источники по типу:
- GitHub-репозитории энтузиастов — часто бесплатные базовые карты (гаражи, небольшие здания, апартаменты), но качество и уровень оптимизации сильно разнятся от автора к автору. Обязательно смотри issues и обсуждения в репозитории — там обычно всплывают известные проблемы с производительностью или конфликтами с другими ресурсами.
- Специализированные маркеты кастомных ресурсов для FiveM (тематические форумы и площадки community) — там продаются готовые крупные MLO: полицейские участки, больницы, казино, целые районы. Часть контента здесь платная, и это нормально — серьёзный MLO с оптимизацией под несколько сотен игроков одновременно требует реальных часов работы 3D-художника, а не просто "накидал пропсов в редакторе".
- Готовые паки от известных в сообществе авторов — обычно надёжнее по качеству и стабильнее по производительности, чем случайная бесплатная находка, но и цена выше.
При покупке платного контента проверяй условия лицензии: часть авторов запрещает перепродажу или использование на нескольких серверах под одним ключом, часть требует указания авторства в правилах или на странице сервера. Нарушение лицензии — это не только этическая проблема, но и риск получить репутационный удар в комьюнити, где такие вещи быстро расходятся.
Проверка совместимости версий: карта должна дружить с билдом сервера
FiveM выпускает регулярные обновления серверного билда (artifacts), и не каждая карта одинаково хорошо работает на любой версии. Перед установкой карты на прод стоит сверить три вещи:
- Дату/номер билда сервера, на котором тестировал автор карты — если в описании ресурса указан билд полугодовой давности, а у тебя стоит свежий artifacts-релиз, есть шанс столкнуться с расхождением в поведении стриминга или с ошибками загрузки
ytyp. - Зависимости от других ресурсов — многие MLO требуют базовый пак interior proxy или конкретную версию скрипта дверей, без которого MLO физически не откроется игроку.
- Конфликты zон и координат — если карта заменяет ванильный интерьер (например, переопределяет MRPD), и у тебя уже стоит другой ресурс с похожей заменой, произойдёт наложение, и итог непредсказуем: от визуальных артефактов до краша ресурса при входе.
Логика с проверкой версий и зависимостей похожа на то, как это устроено у кастомных карт для Rust — там тоже есть свои нюансы совместимости карты с версией движка, только для другого движка и другого набора инструментов.
Практический совет: не обновляй серверный билд сразу после релиза Cfx.re на боевом проекте — дай пройти паре дней, чтобы community успело проверить популярные карты и MLO на совместимость, и только потом накатывай апдейт. Если после смены билда сервер начал ругаться в консоли на конкретный ресурс с картой — первым делом проверь issues репозитория этой карты, почти наверняка кто-то уже словил ту же ошибку.
Тестирование перед продом: как не устроить даунтайм из-за карты
Прежде чем ensure новую карту на боевом сервере, стоит прогнать её на тестовом окружении:
# в server.cfg тестового инстанса
ensure moya-karta
Зайди сам, проверь, что интерьер грузится, двери открываются, нет "дыр" в текстурах (частый признак не докачавшегося стрим-файла) и нет console-ошибок вида Failed to load ytyp или Couldn't find asset. Такие ошибки почти всегда означают, что путь в манифесте не совпадает с реальной структурой папок ресурса — самая частая опечатка новичков.
Если сервер уже живой и с онлайном, лучше выкатывать новые крупные карты в окно с минимальной активностью игроков (ночью по вашему основному часовому поясу аудитории), а не в прайм-тайм — рестарт ресурса с картой иногда требует и рестарта самого сервера, если что-то пошло не так с потоковыми файлами.
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли поставить несколько MLO одновременно, если они не пересекаются по координатам?
Да, если у карт разные зоны и они не переопределяют одни и те же ванильные интерьеры — конфликтов не будет, ресурсы просто грузятся независимо друг от друга.
Почему у меня карта видна в игре, но сервер выдаёт ошибку в консоли при старте?
Чаще всего это несовпадение путей в fxmanifest.lua с реальной структурой файлов, либо забытая директива this_is_a_map 'yes' — сервер тогда не понимает синхронизацию потоковых данных корректно.
Нужно ли перезапускать весь сервер после установки новой карты или хватает рестарта ресурса?
В большинстве случаев хватает restart moya-karta в консоли или через txAdmin, но если карта конфликтует с уже загруженным interior proxy другого ресурса — иногда помогает только полный рестарт сервера.
Есть ли смысл ставить бесплатную карту с GitHub на серьёзный RP-проект?
Смысл есть, если карта явно оптимизирована и у неё активное community (свежие коммиты, закрытые issues) — но перед продом её всё равно стоит прогнать на тестовом окружении, как и платный контент.
Как понять, что конкретная MLO слишком тяжёлая для моей аудитории?
Ориентируйся на отзывы других серверов, которые её уже используют, и обязательно тестируй сам на паре машин разного уровня — универсальных цифр по "предельному" количеству пропсов или источников света не существует, всё зависит от конкретной сборки.