千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!
' p# v+ L/ p s' ]' k: ^# o) W( P" W. @7 ]
1:Balance 网络均衡服务器。, O: j3 n) Y ?$ v3 R' x: d
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.. D3 `0 V2 y, J% u) |1 m X+ g0 q& }
3: GATE 网关服务器.
6 M5 P* k& e8 y$ F0 a: m- Q4: login 登陆服务器. 帐号密码等数据在这里.
' F/ |' o i1 u5 O/ W |5: TGS 游戏主服务器. 游戏大部分设置均在这里.$ J% |$ ]2 q, G+ Q1 g6 y4 h
9 z( A# @6 T% u下面讲下他们的工作原理.
1 A/ a1 `" {5 y% N5 v
8 x/ [7 }8 s* j9 c首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后, K) @6 V: U3 a8 M3 g
将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责 z' z. } s0 X, {
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,) U6 b2 i8 j, e* x$ Z: s
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到
2 E6 f1 z3 S/ Y客户端.& l. _, {% ?5 Q" C) O
8 t+ z8 d/ i! f" Q- q
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)
5 A7 H+ b, m5 M, K5 |7 Y4 Y2 ?2 t- l6 r( _& Z" ~
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.2 y# t3 n, u2 C! ~
DB服务器 TCP协议3051连接GATE.
: f5 e: u( s" Z8 u, K( h) kGATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.6 `7 m5 V! d4 \9 F$ K+ F: j
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
" C" F. J/ I' Q! ^; Z的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
3 i3 L! g# q: x7 b& y验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
, [! X- |! Y4 H的误区.% U6 U' W z; ]) \" I
login服务器 TCP协议连接GATE的3050
% b# h5 R6 k4 H! ^* c/ ?TGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.3 _5 T) y: c% Y& x
. f8 {3 Q& O0 ]' t2 o
: ?/ Y9 ^1 Z: b0 }+ p再讲每个服务器中的配置.
' v% ?0 ]' h3 I4 U3 B8 Y2 s. D* P+ K9 H/ g* c! |7 b
Balance服务器 目录中的balance.ini中配置# e. v# x5 i( x+ p
[BALANCE]
+ I, y) `* C% _TCPLOCALPORT=3053' p2 d8 K# r" n3 Q2 R" s, n" d
UDPLOCALPORT=30303 U" S* C+ T# D* }* @5 o% f3 }
基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,
4 R% @$ L' R0 `6 e) }0 {2 N若需要一机多区,就要双开balance,GATE,TGS。
1 B4 _* O& d# S9 c这也就是克星一机多区的工作原理.
# _& Q! m$ _ B3 G4 T6 w5 O# g但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053
3 z5 i- j \6 L& j6 G他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
% u( v8 r0 P" Q+ m) p4 I' p配置文件中读取用户所设置的端口来实现一机多区的.6 I/ G, B. T3 Z- S" o; m
如果你想不使用克星工具实现一机多区,应该做以下设置.' E) ?5 y5 l3 i, c5 |9 f4 w
复制另一份balance出来,打开balance.ini修改
. a- W- R0 {1 x3 [( C' N[BALANCE]; u9 q! }9 r4 B2 r0 Q) t
TCPLOCALPORT=40539 A* Y8 \5 s6 C" j6 I/ k
UDPLOCALPORT=4030% I8 u$ d$ f4 f
这里修改后注意GATE.ini中UDP协议3030端口为4030
+ D; T% H9 c! e& O然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了./ }! x3 H; F5 @2 `% o5 m
! P( c5 ^# H6 O/ v8 X题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.
! J# A, h: J8 ]5 J/ |5 P; T! `% t打开windows自带的计算器,选择查看-科学型,然后选择10进制
+ m" M; d( k* b3 r4 y按下3053,再选择为16进制,你会发现3053在16进制中显示为BED1 @0 k9 Q, x; x: m. q8 n
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,2 ]) @, Q3 ^. ?' v' R( l
以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D2 L; I6 g* |9 k2 `( l" K' R4 A
若是奇数就要加一个0来补齐.
, i8 J9 [8 v/ q& K# X1 v4 Z7 P& {0 G" G: ~
再来看看DB服务器。7 H) x; @5 i; R- H+ B
# R9 m6 j) i0 {: t I
DB服务器下目录比较多,我们一个个来讲
) h4 o7 ~+ O! ~2 j" v( y. A1 G( pbackup目录本身DB服务器不产生,也不在他的目录下增加任何文件,$ q: Q* ]; m! v% ~
根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
9 _3 |- m3 V& x3 G/ ]log目录,web目录,均是记录玩家的情况3 y- z1 h, _- U& ~) L
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
4 M3 P0 S7 L R0 N" x3 |' U他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因$ d" u. \& S0 b& Z9 O0 u- t* k% R
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.0 Q6 V; i" O; ^0 t# Y H
$ H9 u5 a2 `% L7 ?- B! }6 p
DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.( `4 D0 D3 e3 c) k
reload,字面意思是重新读取,具体作用未做测试.
/ n" Y( w1 { h! ]0 raddrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
& ]5 V [5 M, R1 k, W9 |4 h到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.* U0 ~" ]: U4 H6 v2 _+ y
save today.sdb,存盘当天玩家上线记录.
) E) Y& D: s! U2 gback up,备份数据库,备份的数据库会产生在userdata目录下.2 _( S9 V6 c- t& @
' k$ J r( S" {; T ^- K
& X5 B4 x0 T- b3 l' A8 U' }6 F
DB.ini,DB服务器配置文件.
, D% N/ P2 b/ N1 C3 F- m9 K[DB_SERVER] 明确服务器名称.8 R- x9 ]' b" O! k% z/ x
FileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.8 L: b9 O. T# p& y
BufferSizeS2S=1048576 数据库的规格
+ f* r) n, C8 |7 k2 f& U! A8 SGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.# P! }: v: y; z `
RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.( K" } P' Y& n5 K' R/ }& o
ItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.
/ _# j1 E( u+ ^- ?) q9 K# `* X: J7 b6 w( \4 T
# s5 B) R$ [5 r6 v) D$ s1 E% VIPList.txt文件.3 |) q+ \, t c2 N7 H* G* A2 J3 S
记录远程GATE连接的IP.一般设置为127.0.0.1
( M* n B) N. S" _( ?
3 h4 |+ E: d- a, X; [remoteip.txt文件.
8 M, S) @' {$ a1 H8 m* ]; B/ [; R记录远程TGS连接的IP.一般设置为127.0.0.1
3 Y( W" s# v% A6 [; I5 F; H) w( i1 g
ModifyMagic.txt文件.
$ B8 s& C3 E/ a* l- O0 ~5 I# F: \感觉目前似乎没有用到.具体作用有待补充.' B" I% [) \+ v3 N. B
: ~3 ~' g/ V' N
1 C( } k1 g! {% V$ G" o8 J/ [5 {& y3 n
GATE服务器.& j' e: c# F+ W- X: }
. t% p; e2 c4 y- blog目录,记录目录.: g# R# N( c# [/ z# b# g; ~
% ^8 a8 r8 m, m- R) b" PCreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
; t3 r. c# F3 S/ d6 b$ o6 q[CLOTHES]
: o) L+ o2 h+ V% i, h+ lCLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.
/ Z& J; U% G7 s- B) x( KCLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
+ B7 ]9 o/ L' @CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.
4 H8 ~. J1 h q( J! [CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子5 B6 E# {/ ?- @! w. b) p$ a
/ K0 w5 {+ ?1 S[WEAPON]/ g1 c* m! [9 p* x; M* o( m' q
WEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
) R/ P8 g& {0 ]4 oWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
4 f( ?& ~3 ?+ B' O9 TWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以& v/ ^* ^2 q% v/ \3 s2 f n
WEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
% H9 V4 {5 U! x! g; O. f: f5 |3 n( Q# W9 K+ |- z
[ETC]
0 N! ?6 K( M& ~5 h- p) ^ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
4 @9 D' Q: R6 x; {/ J4 { h$ P. ]- N- s- T6 c d. K# F
即使你定义为没有耐久的物品,他出生后还是会有耐久的./ w4 J H% K# H# }0 W' L: C5 d
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.2 G( [7 g/ X" ^/ ~
/ a! M- A' R3 z& A4 U2 m* d
' c1 K0 W' e6 U9 @; \* ~( vDontChar.txt 定义不允许建立的角色名.
* A. r7 F4 V/ Z0 G
" H/ D! Q( u( S' v, ?1 T4 e$ x* r1 e
gate.ini文件,GATE服务器配置文件.这里详细说一下.
5 M/ w( [4 U8 N7 Y& w: U* R0 C ?: _7 U
[GATE_SERVER] 定义服务器名称
0 s2 P2 {- _& t$ u% E% P d( Q0 bLOCALIP=127.0.0.1 定义对外IP" H7 M3 ]. o, h
LOCALPORT=3054 定义与balance连接的端口
4 Y; q- H9 w2 ^& N% _LIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.8 [1 i# _+ l4 L, o- A6 ^& z
CHECKPAIDINFO=FALSE 是否收费服务器.1 C# z' b' t3 p( T# a+ h
BALANCEIP=127.0.0.1 定义balance服务器IP
( r: Q' y# I$ L+ KBALANCEPORT=3030 定义balance服务器端口.UDP协议., K& E( ^: m s7 x* z
SERVERNAME=test 定义服务器名
& K. }' V4 \: g0 eBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激5 |4 U7 W7 [* d( \# i- \
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激
7 O; o/ `6 T/ w; o( W% T* a# m h9 D1 D- E
[GAME_SERVER] 定义服务器名称' Y' n8 H2 K) O
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.6 q F8 J# a- ~( g% l8 D) \$ y
REMOTEPORT=3052 游戏主服务器端口.一定要封.
& J( }+ C: T1 g5 s; W2 a a/ P7 [0 V9 ~) G2 D+ L3 A
[DB_SERVER] 定义服务器名称- E1 I0 g7 |. C* n
REMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.5 F: Z$ C5 U3 P/ G- s& b1 s
REMOTEPORT=3051 人物资料服务器端口,一定要封.2 f' W6 `, a8 U" d
4 k+ K$ `' e1 z, J6 }$ m3 g[LOGIN_SERVER] 定义服务器名称
- A. j ?; _: D3 F7 h* PREMOTEIP=127.0.0.1 登陆服务器IP地址.
; X$ T/ A4 S" ?8 ~( }9 XREMOTEPORT=3050 登陆服务器端口
, f. P) G$ @( @; I/ z9 P- N
3 `/ ^! V4 |6 C' x9 K- `[PAID_SERVER] 定义服务器名称 (通常删除)
( Z/ B) }- n3 b7 d+ \0 _9 ?9 SREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)" `0 |& S) Y: H4 f
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除); v* F) l, E: C6 Q$ L
- M! Q5 A' ^+ @
, L, o; L0 P9 O- e% I) r& Ttgs1000.acs文件。GATE的语言库。7 e' l1 u. r* R( I& s6 e0 A' C! }
. e8 o; B" b$ z- V0 G9 n1 [9 G# nVillage.Ini文件。定义新手出生地图。这里讲一下。
h7 h0 m6 r/ ]7 @ Q- c- E9 Y, {
5 Y5 m2 Q# s2 d2 V4 P[VILLAGE] 定义配置文件名
' X9 D/ n$ ?( Y# k6 x8 q7 C9 @
* {, y2 y1 _% f& c1 ], h" g3 ?$ PCOUNT=1 定义新手村可选择的数量
8 \2 s: ?) p2 C2 l' u1 V/ z: N; e; m/ b: h+ O! ?1 e M
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。, y* n. H$ A1 g3 h) [' \
X0=178 第一个新手村X坐标
: X0 \2 `0 P/ vY0=238 第一个新手村Y坐标: y) i6 H( X Q' \: f% t8 g3 y4 L
SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号.
$ R4 ]" I5 X0 C# \# y; w |