Название: Геодата, что это и зачем. [Версия для печати] Автор: 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 3 o" B) ^' b; aСборка L2 Java ; [& g0 }: B% I1 y% a, Q9 k1 v' I+ P) v7 K
* n& W+ l, Q# R; C2 Z) B: n5 QДоброго времени суток. ( M D; _. B9 a- j: p! _! q " b! |$ B: A* \! U9 m% s4 j; e6 s ) M, ? ^* [& L6 l# T* _: o o, D$ _Часто появляются вопросы на "стёртую до бороды" тему геодаты, зачем она нужна, какая есть и куда пихать. Пример будет на хрониках Interlude:# Q% a5 D+ C1 ?% }
Возьмём две основные *_conv.dat и *.l2j, первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата. 2 T: f: ~% P3 I2 WДля чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее. 1 I z4 K% d& r" v! uПо скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру.9 D3 T( M/ x+ I! O4 x. Q
( M; L7 e4 v- U% H
Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область:. Z" ^, |; \+ e9 C# |6 B
[attach]495[/attach]; s1 x! d- ~3 A: G3 [ e5 b" c1 u
, Q; G: R7 R) r
На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке MAPS и пустые весят от остальных одинаково.8 H. W/ S( x9 \5 a2 m8 y g: X' L
Геодаты в шаре полно и она разного качества, подбирайте ту которая будет корректно работать на вашей сборке. Если в квадрате есть косяки, к примеру невидимые преграды,или не можете пройти в открытые двери или ворота,то это не причина менять его на другой,существует софт для редактирования гео и невидимую перегородку можно убрать, но это отдельная тема... $ _5 k. ?$ I9 m7 y1 N9 {( R# x$ d. rРабота геодаты зависит еще и от гео-движка сборки - неотъемлемой составной части ядра этой сборки,так что не путайтесь с определениями что бы других не путать,геодата и геодвиг разные вещи. 0 V5 ^! N/ e* X0 P" DУ разных команд делающие эмуляторы разного качества гео-движки поэтому не всякая гео подойдёт к сборкам каких либо команд на 100%, чей геодвиг качественней решайте сами,тестируйте, темы "что лучше" для флуда.) i" H4 ~2 A' E% B+ I
F. G) @& d% z* u {( B$ S2 Z. ~
; I2 P) ?) F" q! L9 D8 W& Z
Что такое pathnode? Отличная штука, благодаря этой приблуде мобы у вас при агре не будут ломиться сквозь стены, они их будут оббегать как и сам персонаж, создаётся пачнод определённым софтом с квадрата геодаты и его качество зависит от этого квадрата.Расширение пачнода - *.pn. : N+ V- r. k4 T/ u$ {1 RКоличество файлов пачнода должно быть равно количеству файлов геодаты.5 L6 n. J, n- Z. o7 c( R
Есть сборки на основе команды Rebellion (а точнее Fortress), такие как L2Dream, L2f ССР, Phoenix, L2Royal извиняюсь если кого забыл, у таких сборок есть возможность поставить геодвижёк на отдельную машину что бы разгрузить основной игровой сервер,но использовать не советую поскольку не доделаны, хотя возможно в платных геосервер уже реализован на 100%. : s, |+ d/ U6 b/ jТаким сборкам пачнод не требуется, их геодвиг генерирует его в процессе работы,сомневаюсь что это хорошее решение,но и не плохо с другой стороны, кому как,по мне так геодвиг sf в полне нормальный.& r* B6 I3 A; f; t
Сборки sf,это L2jServer - первые кто написал ява эмулятор,также L2jFree, L2Emu, L2Ambrella и др. на их основе, так же можно причислить Balancer (Fortress с которого основался Rebellion),но ему пачнод уже не требовался. Был отрезок времени когда эти команды использовали внешний геосервер (кроме L2jServer), но позже от него похоже отказались. " B8 e4 ]. L- n' D4 d" hТаким сборкам неоходима геодата + пачнод,для комфортной игры вашим клиентам.2 E) {0 ]+ Y% q. K9 p
Установка геодаты на сборки без пачнода (Rebelion):( B, p& R0 U% l7 n( M* d
Покажу на примере L2Dream. ) e; |" D/ R/ a# t' p5 }Путь куда закинуть гео,сами файлы ( пути и папки могут отличаться, в зависимости от сборок) *.l2j: 7 w ]- I' N2 M# U0 W$ {4 k* }3 H7 I7 F0 N2 ~, [' p! r' U
5 v$ H* a* ]3 V) [( M+ _$ h, O
C:\L2Dream\game\data\geodata 1 t) x) Q4 D. \ c1 h 6 p; o {: ~4 R. p; } ) {( P: p+ O, `! T: v, e3 t' o: a% u Q5 T2 F5 z
! k; S0 T) @, m9 LНе в "C:\L2Dream\geo\data\geodata"(это и есть внешний геосервер),а именно по тому пути что указал.: }9 S6 F2 x4 \, P/ i7 z: f2 q6 J
Настройка. $ X6 _( N' B$ C0 S/ x2 PИдем по пути "C:\L2Dream\game\config",нам нужен geodata.ini или geodata.properties: 8 U- C. [- g1 }: ^+ x# u0 `#================================================= ================================================== ==== 7 V) V& o- e3 g3 f% h/ y# Даный файл является конфигуратором геодаты. : A( @( j$ Q* F# F2 g8 I6 q& A# 9 J1 S7 V2 e7 f& l# Геодату можно отключить, запустить в классическом режиме на гейм сервере, а также запустить как выделеный сервер геодаты. Z- X' z1 ?! H0 n( C/ ?#; E" ]" ~- {0 A4 W9 J
# На даный момент на сервере геодаты отсутсвует какая-либо авторизация(за ненадобностью).2 x2 p P! g5 U ]- S* ^6 p7 K: g9 y
# Если у вас мания взлома, то закрывайтесь на уровне операционной системы. " A( f( E7 E0 C* f# Q+ w# Ну или просите прикрутить SSL. 3 @" }: o( k; C1 d3 v; R* z#================================================= ================================================== ====$ _/ R. R5 p( W& q2 ~) h2 I- |
2 x+ b# ]2 R6 u8 d+ M
) O* c- l" m; }. y4 V3 ~" L6 _7 K
# Включает/отключает геодату и поиск пути.6 G' T* ~9 N/ K
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata. 2 g! c# [( g- N g; ?6 m t# 0 = Геодата отключена./ U O1 l' K: F$ q! r! J% M
# 1 = Геодата будет загружена в геймсервер.# p9 ]$ r: l' h4 C+ g/ B% E
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как 9 @/ ~6 q9 v9 r4 ?9 M$ c# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами6 i8 h4 C3 R7 t( F) j9 t
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,- h6 x6 x7 }5 ?$ z0 R- }" v
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока. $ E+ R7 ^. F) _* b9 _. rGeoData = 0 ) [7 [' T2 A. o, r7 o* j ; h& b$ z' c: S9 @* c: ~3 g/ G3 h
# Хост для сервера геодаты., v/ k% A" y9 J0 G2 Y
# * Забиндит все интефейсы./ F9 ]/ I! L/ _+ |/ e
# Игнорируется при GeoData = 0 или GeoData = 1 # q/ E9 G" U/ Q- c; \) V! bGeoServerHost = 127.0.0.1 2 l; A% c0 d( Q ]: o1 \' ~8 ~' |8 h- s, x6 q- \! e, T7 `! e
8 W2 ^( z2 y2 O7 S; _6 |5 B
# Куда будет пытатся коннектится клиент.+ L( O4 q0 @% ^0 m6 |+ }7 V9 e
# Игнорируется при GeoData = 0 или GeoData = 11 a" \7 O& V" ? Z9 H7 `
GeoClientTargetHost = 127.0.0.1, n$ F4 q' }- D3 x8 }$ \: C- s! @
7 t6 `) D, @$ U6 \* u: C
/ N0 E% f" J4 w6 v* [# Порт для геодаты. 9 L3 U; J1 N8 t1 J6 X0 b" r# Сервер откроет на нем сокет.- t% t2 l7 M9 [4 ^9 p q
# Клиент будет пытатся подключится к нему. 3 k- c5 Y! l) Z9 `$ t* a; W# Игнорируется при GeoData = 0 или GeoData = 1 $ s1 u5 |% k0 C& T9 YGeoPort = 9050 , ~3 [+ ]1 L' f3 }% c- L3 b W5 ` 3 r' ?' L' e' W0 n* v$ D# h" V9 T O' Z+ ^; D( C
# Сглаживает путь.7 {0 V8 v+ X( s5 s
# Стоит отключать только для дебага.% Y% w3 ]* U: V, U. I% c! T9 h
PathClean = True 1 ^ V. m+ Z/ O3 l' @# @9 T1 q% I9 N) x: Z
* F/ f. [" [% P
# Обрабатывать ли двери в геодате1 ^" M# [8 H% W: q( g2 q
# Настройка влияет на ГеймСервер 8 h! O: ~+ c( M* h/ H6 tAllowDoors = False" y8 R) e. p6 ~+ d
! }2 M0 {* n! ]6 b d( h! d$ k3 {7 p6 w2 y; o! {/ j0 Y: C4 e7 r
PathFindingBoost = True! M. c1 A: w; ~: r4 Z: O" k& A4 ?
PathFindArea = 2503 P; g- O {- b% o- f8 \: j
Внимательно читаем,нам нужно это: * v+ w! t. y7 g' L: p/ z 6 [2 I: c1 P5 r0 @. T+ V. F! v6 A5 B/ J4 {5 _- u" y" Z) a
$ |& a. z' g; u5 s) T . [9 z y( h# K3 l8 x# Включает/отключает геодату и поиск пути.7 Z- V6 B9 U/ h
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata.( p) g1 j0 P# F& {$ A
# 0 = Геодата отключена. * J: C1 |' R; g. t, Y S5 I# 1 = Геодата будет загружена в геймсервер., F c4 z& H; x9 t& d2 ]
# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как) T. Z# X% z* c% P" ]$ I! u! r% _
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами* N( K* S7 M( {
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,# ^( |3 p9 r( b
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока.$ h& q, Z5 v+ U
GeoData = 0 + r& c) _( h9 P: n+ M" t/ E7 v" h 0 o( u1 ~) G8 k: T+ R. \4 f% ~$ U 3 D4 V2 Q. s# R: S4 V8 R( R7 M. |! H1 C4 B: e
% l% n" i" e9 H0 a/ x K& {
В этом параметре меняем 0 на 1. 9 |& C8 l( ~6 q" d2 ставим в том случае если всё таки решили поставить геосервер,его настройки: + E2 p7 q8 j- }# Хост для сервера геодаты.9 \6 U4 A; Y8 z! }1 D% O# \$ p
# * Забиндит все интефейсы. ) R" W6 Z, b6 U: p# Игнорируется при GeoData = 0 или GeoData = 1! R* [& W! d2 S3 F
GeoServerHost = 127.0.0.1 : O% L0 K) h7 p# w, ?1 }1 j6 E: [/ K+ V% Z) ~2 O7 B
% }: [- P' b* }% |1 ?" f! ]
# Куда будет пытатся коннектится клиент.# ~; T3 ?; k5 f5 U. p/ h0 B
# Игнорируется при GeoData = 0 или GeoData = 10 _: A! B; B2 c' B
GeoClientTargetHost = 127.0.0.1; k4 S2 s/ F( t: h7 j9 v0 G% t( Q$ H
6 A* G$ s/ g. m' t
0 {! E1 k3 s* g+ k& @8 c
# Порт для геодаты. 5 P- P, n0 n+ x2 l" ~# Сервер откроет на нем сокет. v1 Y; ]- i4 c. o; \
# Клиент будет пытатся подключится к нему.$ F( B+ S/ B. B0 V* n5 S0 R
# Игнорируется при GeoData = 0 или GeoData = 1' I0 V/ D* j% F, c
GeoPort = 9050) E! t* F& R& u: { R- V
Здесь всё ясно,можете зайти в "C:\L2Dream\geo" и увеличить выделяемой оперативки на геосервер изменением значений,StartGeoServer.bat:. L1 ?) i ~% m1 c* ^! g$ j
# y$ f4 k; B3 \6 X
0 E1 }( m; h" S# M$ e$ E' F 0 Q6 c' B% G7 {* t: Y: d7 Q8 p6 E. ^
java -Xms512m -Xmx768m -cp l2dserver.jar l2d.game.geodata.network.geoserver.GeoServer0 x/ ?3 U- a A; }1 X, p
8 P( c% S' @8 l. s. k8 F- H . y" }3 l1 a$ L; ~! { % X" b! D1 g( J' B $ @. @. ]/ C7 J4 @1 hДвери,можете включить если уверены что они у вас работают,так как их "непробиваемость" не во всех геодвижках реализовано:! A* S9 Y9 G+ p( o7 t/ _( j
' q/ P6 U( h6 e: x" e. S& L ; p( C+ O7 a f( q0 p; T& C7 s- m. S( j! ~% @7 B G
9 h: @" S9 |' ?2 O# Обрабатывать ли двери в геодате 3 s" z4 L0 C0 n; v# [. J3 [: w# Настройка влияет на ГеймСервер ; W8 ~' m7 D9 F: MAllowDoors = True+ _4 D+ p& Z+ ]1 @8 i
Теперь sf,возьму как основу L2jServer,за всё время он не сильно изменился и не использовал геосервер. 7 Q. L- p$ p1 h* |7 @+ [' FПути размещения файлов геодаты: 2 _4 S; u- O7 r e: ]* c+ D. X" B- U. I) s
9 z0 w$ |4 p! J! {6 yИ патчнода:- W z* M3 A3 f: k
7 u5 g( v, ~0 M" G2 S9 H: {& P
9 N( @' g# z% V: S- h: u* a' qC:\L2jServer\gameserver\data\pathnode " b0 G. ^# ]3 P& p + {1 K- z8 f, d5 a, A) w( x V+ @2 G [2 D; j # i3 L6 C0 y* y# s7 R4 a d1 `* n5 L7 x+ m
В папке в месте с геодатой необходим файл geo_index.txt, в папке с пачнодом pn_index.txt,их содержимое должно быть абсолютно идентичным:0 D' c a/ e2 M" g4 I. C
/ j0 g" t, a( X6 v / ], ?! w! q( O9 } 9 R' b- _# `& ?# X1 y) j" X2 x " Q" }' b- L* `/ M% EВ этих файлах прописаны загружаемые геосервером квадраты геодаты,если содержание geo_index.txt и pn_index.txt не совпадает то при загрузке геодаты может вылезти ошибка,просмотрев лог ошибки увидите какого файла геодаты или пачнода не хватает. 0 W1 C4 P/ J. d @Настройка,находим по пути "C:\L2jServer\gameserver\config" General.properties,нам нужен следующий раздел: ' f- m+ W8 R, [! t# H9 w#------------------------------------------------------------- --------------& F& z( `' Q" `' h+ I
# Geodata- `* ~ F8 f; p6 {9 a( c
# ----------------------------------------------------------------------- ---- " I2 E! P" e9 G# v/ Q/ I M7 t$ t# GeoData options:& q4 V q; K @& H, k% s7 h0 z
# 0 = GeoData and PathFinding OFF (default) 7 O' q+ H( n0 N8 R) z: E3 f$ t. i! S# 1 = GeoData is used to check Line Of Sight (LOS) targeting and/ s" }; D- }6 f- }4 Z+ i3 P ?3 j" z
# L2Playable movement. You need to download files for data/geodata folder.1 G* m7 B. Q& S: S5 Y8 D
# Monsters can pass walls but not aggro (no line of sight) through them. * I3 i/ f# h, u+ {1 Q3 K1 o/ Z# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode 5 ]' P6 `: W5 Z8 ?, s) S+ \# files if CellPathFinding not enabled) and all character moves go through N9 a4 r* n+ v" m4 k% z# geodata checks (if a mob passes a wall, pathfinding didn't find a route6 A# X+ E- V1 d3 T* _9 S/ e
# but we allow attack and returning home). + h3 ?9 D0 a2 c$ R# Recommended server memory minimum 2 GB, rather 3 GB. ' }4 l+ g4 p+ j: M" E3 a# Default: 03 O& R' g4 T' o6 z; q0 ]
GeoData = 0. ` a( J, u0 G" H4 {* J# l2 X [
* F/ G4 N- h+ f
! R( Y0 M/ ?" `# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least.9 _% E. q0 a! K" m5 J5 j! x
# 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.( w+ x. J6 Q' q4 V9 {
# Default: False1 U* h6 D" P% K& M
CellPathFinding = False8 S4 f" H0 L# F' Q6 T8 Z) ~. B' q
) m4 M# u, n6 g6 |( w9 } * s4 e; w: X" |" p" M; ?: |5 z- _# True = Loads GeoData buffer's content into physical memory. 1 ~# L3 ] Z" z; K: ]# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.( t( |2 d1 X& E( G0 D
# Default: True , d* h" l9 b! fForceGeodata = True 4 w- @( [& x/ i( c- ^- a+ _ ' M0 {4 ^# A0 w2 b4 u9 E R: Q }$ q; M8 ?( o8 X* t# This setting controls Client <--> Server Player coordinates synchronization: 9 t" f+ @4 @/ I$ T# -1 - Will synchronize only Z from Client --> Server. Default when no geodata. : o5 q6 X3 e: v5 L+ R# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles.7 O- |$ B9 R+ E2 R5 P
# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).0 o- N0 O1 M& j! e4 Q) L( |: i
# Server sends validation packet if client goes too far from server calculated coordinates.$ d9 J/ M" F& a4 ?5 r
# Default: -1 O# g5 _0 ~- E3 J9 E
CoordSynchronize = -1! p" Y; y% J- w4 d% ^
' c. O3 W3 X% `$ w" ]
g/ {5 Q5 Z% u" c 6 h) `2 ^$ J1 M: ~0 g 0 B p: W2 {% r& w4 nGeoData = 0 ! ~. f/ P; r6 M( h( E% x $ p! a4 z* ]' b ' d* C- W3 F+ w h4 V3 B. o9 T$ _% S7 c$ ^" e7 I) W' }6 U
Ставим 1 если нас только геодата,пачнод отсутствует.В этом случае мы получаем только то что агрессивные мобы не будут на нас кидаться,персы утыкаясь в стену не будут буксовать,а просто остановятся,но мобы если вы завернули за угол будут вас всё равно "видеть" и ломиться к вам через стену. , j, e |1 \8 t8 X& S6 K. O% m+ \+ }. NСтавим 2 если пачнод присутствует, так же включаем эту настройку: # b: M. `8 ~7 `! `! g1 ?% K5 V) {# t
+ ?/ s) `- @$ V! N, F9 \ b6 ^7 s4 s% v, @9 Y: A % x& ^3 w& |7 w9 b8 ^# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least. # k( J7 J& V! h9 N2 B. I8 T8 p( z# 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. & c* L, U7 p- T3 J# Default: False ) ~0 B: k! V5 w/ g, `4 ?CellPathFinding = False - F: Y0 g1 G9 {8 K7 `$ n 2 j( U8 T) s* j/ |$ E' A0 r1 u! ^+ A$ W0 x# Y: `: z
( j" G% ]6 ^4 p" S% j# y8 o1 v
+ t$ ^# P& a, Q0 m: {Ставим True если хотим более сглаженную работу пачнода,но нагрузка на сервер немного возрастёт,если нет то ничего не меняем. ) |7 a& s' l) e; _% N; [+ |Пожалуй всё подробно написал, спецы дополняем если что то не учел. " X) d4 Y7 z: _/ t( y1 L- e! n( [4 W0 A3 `% J; e5 o" P; ?
9 f( f, j. h- L- O; DНе забывайте что если вы изменили конфиги при запущенном сервере,то они вступят в силу только после перезапуска сборки. 3 l3 ]$ v* u( e: F4 G7 Q& F* d8 u. |: ]( l5 S4 e3 b
И строки начинающиеся с "#" никакого значения не имеют, это просто комментарий или один из неактивных вариантов конфигурации.+ T x+ {3 c) K$ s
. f z _8 n! R
Добро пожаловать artace.ru - творческий сектор (https://artace.ru/)