Настройка geodata Lineage 2: перестаньте проходить сквозь стены

Geodata Lineage 2 — это карта высот и коллизий мира. Без неё сервер всё равно запускается и игроки входят: они просто проходят сквозь стены, бьют мобов через пол и проваливаются за карту в отдельных местах. Каждый симптом выглядит как баг клиента, поэтому владельцы часами смотрят не на тот слой.
Здесь описана настройка, которая действительно меняет поведение: нужные файлы в нужной папке, осознанно выбранный режим движка и тест, доказывающий, что стены существуют после перезапуска.
Что на самом деле содержит geodata
Мир делится на сетку квадратных регионов, и у каждого региона свой файл. aCis описывает сетку как 176 регионов для поддерживаемого мира, с именами вида 22_16.l2j: два числа — это координаты региона, а не версия. Внутри каждого файла лежат слои высот и отметки заблокированных ячеек, которые сервер использует для трёх разных задач:
- Движение — может ли персонаж стоять в этой координате и перейти в следующую.
- Линия видимости — достаёт ли скилл или стрела до цели через это пространство.
- Pathfinding — когда прямая линия заблокирована, какой маршрут обходит препятствие.
Форматы различаются. .l2j — стандартный формат Java, .l2d — диагональный вариант, используемый некоторыми сборками, а файлы _conv.dat берутся из официального клиента и читаются серверами на базе L2OFF и конвертерами. Сборка, загрузившая неверный формат, либо игнорирует файлы, либо засыпает консоль ошибками разбора.

Шаг 1: положите файлы туда, где их ищет движок
Любой сервер семейства L2J ожидает папку geodata относительно рабочего каталога гейм-сервера, обычно data/geodata. Параметр, указывающий на неё, называется по-разному в разных сборках, и здесь люди теряются:
| Сборка | Файл конфигурации | Параметр пути |
|---|---|---|
| L2J Server | game/config/geodata.properties | GeoDataPath |
| L2JMobius | game/config/GeoData.properties | GeoDataPath |
| aCis | config/geoengine.properties | GeoDataPath |
Оставьте путь относительным (./data/geodata) и запускайте сервер из его собственной папки. Абсолютный путь на машине, которая потом переедет, или относительный, разрешённый из неверного рабочего каталога, дают один результат: ни один регион не загружен и понятной ошибки нет.
Для High Five официальный проект L2J распространяет совместимый набор в своём репозитории geodata (l2j_geodata). Берите набор, соответствующий вашей хронике и ядру; файлы другой хроники загружаются, но неверно размещают рельеф и двери.
Шаг 2: выберите режим движка осознанно
Три движка выражают одну и ту же идею разными ключами, и важно поведение:
| Режим | aCis | L2J / L2JMobius | Результат |
|---|---|---|---|
| Выключено | GeoData = 0 | geodata не загружена (неверный GeoDataPath или все регионы отключены) | Стены игнорируются; игроки и мобы проходят сквозь них |
| Коллизии + LoS | GeoData = 1 | PathFinding = 0 с загруженной geodata | Нельзя ходить и кастовать сквозь стены; мобы не агрятся через них |
| Полный pathfinding | GeoData = 2 | PathFinding = 2 (или 1 для файлов узлов) | Заблокированное движение обходится |
В aCis GeoData = 2 — правильное значение для живого сервера. В L2J и L2JMobius слой коллизий появляется от самой загрузки geodata, а PathFinding = 2 добавляет обход. Без обхода моб, чья цель стоит за забором, стоит на месте вместо того, чтобы обойти. Цена — CPU, потому что каждый неудачный прямой маршрут запускает поиск. На полной осаде это заметно, и это первое, что стоит проверить под нагрузкой.
Два смежных параметра стоит понимать:
CoordSynchronize—-1синхронизирует только ось Z;2— значение, предназначенное для geodata, позволяющее серверу исправлять клиента, сообщающего позицию внутри стены. Ставьте2при включении geodata.ForceGeoData— загружает буферы в физическую память при старте. Быстрее и стабильнее ценой RAM. Отключите на маленьком VPS и следите за подтормаживаниями.
Включайте geodata до первой открытой беты, а не после. Игроки, научившиеся проходить сквозь стену замка, этого не забывают, и каждая поздняя правка выглядит для них нерфом.

Шаг 3: загружайте только нужное или проверяйте всё
L2J и L2JMobius позволяют управлять набором регионов. TryLoadUnspecifiedRegions = True загружает каждый регион, присутствующий в папке, включая не перечисленные, и не роняет старт при отсутствии файла; значение False ограничивает загрузку перечисленными регионами, что ускоряет запуск, пока вы строите свою карту. aCis использует подход списка напрямую: его конфиг перечисляет имена регионов и комментирует те, что не поддерживаются клиентом.
У частичной загрузки есть ловушка. Незагруженный регион ведёт себя как режим 0 в этой части мира: стены там исчезают. Если игроки говорят, что в конкретном замке нет коллизий, проверьте, не закомментирована ли строка этого региона, прежде чем подозревать сборку.
Шаг 4: докажите, что работает
Перезапускайте гейм-сервер после любого изменения: geodata читается один раз при старте. Затем подтвердите по порядку:
- Лог запуска сообщает о загруженных регионах без стены ошибок разбора. Один нечитаемый файл — норма; сотни означают неверный формат.
- Проведите персонажа в известную стену в стартовой деревне. Блокировка движения — базовый тест.
- Встаньте за забором и притяните моба. Он должен обойти, а не стоять на месте и не бить вас через забор.
- Примените направленный скилл через стену по соклановцу. Он должен не взять цель или провалиться по линии видимости.
- Спрыгните с уступа, который раньше выбрасывал вас за карту. Вы должны приземлиться, а не провалиться.
В aCis стена, сквозь которую вы проходите при чистых логах, означает, что GeoData всё ещё 0. В L2J и L2JMobius тот же симптом означает, что регион не загрузился: сначала проверьте список регионов, а не PathFinding. Если стены блокируют, но мобы стоят за ними, коллизии включены, а обход — нет.
Ошибки, которые ломают geodata
- Смешение форматов. Загрузка
_conv.datв движок, ожидающий.l2j, или наоборот, без настройки формата. В aCis для этого естьGeoDataFormat: поставьтеL2J,L2OFFилиL2Dпо имеющимся файлам. - Тест через телепорт. GM-телепорт пропускает проверку коллизий, которую даёт ходьба. Всегда проверяйте пешком.
- Правка конфига при работающем сервере. Ничего не перечитывается, и следующий перезапуск «чинит по волшебству», что учит неверному выводу.
- Копирование папки geodata между хрониками. Загрузится, а потом двери, мосты и края рельефа окажутся неверными так, что заметят только игроки.
- Игнорирование RAM. Полная geodata плюс принудительная загрузка — реальные требования к памяти. Подбирайте VPS под это: см. требования к VPS и железу.
Что дальше
Geodata — первое, что делает сервер похожим на Lineage 2, а не на тестовый стенд. После неё настройте рейты и дроп под то, что рекламируете, и приводите игроков: бесплатное размещение в L2Calendar выводит сервер в страницы по хроникам и рейтам, где люди ищут — добавьте свой сервер. Если нужно место выше бесплатного списка, VIP-размещение — платный путь, а этот разбор объясняет, когда он окупается.
