Перейти к содержанию
Авторизация  
Maxwell

Геодата и с чем её едят

Рекомендуемые сообщения

Доброго времени суток.

Часто появляются вопросы на "стёртую до бороды" тему геодаты,зачем она нужна,какая есть и куда пихать.
Возьмём две основные *_conv.dat и *.l2j,первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата.
Для чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее.
По скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру.
Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область:
faq7.ru/images/imagehost/a534289651c23ac822f07fc90f26159d.jpg

На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке MAPS и пустые весят от остальных одинаково.
Геодаты в шаре полно и она разного качества, подбирайте ту которая будет корректно работать на вашей сборке. Если в квадрате есть косяки, к примеру невидимые преграды,или не можете пройти в открытые двери или ворота,то это не причина менять его на другой,существует софт для редактирования гео и невидимую перегородку можно убрать, но это отдельная тема...
Работа геодаты зависит еще и от гео-движка сборки - неотъемлемой составной части ядра этой сборки,так что не путайтесь с определениями что бы других не путать,геодата и геодвиг разные вещи.
У разных команд делающие эмуляторы разного качества гео-движки поэтому не всякая гео подойдёт к сборкам каких либо команд на 100%, чей геодвиг качественней решайте сами,тестируйте, темы "что лучше" для флуда.

Что такое pathnode? Отличная штука, благодаря этой приблуде мобы у вас при агре не будут ломиться сквозь стены, они их будут оббегать как и сам персонаж, создаётся пачнод определённым софтом с квадрата геодаты и его качество зависит от этого квадрата.Расширение пачнода - *.pn.
Количество файлов пачнода должно быть равно количеству файлов геодаты.
Есть сборки на основе команды Rebellion (а точнее Fortress), такие как L2Dream, L2f ССР, Phoenix, L2Royal извиняюсь если кого забыл, у таких сборок есть возможность поставить геодвижёк на отдельную машину что бы разгрузить основной игровой сервер,но использовать не советую поскольку не доделаны, хотя возможно в платных геосервер уже реализован на 100%.
Таким сборкам пачнод не требуется, их геодвиг генерирует его в процессе работы,сомневаюсь что это хорошее решение,но и не плохо с другой стороны, кому как,по мне так геодвиг sf в полне нормальный.
Сборки sf,это L2jServer - первые кто написал ява эмулятор,также L2jFree, L2Emu,L2Ambrella и др. на их основе, так же можно причислить Balancer (Fortress с которого основался Rebellion),но ему пачнод уже не требовался. Был отрезок времени когда эти команды использовали внешний геосервер (кроме L2jServer), но позже от него похоже отказались.
Таким сборкам неоходима геодата + пачнод,для комфортной игры вашим клиентам.
Установка геодаты на сборки без пачнода (Rebelion):
Покажу на примере L2Dream.
Путь куда закинуть гео,сами файлы ( пути и папки могут отличаться, в зависимости от сборок) *.l2j:

C:\L2Dream\game\data\geodata



Не в "C:\L2Dream\geo\data\geodata"(это и есть внешний геосервер),а именно по тому пути что указал.
Настройка.
Идем по пути "C:\L2Dream\game\config",нам нужен geodata.ini или geodata.properties:
#================================================= ================================================== ====
# Даный файл является конфигуратором геодаты.
#
# Геодату можно отключить, запустить в классическом режиме на гейм сервере, а также запустить как выделеный сервер геодаты.
#
# На даный момент на сервере геодаты отсутсвует какая-либо авторизация(за ненадобностью).
# Если у вас мания взлома, то закрывайтесь на уровне операционной системы.
# Ну или просите прикрутить SSL.
#================================================= ================================================== ====

# Включает/отключает геодату и поиск пути.
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata.
# 0 = Геодата отключена.
# 1 = Геодата будет загружена в геймсервер.
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока.
GeoData = 0

# Хост для сервера геодаты.
# * Забиндит все интефейсы.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoServerHost = 127.0.0.1

# Куда будет пытатся коннектится клиент.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoClientTargetHost = 127.0.0.1

# Порт для геодаты.
# Сервер откроет на нем сокет.
# Клиент будет пытатся подключится к нему.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoPort = 9050

# Сглаживает путь.
# Стоит отключать только для дебага.
PathClean = True

# Обрабатывать ли двери в геодате
# Настройка влияет на ГеймСервер
AllowDoors = False

PathFindingBoost = True
PathFindArea = 250
Внимательно читаем,нам нужно это:
 

# Включает/отключает геодату и поиск пути.
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata.
# 0 = Геодата отключена.
# 1 = Геодата будет загружена в геймсервер.
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока.
GeoData = 0



