Maxwell 53 Опубликовано 18 июля, 2018 Доброго времени суток. Часто появляются вопросы на "стёртую до бороды" тему геодаты,зачем она нужна,какая есть и куда пихать. Возьмём две основные *_conv.dat и *.l2j,первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата. Для чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее. По скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру. Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область: На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты