Перейти к содержанию

Справка

Геодата и патчноды

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

Что такое геодата

Геометрия мира — текстуры, скалы, здания — живёт в клиенте. Серверу она в таком виде ни к чему: ему нужно уметь быстро отвечать на два вопроса. Можно ли встать в эту точку и видно ли из точки A точку B.

Геодата — это и есть ответы, посчитанные заранее: карта проходимости и высот, разбитая на мелкую сетку. Для каждой клетки известна высота поверхности, можно ли по ней идти и что мешает по сторонам. Поэтому проверка «прошёл или нет» на сервере стоит почти ничего — она сводится к чтению из таблицы.

Файлы нарезаны по регионам карты и названы по координатам региона — отсюда имена вида 22_22, которые вы увидите в каталоге геодаты. Весь мир — набор таких квадратов, и отсутствие одного означает дырку только в его границах.

Что происходит без неё

Сервер запустится. Мир будет выглядеть нормально — геометрию ведь рисует клиент. Ломается всё, что требует знания о препятствиях:

  • Выстрелы и навыки проходят через стены. Моб за скалой бьёт вас, вы бьёте его.
  • Мобы идут сквозь текстуры. Не вокруг препятствия, а прямо через него.
  • Персонаж ходит по воздуху или проваливается. Высота считается неоткуда.
  • Телепорты и возрождение ставят в неположенное место. Иногда внутрь скалы.
  • Осады превращаются в фарс. Стены замка перестают быть стенами.

Диагностический признак: если «баг» касается только взаимодействия через препятствие, а в открытом поле всё нормально — дело почти наверняка в геодате, а не в сборке. Проверяется за минуту: встаньте за стеной и попробуйте ударить то, что за ней.

Патчноды — это другое

Геодата отвечает на вопрос «можно ли сюда встать». Она не отвечает на вопрос «как дойти отсюда туда, если напрямую нельзя». Для второго нужны патчноды — заранее расставленная сеть точек с известными связями между ними, по которой NPC строит маршрут.

Отличить одну проблему от другой просто. Моб, который ломится в стену вместо того чтобы её обойти, — это патчноды. Моб, который стену не замечает вовсе, — это геодата.

Патчноды нужны не всем. Серверу с высокими рейтами, где мобы живут по три секунды, их отсутствие почти незаметно; серверу с низкими рейтами и долгими боями — наоборот.

Откуда её берут

Геодата не входит в комплект сборки и не лежит в клиенте в готовом виде — её конвертируют. Отсюда слово conv в именах файлов, которое вы встретите в любом архиве по теме: это результат конвертации, а не оригинал. В архиве самого l2server.org такие наборы подписаны, например, как «GeoData 12_24 conv for Gracia Final» — то есть сразу с указанием хроники.

И это главное, что нужно знать при подборе: геодата привязана к хронике. Карта мира между версиями менялась, и набор от Interlude в High Five даст расхождения между тем, что видит игрок, и тем, что знает сервер. Про хроники и их номера.

Второе: формат файлов у форков L2J разный, и набор, собранный под один эмулятор, другой может не прочитать. Конкретные расширения и имена каталогов мы здесь не перечисляем — у форков они расходятся, и единственный надёжный источник этого — документация вашей сборки.

Как проверить, что всё встало

  1. Прочитать лог старта игрового сервера. Загрузка геодаты — отдельная строка с числом загруженных регионов. Ноль регионов означает, что сервер её не нашёл, и это самая частая причина «не работает».
  2. Проверить взаимодействие через стену. Встать за препятствие и попробовать ударить цель с другой стороны.
  3. Пройтись по рельефу. Подъёмы, лестницы, вода. Персонаж должен идти по поверхности, а не сквозь неё.
  4. Спавнить моба и отойти за угол. Он должен потерять вас, а не стрелять сквозь стену.
  5. Посмотреть расход памяти до и после. Геодата занимает её ощутимо, и если после установки расход не вырос — она не загрузилась.

Дальше по разделу