В этом параметре меняем 0 на 1.
2 ставим в том случае если всё таки решили поставить геосервер,его настройки:
# Хост для сервера геодаты.
# * Забиндит все интефейсы.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoServerHost = 127.0.0.1

# Куда будет пытатся коннектится клиент.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoClientTargetHost = 127.0.0.1

# Порт для геодаты.
# Сервер откроет на нем сокет.
# Клиент будет пытатся подключится к нему.
# Игнорируется при GeoData = 0 или GeoData = 1
GeoPort = 9050
Здесь всё ясно,можете зайти в "C:\L2Dream\geo" и увеличить выделяемой оперативки на геосервер изменением значений,StartGeoServer.bat:
 

java -Xms512m -Xmx768m -cp l2dserver.jar l2d.game.geodata.network.geoserver.GeoServer



Двери,можете включить если уверены что они у вас работают,так как их "непробиваемость" не во всех геодвижках реализовано:
 

# Обрабатывать ли двери в геодате
# Настройка влияет на ГеймСервер
AllowDoors = True

Теперь sf,возьму как основу L2jServer,за всё время он не сильно изменился и не использовал геосервер.
Пути размещения файлов геодаты:

C:\L2jServer\gameserver\data\geodata



И патчнода:

C:\L2jServer\gameserver\data\pathnode



В папке в месте с геодатой необходим файл geo_index.txt, в папке с пачнодом pn_index.txt,их содержимое должно быть абсолютно идентичным:
 

16_10
16_12
16_18
16_19
16_20
16_21
16_24
16_25
17_10
17_11
17_15
17_16
17_17
17_19
17_20
17_21
17_22
17_23
17_24
17_25
18_10
18_11
18_14
18_15
18_16
18_19
18_20
18_21
18_22
18_23
18_24
18_25
19_10
19_11
19_13
19_14
19_15
19_16
19_17
19_18
1 9_19
19_20
19_21
19_22
19_23
19_24
19_25
19_26
20_10
20_11
20 _13
20_14
20_15
20_16
20_17
20_18
20_19
20_20
20_21
20_22
20_ 23
20_24
20_25
20_26
21_11
21_14
21_15
21_16
21_17
21_18
21_1 9
21_20
21_21
21_22
21_23
21_24
21_25
22_13
22_14
22_15
22_16
22_17
22_18
22_19
22_20
22_21
22_22
22_23
22_24
22_25
23_11
23_12
23_13
23_14
23_15
23_16
23_17
23_18
23_19
23_20
23_21
23_22
23_23
23_24
23_25
24_11
24_12
24_13
24_14
24_15
24_16
2 4_17
24_18
24_19
24_20
24_21
24_22
24_23
24_24
24_25
25_11
25 _12
25_14
25_15
25_16
25_17
25_18
25_19
25_20
25_21
25_23
26_ 11
26_12
26_14



В этих файлах прописаны загружаемые геосервером квадраты геодаты,если содержание geo_index.txt и pn_index.txt не совпадает то при загрузке геодаты может вылезти ошибка,просмотрев лог ошибки увидите какого файла геодаты или пачнода не хватает.
Настройка,находим по пути "C:\L2jServer\gameserver\config" General.properties,нам нужен следующий раздел:
#------------------------------------------------------------- --------------
# Geodata
# ----------------------------------------------------------------------- ----
# GeoData options:
# 0 = GeoData and PathFinding OFF (default)
# 1 = GeoData is used to check Line Of Sight (LOS) targeting and
# L2Playable movement. You need to download files for data/geodata folder.
# Monsters can pass walls but not aggro (no line of sight) through them.
# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode
# files if CellPathFinding not enabled) and all character moves go through
# geodata checks (if a mob passes a wall, pathfinding didn't find a route
# but we allow attack and returning home).
# Recommended server memory minimum 2 GB, rather 3 GB.
# Default: 0
GeoData = 0

# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least.
# If False, pathnode files are used. Uses a max number of nodes in calculation which can be adjusted in the algorithm if it needs to be faster.
# Default: False
CellPathFinding = False

# True = Loads GeoData buffer's content into physical memory.
# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.
# Default: True
ForceGeodata = True

# This setting controls Client <--> Server Player coordinates synchronization:
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata.
# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles.
# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).
# Server sends validation packet if client goes too far from server calculated coordinates.
# Default: -1
CoordSynchronize = -1
 

GeoData = 0



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

# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least.
# If False, pathnode files are used. Uses a max number of nodes in calculation which can be adjusted in the algorithm if it needs to be faster.
# Default: False
CellPathFinding = False



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

Не забывайте что если вы изменили конфиги при запущенном сервере,то они вступят в силу только после перезапуска сборки.
И строки начинающиеся с "#" никакого значения не имеют, это просто комментарий или один из неактивных вариантов конфигурации.

Автор мануала: Produm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...