Название: Геодата, что это и зачем. [Версия для печати] Автор: 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; R6 Y K# l, {: e Сборка L2 Java: z8 v& r9 r' M! z
4 Y9 O3 u( \3 z2 u1 F$ Q+ ?
. p, O8 v$ q6 K+ p' [: O# b
Доброго времени суток.5 x! G* C8 d- A$ u' M
# k. g9 |) q. \+ _: E
. k. @+ \, n6 z' aЧасто появляются вопросы на "стёртую до бороды" тему геодаты, зачем она нужна, какая есть и куда пихать. Пример будет на хрониках Interlude:1 k% A. g8 f: K! V! Y
Возьмём две основные *_conv.dat и *.l2j, первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата. / }1 l f9 f0 z v* R2 HДля чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее. * Y9 U7 F: m1 E( K3 |4 {По скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру. - n, G" i) C2 {; l, j* u4 g7 K8 c9 U# `9 J" e, c) D: }' Q
Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область:9 [1 p" l+ i% u
[attach]495[/attach] ; o k, w* z9 ~ i# a) h2 _: \. U1 R n; o, J
На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке MAPS и пустые весят от остальных одинаково.. a8 S. _ ?1 D. k9 K p6 V) }
Геодаты в шаре полно и она разного качества, подбирайте ту которая будет корректно работать на вашей сборке. Если в квадрате есть косяки, к примеру невидимые преграды,или не можете пройти в открытые двери или ворота,то это не причина менять его на другой,существует софт для редактирования гео и невидимую перегородку можно убрать, но это отдельная тема... . q3 S* c# S8 G! M0 J7 J NРабота геодаты зависит еще и от гео-движка сборки - неотъемлемой составной части ядра этой сборки,так что не путайтесь с определениями что бы других не путать,геодата и геодвиг разные вещи. & S. F+ D4 ~0 E) c; T6 f2 wУ разных команд делающие эмуляторы разного качества гео-движки поэтому не всякая гео подойдёт к сборкам каких либо команд на 100%, чей геодвиг качественней решайте сами,тестируйте, темы "что лучше" для флуда. % s4 f+ d7 J9 P: D' U6 f. f& P+ V. u, v$ ?& d7 G' V" `1 U: i
) F+ a! f5 \, R, \Что такое pathnode? Отличная штука, благодаря этой приблуде мобы у вас при агре не будут ломиться сквозь стены, они их будут оббегать как и сам персонаж, создаётся пачнод определённым софтом с квадрата геодаты и его качество зависит от этого квадрата.Расширение пачнода - *.pn.! l3 L; {" @, {' Z7 }$ ~6 |
Количество файлов пачнода должно быть равно количеству файлов геодаты. k2 y. ^( z0 s& o, S O
Есть сборки на основе команды Rebellion (а точнее Fortress), такие как L2Dream, L2f ССР, Phoenix, L2Royal извиняюсь если кого забыл, у таких сборок есть возможность поставить геодвижёк на отдельную машину что бы разгрузить основной игровой сервер,но использовать не советую поскольку не доделаны, хотя возможно в платных геосервер уже реализован на 100%.$ B9 m% p$ E4 v3 S% J
Таким сборкам пачнод не требуется, их геодвиг генерирует его в процессе работы,сомневаюсь что это хорошее решение,но и не плохо с другой стороны, кому как,по мне так геодвиг sf в полне нормальный.# S- z: C$ t3 }) p( L9 d, U/ E4 m
Сборки sf,это L2jServer - первые кто написал ява эмулятор,также L2jFree, L2Emu, L2Ambrella и др. на их основе, так же можно причислить Balancer (Fortress с которого основался Rebellion),но ему пачнод уже не требовался. Был отрезок времени когда эти команды использовали внешний геосервер (кроме L2jServer), но позже от него похоже отказались. 6 s5 r) e$ Q1 L7 a. h5 O% hТаким сборкам неоходима геодата + пачнод,для комфортной игры вашим клиентам. 1 |* s5 e/ i5 t# R6 C4 b: lУстановка геодаты на сборки без пачнода (Rebelion):5 r( Z4 W% G: T2 K: R$ m
Покажу на примере L2Dream.: E7 l- T$ T2 ]
Путь куда закинуть гео,сами файлы ( пути и папки могут отличаться, в зависимости от сборок) *.l2j: - P* ?1 o. I1 U7 N' n/ l 7 t% { M( K& Q3 S5 W1 P0 W+ M P& h% x
C:\L2Dream\game\data\geodata " N9 k( q7 y ^. B4 |! P7 X& ^, V3 [: z
0 o5 W( x9 w+ G) b% R Y( z
2 {$ s. q" b1 N. [( _& b8 i) s
" x) M) ?8 q, CНе в "C:\L2Dream\geo\data\geodata"(это и есть внешний геосервер),а именно по тому пути что указал. , u) V7 F. h2 X% HНастройка. r! c0 X2 I5 q2 {1 ZИдем по пути "C:\L2Dream\game\config",нам нужен geodata.ini или geodata.properties:% o4 R$ E1 E2 E( T' [* S& Y+ m
#================================================= ================================================== ==== - c$ b* u* n" ~1 I6 I/ p: P# Даный файл является конфигуратором геодаты. A& O a- t( f0 c/ }+ ]5 ~% n#* C2 ?4 r$ m. D4 J7 A9 q7 R1 X
# Геодату можно отключить, запустить в классическом режиме на гейм сервере, а также запустить как выделеный сервер геодаты.7 d* ]+ b2 K5 W O) S& U& r$ T% z
# 0 h# j' J# {" d5 @8 o3 r7 p9 |. S# На даный момент на сервере геодаты отсутсвует какая-либо авторизация(за ненадобностью). ) H; U2 V& E$ ]) ^5 T# Если у вас мания взлома, то закрывайтесь на уровне операционной системы. ) t ]" y9 ] _3 k2 e: F# Ну или просите прикрутить SSL. $ d) \! I1 d8 D* \8 N#================================================= ================================================== ====+ P; Q$ s6 N, Q$ o7 R
. p$ x- L4 T+ X' `6 Q6 ~' O
0 y1 U4 W6 J: Q+ k4 U# Включает/отключает геодату и поиск пути. S! n$ J! |/ G( g: }# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata. 4 v, j) K* Q* H/ B4 v/ h+ C% `# 0 = Геодата отключена. ! _/ Z1 j3 t# Z9 x& A0 o# g# 1 = Геодата будет загружена в геймсервер. ! R) i: T4 o5 X7 D( R# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как3 P& h' }! ?' j
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами & n6 X: \2 Z5 \) v/ ~# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока, % d, o2 a: i! a# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока. 7 M" |! l1 H+ X4 I/ k! NGeoData = 0( j6 }& U" r4 u4 _3 {
# K5 r3 y1 q, y7 k7 m# R
; H7 B" T. V* x" \3 S! O" Y# Хост для сервера геодаты.. D" o. g, s& g/ Y3 ?" T; ?
# * Забиндит все интефейсы. 0 @$ p: B5 N6 ]7 V& U( V% | \# Игнорируется при GeoData = 0 или GeoData = 1- |2 A8 J6 x1 E8 |# r3 G
GeoServerHost = 127.0.0.1 0 s# a6 {* l0 Z' M" ]2 t# O1 d4 ~! [& e# T; J2 g+ P( p
" [& K' l4 M/ F$ a" x# Куда будет пытатся коннектится клиент.$ J3 _/ d4 S4 M. g c# B
# Игнорируется при GeoData = 0 или GeoData = 1 7 S8 ]+ m' Q, [$ s! W& f% n% s2 zGeoClientTargetHost = 127.0.0.1 " ?3 m3 t; N: S) ~/ {6 a( U, T8 D& `( @& I9 }" c. H
* H0 K' S9 @: t9 N
# Порт для геодаты. " S8 g: P* B" d% q+ u# Сервер откроет на нем сокет.5 _8 P4 y/ Z2 `
# Клиент будет пытатся подключится к нему. / M9 z+ N+ ^2 u8 W1 ~' Z; H# Игнорируется при GeoData = 0 или GeoData = 1" O/ f7 D- k. f, ^+ z
GeoPort = 9050- r( u6 J+ J. j8 N V' W
, m9 |0 B- N- _2 U, p0 `# C- ~
1 d9 w: q ~" L, c( H& e, h8 d
# Сглаживает путь. , Y; ^, k* X f$ ?/ h# Стоит отключать только для дебага. - A: C# X1 P- q8 {0 gPathClean = True$ g7 Z3 w" m" {3 A# L" F
8 D) B; y" j3 U
- I- G* B1 n: S, [+ I
# Обрабатывать ли двери в геодате( W2 z/ H. d% u2 g
# Настройка влияет на ГеймСервер3 Z5 k) r% a1 q
AllowDoors = False + O: T7 I$ L1 J# I4 O7 k3 z) b$ a& B6 C$ v1 Q- Q0 e. w
( V4 Y7 |% g8 p# g P6 \* DPathFindingBoost = True1 E6 p' q5 h8 \6 W% n' S
PathFindArea = 250+ H2 L1 P3 Z. x6 x) _
Внимательно читаем,нам нужно это:: u% P- t! k6 `' p0 s
8 V/ r: X* [$ w+ o' A& s 3 e" @% S8 e' u- F8 Q8 M- M9 V0 @7 ^0 n" F5 V
3 L; B+ S- V: V+ A+ D# Включает/отключает геодату и поиск пути. ! b! @# R. M$ g1 P2 a, @ h% l# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata. ! ^, D4 v* `& b& Z# 0 = Геодата отключена., t- Z5 \' M! x
# 1 = Геодата будет загружена в геймсервер. . w& k* x" \* e1 @4 L# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как : A. x3 Q0 W( w# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами! p) H. _1 k. C
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока,* }- e9 S8 a2 R/ ^" r) ^. U# K5 a# U
# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока. 1 w* Z* s. K8 ~7 M2 V1 W3 r3 I- RGeoData = 0 ! c) P% e0 c9 i( B 9 } u5 q" P1 d( n' e 2 ?- I; @# n' Z" S# v* @& H1 M: q D. e$ \ D) h" z) K) t9 u
' I/ E: @6 X$ \+ k, W9 H# jВ этом параметре меняем 0 на 1.- Z$ M, m8 U" ]' T
2 ставим в том случае если всё таки решили поставить геосервер,его настройки: 9 \; E4 W( H: x2 E: |6 G# Хост для сервера геодаты. , J2 Z+ g8 ~5 F T' g$ H# * Забиндит все интефейсы. $ Q( Q/ x/ K. n7 p' n$ m# Игнорируется при GeoData = 0 или GeoData = 1 0 Q7 q' ^7 n7 i1 G/ t9 R: bGeoServerHost = 127.0.0.1$ b- m1 E7 f$ F, o0 `! M
$ V1 C R5 z) Y3 v! ~ N9 ?! E. x) l# y: }, {" K: E+ @3 ~
# Куда будет пытатся коннектится клиент. 7 B# |" O; X, S: C/ h ^6 m# Игнорируется при GeoData = 0 или GeoData = 1, ]: B7 U0 ?: i+ z
GeoClientTargetHost = 127.0.0.1$ e E/ g0 q9 i9 a5 K
! R: a: d2 f5 C% Q( g/ Y
; k5 r x8 e9 `" E
# Порт для геодаты.; H- U0 p6 H' I: ~2 U& a" E8 K
# Сервер откроет на нем сокет.7 i/ N: _4 \+ C }! @0 u
# Клиент будет пытатся подключится к нему.9 V$ U2 s7 L2 L* ?& W
# Игнорируется при GeoData = 0 или GeoData = 1 9 I. M! g3 y8 \% ~5 o7 `GeoPort = 9050$ [" e. b; Z5 L7 C5 m
Здесь всё ясно,можете зайти в "C:\L2Dream\geo" и увеличить выделяемой оперативки на геосервер изменением значений,StartGeoServer.bat: * \, J- ?# Z$ I/ R0 D" z9 C, O( ^3 S7 W9 a- O( n* U/ R
- U- x) ~, T. n / l4 j; F2 g& P8 D3 F* d0 o( A+ [, H9 v" X) f
Двери,можете включить если уверены что они у вас работают,так как их "непробиваемость" не во всех геодвижках реализовано:) G) _% w" l8 H4 H# m$ {
4 H4 u8 `! z+ O6 @2 t+ s6 \4 C' L$ t* _/ F/ V
" v. d2 K, G. v. v3 T0 p5 i5 t( [- Y
# Обрабатывать ли двери в геодате6 e' s6 p& F& u( l- V/ w- O
# Настройка влияет на ГеймСервер& o, v0 @6 F, P" {9 o
AllowDoors = True , d- d( ^; o; m% i7 ~ b0 I& ZТеперь sf,возьму как основу L2jServer,за всё время он не сильно изменился и не использовал геосервер. 9 l# w3 ^9 T; ^7 VПути размещения файлов геодаты: % ^" a D4 `6 c+ f& D# h0 L& I' ~6 D- Y/ S0 n/ W) p
/ X/ Z- y" W9 n" e: zC:\L2jServer\gameserver\data\geodata 9 @3 W) M6 B9 C. ?1 M - ^3 B5 s/ b$ Z) k5 U, @3 K: f+ d% M- N* C) H/ ~$ J
9 h! Y$ H! z# _8 a) L
3 A" X T5 i- N0 c K7 _ q. u1 A
И патчнода:! j1 e8 ], a4 G Q7 }6 x
, P8 z9 Y, a- R% q+ a3 h ! A8 o+ _2 }0 G. i/ X9 s. pC:\L2jServer\gameserver\data\pathnode9 W$ |" V' ~- B
}+ a; g" o9 `# L8 ]6 e1 @% |" }: [0 A
" y! l, s! ?( z + s* B/ q- s: k" z9 G0 ~5 r+ vВ папке в месте с геодатой необходим файл geo_index.txt, в папке с пачнодом pn_index.txt,их содержимое должно быть абсолютно идентичным:. d# k0 ]" y5 y* ?/ o$ Q' s
5 N) ?! N& @9 O- ~4 L; l! o4 B9 ?$ \! [9 ^: x
& O, _- a( z7 H; I2 B6 h2 X! B
7 @" }- U$ `! v% h' w6 D( G4 Y0 v/ g3 m
В этих файлах прописаны загружаемые геосервером квадраты геодаты,если содержание geo_index.txt и pn_index.txt не совпадает то при загрузке геодаты может вылезти ошибка,просмотрев лог ошибки увидите какого файла геодаты или пачнода не хватает. 5 N$ }0 v5 a* e1 _1 GНастройка,находим по пути "C:\L2jServer\gameserver\config" General.properties,нам нужен следующий раздел: ' E; z% S! R0 U+ A#------------------------------------------------------------- --------------. J& Y0 ]* l! G7 _' J, P
# Geodata# Z1 i5 W/ f" M6 ]" B. ?
# ----------------------------------------------------------------------- ---- , z% z4 M( I; M7 J$ s# GeoData options:+ T0 S- C" y& @# u
# 0 = GeoData and PathFinding OFF (default) 1 _4 } A s. E2 A! F9 J W# 1 = GeoData is used to check Line Of Sight (LOS) targeting and . `0 L- ?* X# N5 G) R7 M; n# L2Playable movement. You need to download files for data/geodata folder.! z( G+ h# {- {, P) N
# Monsters can pass walls but not aggro (no line of sight) through them. & w$ w. A* m0 x* Y% k; F6 z' ~# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode# u; V1 t: T( u0 M. I: {& Z% a
# files if CellPathFinding not enabled) and all character moves go through & r* J$ f8 B+ I( M: o* \( C# u, B# geodata checks (if a mob passes a wall, pathfinding didn't find a route % O5 p P9 A+ S- J/ H9 E# but we allow attack and returning home).2 h4 R! L V6 X) n, C4 @6 T
# Recommended server memory minimum 2 GB, rather 3 GB.5 R) q9 q! K6 K4 A
# Default: 0 ! y1 c8 e' w3 IGeoData = 0 ( V$ s7 H* i% D' j7 w5 P$ H / {2 H+ h" I1 {0 D0 b. }$ k8 ~. U4 n+ Y
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least. / A$ g6 j G, y, |5 L0 j# 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 F2 V" S" ^$ @3 E- H" a; _
# Default: False 7 r% C1 g! E! l0 x+ F1 a: FCellPathFinding = False3 }! K9 f4 t" Y. P* B# M! O
) F% M6 l2 m2 x( ^1 ]5 K' x
, w0 u& ~3 `/ ~* v9 B# True = Loads GeoData buffer's content into physical memory. 1 S; \6 r( i8 K4 z0 r# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.* |! l B1 W" X# X
# Default: True . p7 }) Y( }5 j" W( h/ p9 WForceGeodata = True- S c+ c4 a3 _2 S/ h7 }/ F
% h p* A% y/ R& B. D$ U0 X
# Z2 ?2 G% M4 H3 p8 Y# This setting controls Client <--> Server Player coordinates synchronization:+ K: q$ `+ t j( }$ t R* L
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata. 5 b2 P7 Z8 v8 p. u/ U# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles.1 k' p+ m+ Z. I7 n/ Q, d4 L
# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).- ` @& x# D) v' S
# Server sends validation packet if client goes too far from server calculated coordinates. * O+ W+ H( G; G3 i# Default: -1 6 j( P! L7 x. i% y$ XCoordSynchronize = -17 R# P, i$ a+ `0 }" T3 P
2 W" H1 Z' u0 n- y j CGeoData = 0 3 B: Q( z* b1 X2 r& o b8 r/ Z3 O: J E9 Q
+ ^) F6 G: a9 z, E( Q8 M9 i
" k8 d, P$ T, Z
- p5 ?! f- k$ c. p& t2 j/ z0 o
Ставим 1 если нас только геодата,пачнод отсутствует.В этом случае мы получаем только то что агрессивные мобы не будут на нас кидаться,персы утыкаясь в стену не будут буксовать,а просто остановятся,но мобы если вы завернули за угол будут вас всё равно "видеть" и ломиться к вам через стену./ r8 _! ^! w7 Q1 L# w
Ставим 2 если пачнод присутствует, так же включаем эту настройку:6 P3 ^( Y4 P0 H/ Y, o
% e, }% p5 q; ~4 n
( L7 D, M+ G" z0 \" T" r
* H$ ^5 j3 B. n$ W' P+ V! d/ U3 F' ^
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least. 5 k/ G( r( T( i' _: V7 k3 K# 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. & y! m: {/ o: E. Q2 ]# Default: False& w/ V l& b+ _% S1 C
CellPathFinding = False ' c. E. W$ i/ r% Q! H" D : I0 X+ z5 f ^( s, ?4 B, U* }* j/ s8 S5 \% j) _ E6 `
% Y5 M9 m r" ^+ h3 I% H/ u. K4 M- ^. } o: Y$ z
Ставим True если хотим более сглаженную работу пачнода,но нагрузка на сервер немного возрастёт,если нет то ничего не меняем. & l T# S3 h9 z- G B/ XПожалуй всё подробно написал, спецы дополняем если что то не учел. 5 Q$ z/ I+ E" Z& L4 o+ p; G4 F# Z( Q/ g/ U
1 J* b; K c/ i+ B" B7 D V# l
Не забывайте что если вы изменили конфиги при запущенном сервере,то они вступят в силу только после перезапуска сборки.# Z9 B- I: Y X) O4 \" ~
H- f5 v W$ R- RИ строки начинающиеся с "#" никакого значения не имеют, это просто комментарий или один из неактивных вариантов конфигурации.' w. k; V4 W/ y1 F, Z4 W
" @. x, s. o: ]
Добро пожаловать artace.ru - творческий сектор (https://www.artace.ru/)