Название: Геодата, что это и зачем. [Версия для печати] Автор: 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; h' P2 O; L J% @8 P' ` Сборка L2 Java3 l( E z8 N3 d$ ^2 S
9 i+ x1 A8 l& Q4 Y
, ^ t- U- s% b( a5 y
Доброго времени суток. + f8 ?$ V3 L7 i% P$ ]0 `1 r r, L) n/ R. L$ R k
3 w' _7 v* L& ]3 }
Часто появляются вопросы на "стёртую до бороды" тему геодаты, зачем она нужна, какая есть и куда пихать. Пример будет на хрониках Interlude: 3 F9 C$ \1 G. B! x2 EВозьмём две основные *_conv.dat и *.l2j, первую отбросим так как этот формат для ОФФ-серверов,хотя есть реализации в яве и этого формата.- W. w" K+ t/ ~1 s2 F3 ^0 d/ ~
Для чего она? Для мобов не существует стен как в принципе и для чаров, упёршись в стену и буксуя на месте вы всё таки меняете свои координаты, мобы проскакивают их шустрее. ! |$ ~( F: v9 G0 y# k' VПо скольку для мобов мир - ровное плато, агрессивные вас заметят и атакуют если окажетесь в их радиусе даже если находитесь за стеной и не видите их. Геодата поможет вам от этого избавиться, если сказать короче геодата - информация о всех препятствиях имеющихся в клиенте игры. Поэтому геодата существует для разных хроник, геодата интерлюда будет считаться не полной для грации к примеру.# [, W7 u# h' `7 F7 F
. j l& d4 M: k& \' M& h M1 J8 t% B
Вся карта мира разделена на квадраты,они пронумерованы,благодаря этому вы сможете определить какой квадрат отвечает за конкретную область: ; s B7 K: z& d y4 Z[attach]495[/attach] # E! g' C2 d4 p9 U, h3 u- h1 @8 u# Q) P% _; H# Y! @8 `. \( x; X
На картинке отмечена только поверхность,подземелья не отмечены как и материк Хеллбонда, но это не значит что квадраты пустые.В клиенте квадраты находятся в папке MAPS и пустые весят от остальных одинаково.% H0 ?9 y- ^5 a# [5 A ~% _+ i; S. n( j
Геодаты в шаре полно и она разного качества, подбирайте ту которая будет корректно работать на вашей сборке. Если в квадрате есть косяки, к примеру невидимые преграды,или не можете пройти в открытые двери или ворота,то это не причина менять его на другой,существует софт для редактирования гео и невидимую перегородку можно убрать, но это отдельная тема... # c) \7 d' O# Z5 _Работа геодаты зависит еще и от гео-движка сборки - неотъемлемой составной части ядра этой сборки,так что не путайтесь с определениями что бы других не путать,геодата и геодвиг разные вещи.9 Q, l7 K6 ?% i. q0 W
У разных команд делающие эмуляторы разного качества гео-движки поэтому не всякая гео подойдёт к сборкам каких либо команд на 100%, чей геодвиг качественней решайте сами,тестируйте, темы "что лучше" для флуда.8 Q$ ^7 p% p6 G3 r" d) Y2 W2 @$ G
( Z$ d1 s7 C6 r1 e; n
' n6 w3 J5 c4 z( _8 L3 w/ T$ \
Что такое pathnode? Отличная штука, благодаря этой приблуде мобы у вас при агре не будут ломиться сквозь стены, они их будут оббегать как и сам персонаж, создаётся пачнод определённым софтом с квадрата геодаты и его качество зависит от этого квадрата.Расширение пачнода - *.pn. 0 U" }2 V1 z1 {3 U) S1 u A0 U7 {Количество файлов пачнода должно быть равно количеству файлов геодаты. 7 d0 v; L* H, I; Q- Z, L* ~Есть сборки на основе команды Rebellion (а точнее Fortress), такие как L2Dream, L2f ССР, Phoenix, L2Royal извиняюсь если кого забыл, у таких сборок есть возможность поставить геодвижёк на отдельную машину что бы разгрузить основной игровой сервер,но использовать не советую поскольку не доделаны, хотя возможно в платных геосервер уже реализован на 100%.- f q6 E0 ~# K' W
Таким сборкам пачнод не требуется, их геодвиг генерирует его в процессе работы,сомневаюсь что это хорошее решение,но и не плохо с другой стороны, кому как,по мне так геодвиг sf в полне нормальный. . k: U/ m, g8 |: S; X7 h) jСборки sf,это L2jServer - первые кто написал ява эмулятор,также L2jFree, L2Emu, L2Ambrella и др. на их основе, так же можно причислить Balancer (Fortress с которого основался Rebellion),но ему пачнод уже не требовался. Был отрезок времени когда эти команды использовали внешний геосервер (кроме L2jServer), но позже от него похоже отказались. 3 a" b, D( B" nТаким сборкам неоходима геодата + пачнод,для комфортной игры вашим клиентам. : j5 Y8 q. r H" p" I U* A3 FУстановка геодаты на сборки без пачнода (Rebelion):6 M f7 S, w8 ]/ \, K' b0 k) J. J
Покажу на примере L2Dream. ( d6 h0 Z+ m" Z% g) NПуть куда закинуть гео,сами файлы ( пути и папки могут отличаться, в зависимости от сборок) *.l2j:; J4 r- {6 D4 `6 k, Q F
5 k3 D& K8 C* n$ w9 [) c! C+ Y0 g
; Z( V3 R2 c g' P
C:\L2Dream\game\data\geodata: x. f: V( z! K/ ^( l: ^) V
4 T- y' o0 ?1 @3 [7 d6 S
" F9 Z4 x( o) Z9 x# K $ o, {" ^' ~& z" u) E7 x2 z+ B9 T* K' Q5 u3 U: o6 X- `, P
Не в "C:\L2Dream\geo\data\geodata"(это и есть внешний геосервер),а именно по тому пути что указал. ! P) I" u4 k$ S. v( h% }Настройка./ @, Y% D$ N" t5 O& M
Идем по пути "C:\L2Dream\game\config",нам нужен geodata.ini или geodata.properties:4 _ E3 V7 ^, f
#================================================= ================================================== ==== / _6 ~; C9 y/ G( B# Даный файл является конфигуратором геодаты. % u4 Q: H! s: B- Z# ) v/ D4 x p |+ G6 l# Геодату можно отключить, запустить в классическом режиме на гейм сервере, а также запустить как выделеный сервер геодаты. 7 k6 N$ `/ X+ F+ E#6 Z) f9 J6 ?4 I7 B
# На даный момент на сервере геодаты отсутсвует какая-либо авторизация(за ненадобностью). : Z1 y6 ~+ h+ y' s- X1 z- d# Если у вас мания взлома, то закрывайтесь на уровне операционной системы. 2 X, [) R7 Y- V {, B& K# Ну или просите прикрутить SSL. " w4 {$ p, N9 r) c9 A$ |2 g#================================================= ================================================== ====# g# b6 a3 r/ |; o+ h- L2 [( z
( @* r/ @* i# |) c _% {; F @; K+ ]
" B+ V# P m" L% y. b2 ], i
# Включает/отключает геодату и поиск пути. - j# ^6 }2 z# @# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata. $ ^6 U( G. E- `! d" J* {# 0 = Геодата отключена.) }+ E, X& ^7 t9 A- ]2 K
# 1 = Геодата будет загружена в геймсервер. ! E; l ?1 ?6 ~( t" S z# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как5 x# z" w6 r" W9 `6 B
# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами- n* k) n& u& o- @ w$ t8 A
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока, % r: {. R7 m, W @2 T, ]& ^# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока./ E" f" R! F$ g- b0 ?% L D2 B
GeoData = 0 : t: H X) r$ E! R. ~7 D; m7 r% N: |' T* J( s1 S: {
) W. I6 e9 o! L" @* Q7 K/ B' D# Хост для сервера геодаты.$ h0 |/ }' J5 ^
# * Забиндит все интефейсы.7 m" u0 ]8 z4 B0 C9 Q% R& _
# Игнорируется при GeoData = 0 или GeoData = 1& D7 b" n# C0 E0 K$ q+ [3 F
GeoServerHost = 127.0.0.1 " Q+ B5 n+ U' P' i2 U3 p y9 y9 k. B6 X& G# x
6 k; F1 L/ h* O$ P
# Куда будет пытатся коннектится клиент.6 o# `( n: V( }* R5 P
# Игнорируется при GeoData = 0 или GeoData = 1 ' j$ V: p0 q1 @$ j, R! L2 d3 _GeoClientTargetHost = 127.0.0.1 Y/ y8 M# F2 C* e( l9 r
v/ p. O. |3 L; E* K4 {& _: w
9 z3 Z# X8 x( |* m# Порт для геодаты. ; o! h& B( b4 P% `4 a7 n' d8 l& c; q# Сервер откроет на нем сокет.6 F7 M1 F. w F1 T
# Клиент будет пытатся подключится к нему." C0 r2 c$ t: y" W4 k8 N
# Игнорируется при GeoData = 0 или GeoData = 15 M7 E, ^7 R% h, D: \
GeoPort = 9050 1 f/ h+ w, n: d4 o/ C; }7 l7 ^ _2 O# n4 ~% c) {3 ^
) Q0 \4 W1 C z) v
# Сглаживает путь. 1 `9 O- h$ S/ [- d b- Z2 \# Стоит отключать только для дебага.% K$ W* p% D& z" \
PathClean = True8 S. K$ e7 ^ y; k& t5 T
0 L$ @$ n& h; @# j! a' U7 ~ 5 S% ]9 T9 E1 i% k6 U6 ?8 D# Обрабатывать ли двери в геодате' U1 W7 x6 J8 u
# Настройка влияет на ГеймСервер/ z/ Q9 e+ ^$ ?; m9 m3 v4 e
AllowDoors = False 7 s4 C* M0 Y; h* ^; D7 f$ D6 Z/ i; ] % C# W0 |- w* b# e3 S+ j0 K$ Z# c& e, U) u. t
PathFindingBoost = True 2 w0 k2 [7 m* {' h3 A# y. o2 [PathFindArea = 250 & P( i- `! V! Y0 b5 ^Внимательно читаем,нам нужно это: ) A3 q2 \" G2 N7 Q% x3 r, o, A! e! A3 h1 _; z: Q
$ _3 a3 H8 s8 a% b" k; B T% f1 m* i" y2 E7 F2 n0 L
* U: j1 k/ f% I3 u% \5 k; t6 P' H# Включает/отключает геодату и поиск пути.7 u6 _/ s1 F+ ^+ D" {- }- M7 Y. d
# Рекомендуется включить. Требует наличия файлов геодаты в data/geodata.# n1 r& j$ Z; l8 k- c9 |9 K$ i
# 0 = Геодата отключена. / l( Y6 j: H! k' j7 y# 1 = Геодата будет загружена в геймсервер. : P3 \: k: k$ S! P+ j; w' t2 c2 H# 2 = Гейм сервер перейдет в режим клиента, и будет пытатся подключится на указаный адрес, в то время как # x9 e! f9 G7 @" Y; [6 j% i. q# сервер геодаты сядет на указаный адрес. Для работы на выделеной машине с несколькими серверами Q" t& K6 d5 [ x" d: l# Y+ b
# рекомендуется гигабитный (и выше) лан. Среднее потребление траффика на осаде Адена = 400 Кbps на одного игрока, # b8 N, |3 |3 J6 G- S0 D# с учетом активированных им гвардов. При обчной игре среднее потребеление до 200 Kbps на 1 игрока. $ X3 M9 }1 c0 u, W# s0 H! mGeoData = 0 $ q7 O; L4 N# i$ k: r/ Q9 P' p& m: P3 Y! x, v( U% ]. T
! \, L. B# m3 N# U, O0 z
! S) u) I9 ^# T * ?8 T7 o' C4 c, nВ этом параметре меняем 0 на 1.7 k" O1 V: [2 V, B
2 ставим в том случае если всё таки решили поставить геосервер,его настройки:5 E2 R) b: L" ~( d: o* B& m6 l0 f
# Хост для сервера геодаты. / Z( X3 z: c+ {& w# * Забиндит все интефейсы. e( @2 u) F9 ?6 v+ O# Игнорируется при GeoData = 0 или GeoData = 1 - I- f1 [/ V( y; X6 l* W# [+ T6 KGeoServerHost = 127.0.0.1 T* t! C+ }# f: h& ~% j4 P! ^" f! e2 E, x! _3 G
; X0 ]4 e% a' |4 I) @2 j1 z8 u# Куда будет пытатся коннектится клиент. 3 K6 u) m. s2 B0 E# Игнорируется при GeoData = 0 или GeoData = 18 o7 I: {3 ` k
GeoClientTargetHost = 127.0.0.18 i, _! |( l3 J! K
! m8 w6 n* d5 Z! p' m7 z/ ` ! c: T% E5 J8 t8 f# Порт для геодаты.4 K# \4 T* R/ Q; D
# Сервер откроет на нем сокет. 3 `) Z' u h1 Q! e1 \# Клиент будет пытатся подключится к нему.4 y# P& Y3 `; G; G
# Игнорируется при GeoData = 0 или GeoData = 1 7 L) O9 i6 P; N; Q. |2 i$ `GeoPort = 90504 ]* {( ^ F$ a5 [( O3 y
Здесь всё ясно,можете зайти в "C:\L2Dream\geo" и увеличить выделяемой оперативки на геосервер изменением значений,StartGeoServer.bat:/ f" q0 M" b5 K9 o; _( r
9 I, ?) g* z$ ]' \0 W; A( r. ]) e
8 y6 U! ?" ?; F' U. e, d 1 S0 v8 Y+ u1 ? B$ q0 n$ g8 J3 ?
java -Xms512m -Xmx768m -cp l2dserver.jar l2d.game.geodata.network.geoserver.GeoServer + A% C, B" G1 f5 d: K. L, ` 7 k6 O# K; @/ o- T + ^4 s6 r7 \" P 5 F4 |. M' ]6 q$ Q 1 t: t7 R2 F9 D6 x- j+ kДвери,можете включить если уверены что они у вас работают,так как их "непробиваемость" не во всех геодвижках реализовано:! T3 r+ g5 q/ S3 l
7 R3 w! \+ a8 w0 C4 l
0 o1 F. }' s8 a; {# ]8 U+ ^2 A
" C' t ^" n8 o: e ' l! z/ A& T9 W$ ]% K+ u2 r2 t% k! z1 q# Обрабатывать ли двери в геодате 2 k' U3 M8 S5 m! q2 I# T# Настройка влияет на ГеймСервер& G! ], _/ h: t. ?1 m
AllowDoors = True % g; s5 Q7 A7 b. @ Y- H( Y* xТеперь sf,возьму как основу L2jServer,за всё время он не сильно изменился и не использовал геосервер.8 c8 {, T; K; F5 p- ?. K
Пути размещения файлов геодаты: ' t8 R+ ]8 ?+ r- o' w3 r 4 e+ I/ x5 Z" Y) t/ g/ X 8 M% j+ i+ T' ]C:\L2jServer\gameserver\data\geodata; a& S$ E" c4 n1 l
6 z7 y( y% P0 T$ B, J / w7 t1 P+ V+ K+ l1 l ' L# v- t3 W: D% Q, h1 Q/ h: j* r
И патчнода:: K+ C [5 U# j5 P3 P0 R' v
0 \8 [9 b) M4 q 3 m9 K& O; |4 c8 Z9 H2 ^5 \2 ~4 W- r
% J8 L1 h) u# x& F5 I
В папке в месте с геодатой необходим файл geo_index.txt, в папке с пачнодом pn_index.txt,их содержимое должно быть абсолютно идентичным: 4 W- E4 `! E3 r& T1 m3 f$ N; l; y7 B" O9 a. K6 h
1 i* k$ T8 N& p9 k* K+ e/ x$ D- v. C
В этих файлах прописаны загружаемые геосервером квадраты геодаты,если содержание geo_index.txt и pn_index.txt не совпадает то при загрузке геодаты может вылезти ошибка,просмотрев лог ошибки увидите какого файла геодаты или пачнода не хватает.+ J4 _1 F! Z, S
Настройка,находим по пути "C:\L2jServer\gameserver\config" General.properties,нам нужен следующий раздел:# _8 p: H: D( P$ k* q3 k
#------------------------------------------------------------- --------------! H4 L' G+ `, _0 V" {8 d, |1 E
# Geodata ]* G7 y3 I, c
# ----------------------------------------------------------------------- ----3 R! W# I0 d n
# GeoData options: 6 p C9 W, ]$ X& f2 a# 0 = GeoData and PathFinding OFF (default)- a1 P) X; K) F+ Z' w" f% T8 L3 G
# 1 = GeoData is used to check Line Of Sight (LOS) targeting and ) `( b4 @) ?$ G- ^. \/ |; _% r# L2Playable movement. You need to download files for data/geodata folder. ) f; g* t+ l0 ?+ h; D8 X* \1 Z# Monsters can pass walls but not aggro (no line of sight) through them.- O3 j2 p4 L5 q9 u @2 I
# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode + X% v% X+ O+ @- ~/ t! x# files if CellPathFinding not enabled) and all character moves go through # p7 k. K2 h6 l7 v9 T# geodata checks (if a mob passes a wall, pathfinding didn't find a route* _7 b0 D' @! u* s# w
# but we allow attack and returning home). , a5 n4 c4 t. A5 q2 F+ o# Recommended server memory minimum 2 GB, rather 3 GB./ j3 o; @$ o) m `8 k7 \
# Default: 0/ e5 }0 k* J# e
GeoData = 0% e* B( m3 q1 x: [- |, ~# P
" y2 k) m5 D4 d ( Q# [! {1 v s! j A# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least.0 U8 P; `/ T6 r; R( F
# 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.* h c3 k. F4 N* c" P0 \4 b3 z
# Default: False$ V5 z/ U0 _) N* u/ g) r S
CellPathFinding = False9 ~ n2 h! A0 a [: w3 p7 y. i
) q t* ~; P) y4 H# @
0 R u2 J$ w0 m" s& B4 J% ]' r
# True = Loads GeoData buffer's content into physical memory.( f* J& K& ?" f
# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory. ' C- w {3 b9 G% i4 J# Default: True! F; x9 N- [1 F6 }# ~: w5 |
ForceGeodata = True( A- `0 L! E6 w: w2 g& d3 W: P* t
8 u# D5 _% ]4 n2 i ' ]+ L. l9 h% l; N4 U( ]# This setting controls Client <--> Server Player coordinates synchronization: 0 W' E, H$ t+ ~6 n1 ], d8 Q# -1 - Will synchronize only Z from Client --> Server. Default when no geodata. 1 m8 `8 ?0 t1 \( }# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles. 3 e7 T$ C. E, w9 `* r+ G# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).& w* ~: t" G4 W7 Y _- c0 K5 U1 ]
# Server sends validation packet if client goes too far from server calculated coordinates.& }% b$ h x `! ?* T& R8 B0 N) t3 E
# Default: -1 6 D! T) A/ j- y4 pCoordSynchronize = -1# p! v f: N7 Q4 A
( G; w, j/ c# L3 ^2 p% ?3 b3 X1 ?
O) U# Y4 w, f+ O * `1 |0 `/ J8 l' e" A& T/ W/ e
GeoData = 0 , Z \1 r+ x+ m" ~# A. f / D. N& h7 j$ Q2 z4 x4 }! |* O& W) C( \
0 \. ?! p5 J/ F 6 z( W% H) y' eСтавим 1 если нас только геодата,пачнод отсутствует.В этом случае мы получаем только то что агрессивные мобы не будут на нас кидаться,персы утыкаясь в стену не будут буксовать,а просто остановятся,но мобы если вы завернули за угол будут вас всё равно "видеть" и ломиться к вам через стену.. W1 e1 c) R) f
Ставим 2 если пачнод присутствует, так же включаем эту настройку:7 j6 j) S2 V* g% _3 d) E
. m. n8 l$ r k7 M) h2 B9 v, m% m! s6 w9 ?
- [; s0 L* _) S" U4 N* g% g4 X& w, S" `/ w8 p- N' V
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least. % {. r8 G, p- M Y" X* F# 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.. G3 L+ c* ~- F$ t. x; b* q# c
# Default: False % {+ p. y# i& Y. s' }$ [CellPathFinding = False& L' A5 ?4 P! E. B) r
7 P* w j- E' g4 m/ H l, j9 {* n
: a! C8 O; M$ |* P) W: n/ R' Y, \9 Z+ Q8 E1 s
! u; S" _! D$ `' Q% c
Ставим True если хотим более сглаженную работу пачнода,но нагрузка на сервер немного возрастёт,если нет то ничего не меняем.) c- V/ M* j+ K' ?7 J4 ?7 s5 L! \( n
Пожалуй всё подробно написал, спецы дополняем если что то не учел.( ~3 |1 X9 U$ f3 K
9 S7 {8 {, @+ c
# a3 N. ^' _6 y, V, W" @ c
Не забывайте что если вы изменили конфиги при запущенном сервере,то они вступят в силу только после перезапуска сборки.+ E; F" @: V; b/ b
" S% R8 \1 d% L+ Q: s0 a
И строки начинающиеся с "#" никакого значения не имеют, это просто комментарий или один из неактивных вариантов конфигурации.1 I' `* C6 I1 _' x
2 m" p" v( C ? q7 v
Добро пожаловать artace.ru - творческий сектор (https://www.artace.ru/)