千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!& Q% j& l5 \2 H1 E
/ z% k f0 o. T0 T1:Balance 网络均衡服务器。. t0 I7 O& i) q
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.
) h/ H# z0 T# ?2 i3 Q8 J; j& u3: GATE 网关服务器.
7 l4 A! l8 v- U: ~5 |4: login 登陆服务器. 帐号密码等数据在这里.6 P5 T$ s3 n& q- Q6 Y+ w
5: TGS 游戏主服务器. 游戏大部分设置均在这里.
$ ?! u5 f' e j' B/ W, \" x5 t6 H0 a1 A5 _2 r' z' H# w
下面讲下他们的工作原理.% m- k9 N% e: ~& s- o
& f; x; C: o! i6 |# K2 N7 V c; M) I首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,7 S& X ]: f# g" g2 L; ]' Q5 N! v3 b6 L
将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责" l& J' I4 r9 {# \
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,8 X, g7 m' y! K4 A
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到; K/ c( Q% x8 u" D" r: w6 q
客户端.
, G9 ^) W; {* S- j# o8 A& J% k3 i3 o/ \5 t1 U3 V
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)9 |" F1 a4 `& x, _
: ?1 u. A$ B( s. f9 MBalance服务器 对外TCP协议3053 连接GATE-UDP协议3030.4 |, d; {. n: N/ Z' Z
DB服务器 TCP协议3051连接GATE.
$ X J. ~* P- r: Q/ hGATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.5 a# U C, r$ I
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login$ t! [- |8 W; e4 ~
的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
3 Y8 Y: _. `5 Y验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
8 A: K& T# A4 Z" L8 p# M$ z的误区.
1 B; i' z) o; Y Glogin服务器 TCP协议连接GATE的3050
& x% x0 v" m" y( u7 oTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.
6 }9 t, \% ?/ {4 ~3 O4 F1 r
2 v8 }4 H" w, w4 P( r# V0 x; r1 z9 |6 ]+ _
再讲每个服务器中的配置.
" E K- J, G6 _8 V0 q G) Q0 i' Y3 s0 s7 J
Balance服务器 目录中的balance.ini中配置* [4 O5 m; T0 z. g h- H
[BALANCE]
7 t/ a5 T9 _+ Y- \6 uTCPLOCALPORT=3053. \5 v; X' `& d/ z
UDPLOCALPORT=30306 K- ]0 l- _3 T, A$ L
基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,+ a$ c6 I. k [6 R
若需要一机多区,就要双开balance,GATE,TGS。
+ @' Z8 p1 K$ f8 w6 ?这也就是克星一机多区的工作原理.
! @+ U0 Z# n) G- Y7 _但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置40537 Y! M" Z0 J2 ?
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
/ M% O5 j) }6 _- H6 [+ H2 [9 N% M配置文件中读取用户所设置的端口来实现一机多区的.. K& u$ }/ `, w# y2 ~' @, ^) O3 v* j
如果你想不使用克星工具实现一机多区,应该做以下设置.
# X/ \2 E5 U) T. H& f复制另一份balance出来,打开balance.ini修改
+ D! Z) d8 ~( K) D4 ~ E[BALANCE]0 [+ H5 T' ~" {9 A2 q- p: S
TCPLOCALPORT=4053
6 n8 e5 B" P' T0 mUDPLOCALPORT=40308 F+ L8 ?! D v+ f/ {+ N
这里修改后注意GATE.ini中UDP协议3030端口为4030# X% m( U& U6 m4 P
然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
2 l( ^% O6 @8 ]* ~
" z# b$ \( @, |9 @! y题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.0 j- p( N1 A' x- S2 s9 V/ Y
打开windows自带的计算器,选择查看-科学型,然后选择10进制
- `; D% L o1 ~( L1 t' T& G按下3053,再选择为16进制,你会发现3053在16进制中显示为BED% D# C1 j! n1 p. W& u
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,
7 F! q; L( v1 B& p以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D
8 I' M. X% m/ {+ w$ J! ~若是奇数就要加一个0来补齐.0 F/ A9 z; E Z' I
2 ~/ w- R4 L. m: l再来看看DB服务器。
: b9 \! i1 P9 h f* m& f) A8 d2 h9 I9 N& Q0 S. S# y* t
DB服务器下目录比较多,我们一个个来讲7 d ?9 [8 M! r
backup目录本身DB服务器不产生,也不在他的目录下增加任何文件,
7 }) | U" f- E根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
7 z$ @! R3 X: }+ U& m$ mlog目录,web目录,均是记录玩家的情况
' I2 c1 ~# F( _1 puserdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
8 |7 y" n) ]( t7 m他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因/ K: e3 I1 \4 F. S" r' S& y
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
' z/ ~: G& {" G4 m4 A4 }. S7 G. J+ X* ~0 i7 {
DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
8 ~% W; K6 p3 B; preload,字面意思是重新读取,具体作用未做测试.$ A, B+ S" _& P2 ?$ C% C* L) ~
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,2 M* c0 X" }) J5 K7 I
到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.' y( t! p2 z/ {' `# E$ C" A+ v: V
save today.sdb,存盘当天玩家上线记录.. @2 H) Z: t% D( O
back up,备份数据库,备份的数据库会产生在userdata目录下.% g9 G5 E* d& Y' i8 K- C; M- Y
! U3 [1 X8 `3 H7 U2 s3 g' [, h
" E- P, u6 O- M; EDB.ini,DB服务器配置文件.- w# M$ P8 X% R7 i) d
[DB_SERVER] 明确服务器名称.
& m. ~& F/ O m1 ]( N/ a' ZFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.( P. k! J8 m" s: H+ H7 m
BufferSizeS2S=1048576 数据库的规格
% K) A$ }' i f6 H$ i; i; f; K& N8 n( U, ^GateAcceptPort=3051 DB与GATE连接的端口.TCP协议.2 q2 i! v8 h9 m! M
RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
# n) X. u' k7 K ]5 lItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.8 e5 c5 X$ j! {
# ]' l* Z5 v5 j( u I
7 k& U/ ]% B' [) E% o9 AIPList.txt文件.- X' z3 \$ U8 b0 `: W1 o
记录远程GATE连接的IP.一般设置为127.0.0.1) y* h% C6 y4 |
4 S/ A7 C9 `8 m0 `6 D, Fremoteip.txt文件.& ]. G$ L6 K' h6 p0 w$ d
记录远程TGS连接的IP.一般设置为127.0.0.17 c& _) w. \$ n3 F5 d+ j
# u( L& Q' x) Z+ K+ j6 V% fModifyMagic.txt文件.
1 s& @/ j. J3 ]2 K q2 H感觉目前似乎没有用到.具体作用有待补充.
/ U4 M u4 g3 |4 T3 I
" T$ O( R I/ i' n6 w8 A9 h0 @& t/ U) s3 H. z* @
* L' K( g ` J$ m
GATE服务器.( r$ ?- X6 Q8 m" I; o6 Y
; D9 Y, X7 t6 \( H1 x e! s alog目录,记录目录.
- r8 S3 ]6 J- C/ w) p" ]& }8 b3 ?) x# S" ~* @ ?( V) i5 r& F4 j( B2 C
CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.- p7 P5 b2 Z0 H Q) R
[CLOTHES]
! V& B' W: L% n0 E! TCLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.
7 L3 i6 N, K) O' B( R4 d5 W% _CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
* ]/ ^7 y9 S3 L7 B8 r1 ~CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.: @" W* n' ?' l1 |6 h
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子! ]& h" P( |0 c) j2 j
; ?& k7 R6 z3 a
[WEAPON]
7 M* D+ g4 ~& ^ lWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
) r# N, S" Y v! W, R; j2 yWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
6 \ I( c9 E6 O5 ?% lWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
8 v4 N! V0 P: u' p* _5 w( bWEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以$ L J* d0 F/ o0 [3 N; w, i
B' i" D2 @- S" W3 h) w# {! O
[ETC]3 ^6 r& d: t. ]; V1 H" u: q+ {$ B* A
ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
' P8 _ D! h: P( b
; ?- y$ B' C/ G: k) J, u7 y4 I/ J即使你定义为没有耐久的物品,他出生后还是会有耐久的.
4 ]* T0 N; \/ w8 g即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.' v. i3 h" u: J
7 k6 U/ {8 k+ i! ~/ o
1 C" G3 W9 ]" o# c: jDontChar.txt 定义不允许建立的角色名.
- c. }9 R/ U8 Q3 U" ^) J
# O8 J$ s- H5 T4 L9 J
: I6 n6 n6 u6 B; b9 N- kgate.ini文件,GATE服务器配置文件.这里详细说一下.! ?7 G2 R" z+ F# a$ n
* f/ g( L L( \/ f, Z3 X4 ][GATE_SERVER] 定义服务器名称0 [& P$ J% J8 v" W/ r I6 j/ l9 m
LOCALIP=127.0.0.1 定义对外IP
9 A7 ~: n2 c s2 |* ~4 j! RLOCALPORT=3054 定义与balance连接的端口8 q% y! ?8 e9 O E- C! v! B, g
LIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.
6 H; o s3 a! p, `4 \" _ JCHECKPAIDINFO=FALSE 是否收费服务器.' r* K1 |8 G3 S8 V, d$ u& N2 S
BALANCEIP=127.0.0.1 定义balance服务器IP
7 N% U) C( {% q8 D8 [BALANCEPORT=3030 定义balance服务器端口.UDP协议.
Z- K. J- c2 ]" ?9 j- `& j+ Y1 hSERVERNAME=test 定义服务器名4 ]" n8 U: g3 }: @8 ?( H2 I
BUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激* j+ {; `0 I0 O H) f
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激
9 v$ E1 t# B% g
6 J [: }4 D: U e( W[GAME_SERVER] 定义服务器名称' k* ~0 N: _6 E0 A4 x
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.0 A: u/ E+ O' ^! R8 S$ f
REMOTEPORT=3052 游戏主服务器端口.一定要封.9 b8 J+ D. Q, Z; \/ Y% \
2 W0 X: g: q+ S5 s3 v6 ]" ?
[DB_SERVER] 定义服务器名称
. ^, T" a1 @. @% X- hREMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.# @! k5 ~% K( s. i0 g' A' E
REMOTEPORT=3051 人物资料服务器端口,一定要封.
9 n$ A8 r3 M- _/ j2 d9 ]! Z$ A/ z5 e/ I
[LOGIN_SERVER] 定义服务器名称
) D) S- ~9 T! _- {+ l4 }! f8 r. nREMOTEIP=127.0.0.1 登陆服务器IP地址.5 T; i- i( A! L4 D, P
REMOTEPORT=3050 登陆服务器端口; A7 |! q$ Y: R1 W4 k
* V' j* I" z3 c( v' \
[PAID_SERVER] 定义服务器名称 (通常删除)) n# d1 E: F2 _: N# m$ ]& E
REMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)
$ \5 o$ P! _2 yREMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)
, g( v- m( }& ~4 I
5 b# e0 a( V5 N% L# ?
, U& H/ t- }# a" I8 N6 @tgs1000.acs文件。GATE的语言库。
# e) O f3 m9 @, [! H
- U' _% [) F0 O, h" ?: _" \$ BVillage.Ini文件。定义新手出生地图。这里讲一下。: x8 x5 X7 T1 t. w9 u& F
3 ^, P1 r3 `' N# _( V( i! d5 S
[VILLAGE] 定义配置文件名
$ V* x9 \: t+ b" j7 S. j
+ J9 ^/ \0 f; D' z8 nCOUNT=1 定义新手村可选择的数量& X# Z# l, j% p7 V: k+ P
- ~( ]% [) z6 M( N `" V
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。; A4 n6 \# I% m3 c, }/ V: I/ T* S0 x
X0=178 第一个新手村X坐标
" m3 I% M: h4 w6 |0 U t2 XY0=238 第一个新手村Y坐标
( o, _& e# H1 L) \SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号.
~& l# \ V2 G( k, J7 n- g |