Название: Геодата, что это и зачем. [Версия для печати] Автор: admin Время: 2024-9-17 19:42 Название: Геодата, что это и зачем. Хроники PreludeHarbingers of WarAge of SplendorRise of DarknessScions of DestinyOath of BloodInterludeThe 1st Throne: The KamaelThe 1st Throne: HellboundThe 2nd Throne: GraciaThe 2nd Throne: FreyaChaotic Throne: High FiveGoddess of Destruction AwakeningGoddess of Destruction HarmonyGoddess of Destruction TautiGoddess of Destruction Glory DaysGoddess of Destruction LindviorValliance / Epeisodion / RaidersErtheia / Dimensional StrangersInfinite OdysseyHeliosGrand CursadeSalvationFafurionShadow of the Kamael) ~4 y$ B0 m0 M4 f, F Сборка L2 Java & X! P: Z8 t+ E5 o# c7 @ 4 q, @+ ?4 F* M# C. `; I- z% b% F- z& s/ e @1 c
Доброго времени суток.; t1 e( j" j+ V" t) ]3 M
1 y8 d! `1 z6 E& x- V9 d: @
- n9 f1 J y1 K: X9 H
Часто появляются вопросы на "стёртую до бороды" тему геодаты, зачем она нужна, какая есть и куда пихать. Пример будет на хрониках Interlude:3 {6 t- O. N8 D5 A2 R* b
Возьмём две основные *_conv.dat и *.l2j, первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата. ! u& r0 g) K5 U% N! B* ^Для чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее.0 |4 H/ }0 }0 y& R0 f5 ]& i0 `
По скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру.4 f: J4 R$ h4 \- M% G% k, p
$ \, z! m2 i( t0 G% s( v
Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область:% e9 F4 X, k$ ?( c6 K! F. D
[attach]495[/attach] 5 @: j" z7 b5 h 5 Q2 @# R( q4 a$ ]# `На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке MAPS и пустые весят от остальных одинаково.! {6 [- z, u8 q/ a4 u
Геодаты в шаре полно и она разного качества, подбирайте ту которая будет корректно работать на вашей сборке. Если в квадрате есть косяки, к примеру невидимые преграды,или не можете пройти в открытые двери или ворота,то это не причина менять его на другой,существует софт для редактирования гео и невидимую перегородку можно убрать, но это отдельная тема... . n" Y0 ^& i( g" u+ @1 e( bРабота геодаты зависит еще и от гео-движка сборки - неотъемлемой составной части ядра этой сборки,так что не путайтесь с определениями что бы других не путать,геодата и геодвиг разные вещи. 2 q. g+ m! D5 T4 s: q7 BУ разных команд делающие эмуляторы разного качества гео-движки поэтому не всякая гео подойдёт к сборкам каких либо команд на 100%, чей геодвиг качественней решайте сами,тестируйте, темы "что лучше" для флуда.! X2 ] Z$ e6 ?! r+ Z$ K S
) C( k) ~1 K. U& d. Z
; L5 X5 P# V _4 t( M/ [4 \) nЧто такое pathnode? Отличная штука, благодаря этой приблуде мобы у вас при агре не будут ломиться сквозь стены, они их будут оббегать как и сам персонаж, создаётся пачнод определённым софтом с квадрата геодаты и его качество зависит от этого квадрата.Расширение пачнода - *.pn. ! O" w. l+ F6 f7 T. pКоличество файлов пачнода должно быть равно количеству файлов геодаты.+ R |9 Y. C8 _4 o
Есть сборки на основе команды Rebellion (а точнее Fortress), такие как L2Dream, L2f ССР, Phoenix, L2Royal извиняюсь если кого забыл, у таких сборок есть возможность поставить геодвижёк на отдельную машину что бы разгрузить основной игровой сервер,но использовать не советую поскольку не доделаны, хотя возможно в платных геосервер уже реализован на 100%.; J+ ]$ d( k) X5 i! N1 u* k
Таким сборкам пачнод не требуется, их геодвиг генерирует его в процессе работы,сомневаюсь что это хорошее решение,но и не плохо с другой стороны, кому как,по мне так геодвиг sf в полне нормальный. & l. g* M2 h, a7 e: M8 d' X" uСборки sf,это L2jServer - первые кто написал ява эмулятор,также L2jFree, L2Emu, L2Ambrella и др. на их основе, так же можно причислить Balancer (Fortress с которого основался Rebellion),но ему пачнод уже не требовался. Был отрезок времени когда эти команды использовали внешний геосервер (кроме L2jServer), но позже от него похоже отказались. 9 v6 [$ g4 b# b& q# X f2 a. qТаким сборкам неоходима геодата + пачнод,для комфортной игры вашим клиентам.& u; {& Y! i9 I& A2 ^
Установка геодаты на сборки без пачнода (Rebelion):$ r8 V8 v& s$ n7 E% f! `
Покажу на примере L2Dream.' ~+ |* E: o- M! }- w! s. y7 N
Путь куда закинуть гео,сами файлы ( пути и папки могут отличаться, в зависимости от сборок) *.l2j: 0 {) i* [" H+ q3 C: k' C# j' a# q9 A7 |: \! T$ M
8 W& O. a3 v& C9 L$ U; bC:\L2Dream\game\data\geodata 7 R" F1 H C2 p: a* r1 n2 B5 |/ P& w) ?
* T0 _6 _1 ^9 Z0 }: p' m7 g2 Q' Z0 c0 L, q
9 q3 s% S% q$ @/ ?: H/ p+ q/ b
Не в "C:\L2Dream\geo\data\geodata"(это и есть внешний геосервер),а именно по тому пути что указал.% R2 ~& }( `6 `; A( g
Настройка. 2 O c# E }' Z, ^. l3 X- M4 ^Идем по пути "C:\L2Dream\game\config",нам нужен geodata.ini или geodata.properties:/ F) I: p/ i7 M& D+ K( R
#================================================= ================================================== ==== 5 G, t- }# ], P/ y& Y, V0 U6 t7 ?9 m1 A. E# Даный файл является конфигуратором геодаты. ; c6 x3 o$ g/ }) ?#5 r8 K+ i( N F; R
# Геодату можно отключить, запустить в классическом режиме на гейм сервере, а также запустить как выделеный сервер геодаты./ G* ~7 q5 J; @4 {0 m8 V, H8 t O
# , n4 d# h$ S7 F7 f# На даный момент на сервере геодаты отсутсвует какая-либо авторизация(за ненадобностью). 4 {: p) k; M" C9 V( O" W9 g# Если у вас мания взлома, то закрывайтесь на уровне операционной системы. 3 N' S& L6 w$ ^! b$ E/ J3 y6 n: D8 ~( Y# Ну или просите прикрутить SSL. - w. ^$ v9 R! \#================================================= ================================================== ====4 ?$ N2 W+ N" t0 t& d+ e; N
2 p7 n7 B( F" a, {
3 I4 d/ g9 F/ M" x; ?
# Включает/отключает геодату и поиск пути.( Y4 n1 @) _0 b
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata.5 j. Z* c3 c0 o% h1 l
# 0 = Геодата отключена.+ S+ Y2 ]: d& P; D& d* K
# 1 = Геодата будет загружена в геймсервер." H5 i1 p- s6 d% z9 d6 F1 \9 C
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как' _7 ]& i1 j! \2 G' Z! _
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами3 V, C; _+ i/ l' A# v* O5 U: K7 C
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,- _+ I1 p" k' V6 F B8 b
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока. 6 ~8 ? M" Q7 V' _$ ]2 eGeoData = 0 7 `. A M. A1 A0 g! D7 X) y3 g% Y9 M7 @1 F3 m. w
& Z. N6 N2 g! s" a! x1 |
# Хост для сервера геодаты. 8 T# d _2 Q! R) T- L- I# * Забиндит все интефейсы.6 O7 i) J" _: S W/ H) A1 H
# Игнорируется при GeoData = 0 или GeoData = 18 k, L# [2 Y* b1 L
GeoServerHost = 127.0.0.14 C7 a. A; S, O7 C% s
* M. B- B6 W7 I 6 A: p ^: z: _: o2 d* c% a# Куда будет пытатся коннектится клиент.: O: S* ^! d3 ^6 O0 R q
# Игнорируется при GeoData = 0 или GeoData = 1 / h! [/ H, s$ g* uGeoClientTargetHost = 127.0.0.1 / G* g4 ?9 e8 x5 q' c8 G J! r& c2 J- _% ~% j. k
: a! C8 r0 g' n# Порт для геодаты.. N! s: n/ U3 @0 z
# Сервер откроет на нем сокет.5 J) q1 x! N J( y8 R% M8 b
# Клиент будет пытатся подключится к нему. y* ^3 Q& ?7 ~$ z! ]/ `: Y! H/ M
# Игнорируется при GeoData = 0 или GeoData = 1 8 o: l. U& e' vGeoPort = 90503 f* S; z( p. g( t9 @0 u
! e& k2 y: F9 e8 ]% u3 E* B 3 A. C# E- L, _" j! W# Сглаживает путь.+ r8 s& ?4 Y& U- `5 L. `: ~
# Стоит отключать только для дебага. 4 l3 t& b9 [3 y& P8 tPathClean = True6 O( W; n# ]) M# B" J0 ]( u
8 f7 R* u' ~/ ?* j
+ U; Q6 \5 O' X4 G4 W# Обрабатывать ли двери в геодате 0 Z- b; q' q/ @# Настройка влияет на ГеймСервер - x, O) w. c+ {8 K% p! z' ?- NAllowDoors = False6 w8 s" ?, f7 x& r' `; W; F
4 t8 s- g4 H, ], I5 p
3 m0 ]/ F3 Q3 h. `
PathFindingBoost = True / A$ U* r3 \+ ]$ }. APathFindArea = 250 1 S( S" u2 H; x; q5 l U9 v5 R: S X7 yВнимательно читаем,нам нужно это: : m! O- _4 W# t" J9 [ ( a& Q( i+ \3 d) n9 }" I" }/ v' o ' d' V5 B- S u 0 @! m' H. M; V* V5 e, \3 K' A $ |2 \3 ?* K3 }$ |# Включает/отключает геодату и поиск пути.( z1 E+ k& c" y& c& Z
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata. % y S" _2 V" c2 Z1 p# 0 = Геодата отключена.) \, y0 L1 V t4 R
# 1 = Геодата будет загружена в геймсервер.% k/ R: ]2 f. H2 n9 I1 t
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как ! }: Q( t8 Z3 j2 F; @8 I( ]# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами- L1 b' R6 K) v& C
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока, 9 s0 f, u7 l6 U" _# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока.- X, Z- R1 C1 Q7 T$ z
GeoData = 0& E0 M( s) R1 ~; t' _
; @. t4 n& d6 A! m# q6 y
2 N3 f' n/ ?7 N5 m0 w, [
9 V% ?& Q6 I- w4 D+ p* d
$ p- Z7 v% _$ q9 ]. n% u
В этом параметре меняем 0 на 1., p2 _" Y9 q+ y: r
2 ставим в том случае если всё таки решили поставить геосервер,его настройки: ( t! t( m% h% L$ O+ K! ?1 C5 J9 R# Хост для сервера геодаты., ?5 Y+ K5 y" B F/ T
# * Забиндит все интефейсы.7 k2 c! b4 m) q% ?9 n
# Игнорируется при GeoData = 0 или GeoData = 1. e" v5 j7 s2 S2 e) t
GeoServerHost = 127.0.0.1 0 }2 [# i- f8 j- o: ? * w2 A, d) m6 J9 G7 T2 ~+ i. M8 a* {% t! w& I
# Куда будет пытатся коннектится клиент.) i# o' Q; i- R u8 G* i
# Игнорируется при GeoData = 0 или GeoData = 1 f# E& i: B3 L W' m- |$ a7 c
GeoClientTargetHost = 127.0.0.1 , T! n* p# B2 D( k3 {& I% C6 f, Y3 A# X6 o
) i+ B* O% l4 g7 a
# Порт для геодаты.0 O% v* w$ `) E+ l3 o! e
# Сервер откроет на нем сокет. $ b5 f2 y, Y9 D$ p% F8 k+ J# Клиент будет пытатся подключится к нему.5 x$ J; q4 w# H# c
# Игнорируется при GeoData = 0 или GeoData = 1: k" |% u6 c0 m1 z6 Q1 ~$ ?
GeoPort = 9050: r2 u8 V4 `4 Q
Здесь всё ясно,можете зайти в "C:\L2Dream\geo" и увеличить выделяемой оперативки на геосервер изменением значений,StartGeoServer.bat: . Q( G5 L6 L& Z8 f2 ^) G( {; g7 a8 E, n9 E1 Y
- Q) `5 D3 v0 d2 ?3 v. f7 L % Z0 Y8 l7 e2 |/ C8 L# J' [/ H3 v) g) M+ Z
java -Xms512m -Xmx768m -cp l2dserver.jar l2d.game.geodata.network.geoserver.GeoServer : Z( [$ |0 z4 k. | ]% C4 G" d% ^' a$ P0 u# L' F; N4 J6 a
6 z, e! n' l+ \7 ^& g
; C* Z3 `' a. G4 f( Z: H0 {% t+ R- s8 l7 t f
Двери,можете включить если уверены что они у вас работают,так как их "непробиваемость" не во всех геодвижках реализовано:% e/ E; Z* @! j
! ?) `. y A- F8 h8 y* `! q+ n
I5 G2 ^2 A8 |( E9 O
' D4 s, B) n Q; b9 e# [- T
0 y% q9 ~' \6 C) E. R4 U# Обрабатывать ли двери в геодате 9 v- _# L* Z, G7 |; Y7 s( U# Настройка влияет на ГеймСервер ( \9 @( V: G. y% b9 n0 S: ZAllowDoors = True: p& a4 X2 ]2 m* t
Теперь sf,возьму как основу L2jServer,за всё время он не сильно изменился и не использовал геосервер.. |% l3 a$ l3 v' W: W) ^
Пути размещения файлов геодаты:5 r; i+ l% i1 O5 G; k0 o; S& u) S
! D K) O' f K 5 W" w# D. k* S% D- `, YC:\L2jServer\gameserver\data\geodata( p% T$ S6 [. z, q$ }# ?
0 m" i( @; C/ [( { H1 n+ G
$ R5 Y7 R* X; n. M7 k# K! g* a a" d5 u* ^/ }; z
0 ~- }& }5 m/ u [% s" }9 f- s( g
И патчнода: - R6 h- Z0 B: O) Y9 o; z3 h$ {- ? ( O5 w& v3 e+ L6 E5 } 1 \& G, \& N' U& l+ sC:\L2jServer\gameserver\data\pathnode5 ^. I' G; M7 {( v& A; Y' v
- N8 C& X( P: W! e f1 R2 Y" D
7 ]: S' }' r6 v. ]0 m , O0 W/ Q2 {+ e' Z E3 g4 y; K- w" SВ этих файлах прописаны загружаемые геосервером квадраты геодаты,если содержание geo_index.txt и pn_index.txt не совпадает то при загрузке геодаты может вылезти ошибка,просмотрев лог ошибки увидите какого файла геодаты или пачнода не хватает.7 s# N8 J4 u o# y. D! `1 A: x. z; a
Настройка,находим по пути "C:\L2jServer\gameserver\config" General.properties,нам нужен следующий раздел:7 m. m' B# E, q6 ^) @
#------------------------------------------------------------- -------------- 8 U1 I1 @& `$ v# Geodata # w/ ^. P0 ~6 _, S) M9 j# r+ }. G# ----------------------------------------------------------------------- ----% R) h' P0 d% ?5 o+ {+ D8 ~
# GeoData options:/ `0 q" s8 q, _, ]* g. M
# 0 = GeoData and PathFinding OFF (default) # `6 c" j# h( ]# 1 = GeoData is used to check Line Of Sight (LOS) targeting and4 x! _1 ~5 O; C4 F- q1 d9 |% t
# L2Playable movement. You need to download files for data/geodata folder.% b% V/ V. B2 Q, y6 f" ]8 \
# Monsters can pass walls but not aggro (no line of sight) through them. ) v! c& i+ G6 w, j( m8 g# R# ~+ \# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode 5 A) h6 k6 L$ q; ?& [+ a# files if CellPathFinding not enabled) and all character moves go through5 t+ F# \* {% ]# i1 s
# geodata checks (if a mob passes a wall, pathfinding didn't find a route0 V# o/ Q* z6 o, f' n; _
# but we allow attack and returning home). ; p5 L# l6 w$ D% ?$ e6 X# Recommended server memory minimum 2 GB, rather 3 GB. 5 q: u' K7 x+ L, Z3 W# Default: 0 ) R" w, W6 D; B( zGeoData = 0 , b( u+ A% f- u; t: w, ~9 J - s, c9 v0 f' z* p6 B1 V) P6 W8 }. N% |5 C' X
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least. |# \5 P$ P. l6 ~
# 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. 5 \0 t2 t0 P# `$ P- z& n+ f5 m1 o# f# Default: False& i1 b3 |5 p, T, M. P# n
CellPathFinding = False " c) n5 N/ O: r# J5 M* m2 W# {" i# M1 g
; |; s6 \; }6 S$ f: z( }, s1 L# True = Loads GeoData buffer's content into physical memory. : f7 F* P4 l( e# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory. 9 ]5 u% |" Z+ y9 V6 M# Default: True + X" ~3 ~; C3 b! S B4 ~ForceGeodata = True" C* i P& U" @2 y; a+ B
) m' j3 L9 p- H: Z- H
3 d" a6 m5 K1 Y0 F1 g5 y0 K
# This setting controls Client <--> Server Player coordinates synchronization:8 a# U- }5 l2 | e C6 y. G1 `
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata. ; X" @8 y3 K8 m; w# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles. 8 q; l" O6 _0 I1 Z( A# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1)., H- _& M; p/ t4 I
# Server sends validation packet if client goes too far from server calculated coordinates.1 D) H" y1 h- ~4 y2 U! C8 X( A
# Default: -1 0 u- k# J5 [2 V5 _# A- {CoordSynchronize = -1 ( I$ Z ~7 z7 c# b0 s$ I* k* @. @" N/ B6 i8 h8 x
: g$ h" J) _) K6 H: e7 d) L! T% e
5 T2 z, u1 i0 f+ d, U$ `9 _* A- F" J6 D4 q
GeoData = 0 # Y" F" M* {- R8 D: l * \3 [& G5 K# `. Y1 ? ' G8 B; d# j* c) a4 k* j $ x; Q. P9 o o" Z5 f* Q9 F , P6 h, ~1 r5 g* B; a! wСтавим 1 если нас только геодата,пачнод отсутствует.В этом случае мы получаем только то что агрессивные мобы не будут на нас кидаться,персы утыкаясь в стену не будут буксовать,а просто остановятся,но мобы если вы завернули за угол будут вас всё равно "видеть" и ломиться к вам через стену. + `. N6 s% W; b8 j% ~ KСтавим 2 если пачнод присутствует, так же включаем эту настройку:8 a: p9 [1 R# F- g: ?
% b; Z0 M6 J8 O* |
% l, x4 Q& d* ?
, A0 W/ F- l' u9 ~2 u/ w+ G* [3 F' t4 o$ K) U% Q
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least., O' _5 M- M9 V% H `$ z. c
# 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. / D9 N4 G+ c+ Y/ P' ~4 s# Default: False, J& w1 i' \! R. U' I+ ^9 @3 S
CellPathFinding = False r! o. d5 o0 B0 S" j! ?
, n$ \* d8 d" Y- _* H
6 v: J* X2 Z9 x5 o1 l; R, }" t
& c' p8 ?% x U$ x1 \+ b' X3 n& ?/ M0 m, R6 B2 K" k! n5 [
Ставим True если хотим более сглаженную работу пачнода,но нагрузка на сервер немного возрастёт,если нет то ничего не меняем.# `5 ] k$ ^: G7 ~1 `4 ~
Пожалуй всё подробно написал, спецы дополняем если что то не учел. 6 F; J3 t& E4 h9 {# _* X: ^ 9 X' G7 h' t' d3 l) N* S( A# i) f( O: f1 e: P; U& B! |% i
Не забывайте что если вы изменили конфиги при запущенном сервере,то они вступят в силу только после перезапуска сборки.4 m# {) k+ ^2 @
! Z2 C* G+ ?9 C, M% `И строки начинающиеся с "#" никакого значения не имеют, это просто комментарий или один из неактивных вариантов конфигурации. o; n) c8 P+ ?0 y: [" Z* ~- V1 c
Добро пожаловать artace.ru - творческий сектор (https://artace.ru/)