千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!9 A2 x8 O' a5 {( b% R/ W4 C
( B5 U3 j3 z: R: m: N1:Balance 网络均衡服务器。
3 f4 F% }$ w7 Y2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.1 @! ?' S' v+ n) ^1 O
3: GATE 网关服务器.! L- _# O l7 A" F. g3 f
4: login 登陆服务器. 帐号密码等数据在这里.
" y/ o! `( v w( \! _( N5: TGS 游戏主服务器. 游戏大部分设置均在这里.
. c- T! u( o% c/ r: G3 i
# B1 M( w) Q1 ^3 g, r$ c5 ]4 P下面讲下他们的工作原理.' D+ l1 k' T) V
) @ J) j/ B1 t" ?* r* Q7 Z
首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
1 R* M" V* U, s% O将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责; l/ u6 W5 `# D3 ]
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常," y" C! g: m# P
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到( R: S4 l: `' ^5 {
客户端.
/ |$ U% W; w1 Y% l6 I' e. l/ S! f
" i0 G2 ` Q$ q' j/ x% Y& z8 u再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)
/ k& H: e3 S! a+ ~4 o8 q S; n4 X) s+ f* s4 q
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
* n- k% O- g0 Z2 oDB服务器 TCP协议3051连接GATE.* A; P- K& L( }& Q; s4 c
GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.2 X& R/ c0 P0 {- w, }1 x6 T" ?
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
6 S: u: i( j! j9 C的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡6 ?+ E0 x& h! L
验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
% U# F& d/ A0 A2 i( i' T0 _( a的误区.) j' s( m/ Y0 ?! R6 g8 _8 J3 @ f2 D7 R
login服务器 TCP协议连接GATE的3050
/ `' m5 W- O) j8 L( U# OTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.! c; k) h7 _2 |& z+ I
5 n0 i6 Y: _. p. a9 P' F2 B9 R
# {+ `# D$ e/ t, O9 ^2 z8 q1 K再讲每个服务器中的配置.
6 _' k: t- Q# S4 g4 i( `; M+ z" l( [
Balance服务器 目录中的balance.ini中配置7 q/ P2 E1 A0 @) w
[BALANCE]
8 G: @& D1 z/ T3 B9 FTCPLOCALPORT=30536 X9 L; X" g- y4 \% G0 ?
UDPLOCALPORT=3030
P; k/ k7 ^* c$ q F7 h9 _基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,) l, q) U8 w# |- q, b" }
若需要一机多区,就要双开balance,GATE,TGS。' ~1 D3 V2 C& p/ r; b
这也就是克星一机多区的工作原理.
5 W4 |, b4 s8 s但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053
$ i8 `" M. ?$ ]' Y. u9 t他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从0 T: i" Y9 e+ R& p M: Q; a
配置文件中读取用户所设置的端口来实现一机多区的.
9 ^/ b( y+ c: L" ^ W$ |: K如果你想不使用克星工具实现一机多区,应该做以下设置.+ `, w- R- n6 O* z T ?$ O
复制另一份balance出来,打开balance.ini修改4 T# D }' h& @1 ]# T" n
[BALANCE]/ S0 w& D0 |! R0 ~
TCPLOCALPORT=4053
. u/ b8 j# e% BUDPLOCALPORT=4030
) s; Y$ i) t; k1 V6 l$ R+ { l这里修改后注意GATE.ini中UDP协议3030端口为4030
) m" o% S/ L o4 O* q6 U& ~然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
$ ] f$ B' j+ s/ S9 \# z
" x0 T* N9 l2 T' w题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.
- X1 o( g, }6 a5 x& S/ g& D打开windows自带的计算器,选择查看-科学型,然后选择10进制0 G$ E3 B4 l" e+ |6 x* `
按下3053,再选择为16进制,你会发现3053在16进制中显示为BED
. I" C5 ^4 n( n& v# y. A但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,) t% R8 w# S9 W" |* u, _4 a( y# ^
以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D6 p8 H1 n. I( E+ ~5 d
若是奇数就要加一个0来补齐.* X. h: q7 _$ r
5 \: [1 \6 D' r/ G
再来看看DB服务器。) b5 T4 G8 m6 R3 E) D' k8 O7 A3 @
- l! c$ }) s- v# _! d# U2 j0 Y+ rDB服务器下目录比较多,我们一个个来讲, H9 a/ `3 C5 Q8 I; X( I
backup目录本身DB服务器不产生,也不在他的目录下增加任何文件,, L9 P) q! k( ?& D! z+ s7 ?3 W M
根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.# J. j* e. \. k2 w% x6 x. E9 B+ ?
log目录,web目录,均是记录玩家的情况( o7 F, V) ^% d7 d2 n4 u- X" f
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
' D q. u) R1 f1 T, p }他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因# D# l- B7 J, {7 _: w% w e f
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
7 R2 v+ W. J, _& }) _9 ]
9 t+ r. e+ x0 a9 { ?' A( P+ ]DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
3 k1 ]. d" K z' ]- ureload,字面意思是重新读取,具体作用未做测试.& ^$ u1 H1 ?3 @1 @" T1 z' P
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
! a0 u9 O5 M! z到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
0 Q- o/ J7 N# m% B( u2 ^save today.sdb,存盘当天玩家上线记录.: v# n' F8 t# X, F2 \
back up,备份数据库,备份的数据库会产生在userdata目录下.
P* F+ o* C! n# ?
( m, a# i/ [5 o4 }6 p0 E1 E& B# V$ w
DB.ini,DB服务器配置文件.3 C- z I! O& S7 ?
[DB_SERVER] 明确服务器名称., |# p. r2 e" h& U# m; y1 X
FileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.
5 J3 ~- {& F1 Y& f) Q! {) u, oBufferSizeS2S=1048576 数据库的规格5 L* X) S' }4 f1 }* `3 M1 D6 {
GateAcceptPort=3051 DB与GATE连接的端口.TCP协议.( N! ^8 o4 B. K/ @, Y* q. F b& }
RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.* ~$ ?8 l3 r# V0 b+ ?# A9 J) B
ItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.
3 T X5 f' b( z9 c7 v; E; T s
- f& B& h+ L: q0 e0 ] sIPList.txt文件.
8 V9 R, f$ O8 W: R9 q) b) m记录远程GATE连接的IP.一般设置为127.0.0.1; T9 |. T% z5 i) X
4 @: ?; x4 Q5 ~remoteip.txt文件." g. z0 Y$ V' W9 m' S
记录远程TGS连接的IP.一般设置为127.0.0.19 v6 v2 I6 g$ m
7 @6 g/ j5 h/ Z9 C) G) U+ SModifyMagic.txt文件.
9 O$ B: o+ ?/ i) K, G% H6 h9 e0 ~5 e感觉目前似乎没有用到.具体作用有待补充.8 k3 A: r# [5 y( C- }" q
7 P$ T, _$ W: n- D7 @5 T( {
) `* N9 _" [( m# R' o% K+ D
- R, ]' N6 z, ?2 B* @ gGATE服务器.
5 _5 V2 i* D8 d+ l, M) w, m4 R, j) j1 D8 u4 l& n6 z8 G
log目录,记录目录.2 ^& u J$ U( o) U1 @
z; l: |( ^- K; ?& c( F" _
CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.* U/ r5 }' K# i: j, b
[CLOTHES]
2 O# M; n: i9 y8 R4 FCLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.# x0 U1 E* m1 r" \% s
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.5 @% G; o4 A# n: o% E* T7 T- R
CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.+ [' {9 P! \$ K4 w* S3 X( g; ]
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子. k) K2 Z: I; ~7 V( N3 u+ w
, |" G' \+ _1 G$ L& B0 O[WEAPON]
* |" u4 F8 v5 K) e, b7 B3 i/ cWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
* B$ n) a% @ ]WEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
3 H2 F/ Q3 a$ {% ]4 ?0 M' R% {; oWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
4 K+ `* A- \# qWEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以* V% V, g3 w; x/ S* ~
+ [+ z, U" i/ Q
[ETC]
# f/ S/ [6 ?2 ?4 M/ b* PETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
! n! X, t+ V8 |: x7 T' r' v' Z2 j" L0 D2 r( p. `
即使你定义为没有耐久的物品,他出生后还是会有耐久的.$ o" I m+ h8 y/ i# t
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序./ n6 ~, |- x/ l B& c4 g( K
/ Q, Z2 }4 X" Z7 ]& R/ h# ~$ `" x4 i
DontChar.txt 定义不允许建立的角色名." d( p3 c, ^" O7 q$ x
0 O- B6 }3 N+ s& {1 @' \, B& L+ K8 s3 m$ i
0 N; y' k0 t! D* s, Mgate.ini文件,GATE服务器配置文件.这里详细说一下.
* w) ^5 l* i: b; Q: y/ Y7 `
: v/ E/ Y' v5 k! @8 z5 H- C K[GATE_SERVER] 定义服务器名称2 o, U K4 q$ m* f- z
LOCALIP=127.0.0.1 定义对外IP
% _5 ]2 w' S/ K; T4 ^7 uLOCALPORT=3054 定义与balance连接的端口, c; ]; @7 z) H+ R* B
LIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.7 h: _- j! Y: E! [5 e/ Z; a$ p
CHECKPAIDINFO=FALSE 是否收费服务器., [) S3 J+ |0 X$ H* `, `' b. P) X
BALANCEIP=127.0.0.1 定义balance服务器IP
. K7 N- ]- O8 y" | ~/ hBALANCEPORT=3030 定义balance服务器端口.UDP协议.
: {. @" u) c& d5 S& h, r% P% @SERVERNAME=test 定义服务器名
" e) U/ y8 s" r, G- sBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激
% s! }+ o- D2 k+ o3 dBUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激$ a3 H: I) A6 B2 F# s, |' H
0 [/ s; ?% c/ B6 e[GAME_SERVER] 定义服务器名称+ {6 K3 `" Y. p4 ], e& u
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.$ W- X0 b4 f. {; M0 O
REMOTEPORT=3052 游戏主服务器端口.一定要封., b( R; A q9 K1 m/ _2 L1 ]- q
4 R) I% K& z1 F+ F# R[DB_SERVER] 定义服务器名称
# y1 q- h) N* i/ _! K- GREMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
" `9 k6 v& ~7 yREMOTEPORT=3051 人物资料服务器端口,一定要封.
) E/ e! L/ V) g! a- E
; e+ ~% V& }$ {4 f[LOGIN_SERVER] 定义服务器名称
. z- z4 B# Y- f! Y! r7 `. M: \REMOTEIP=127.0.0.1 登陆服务器IP地址.
+ c& g5 P- [! K' t5 yREMOTEPORT=3050 登陆服务器端口
) r6 Z: `3 R: ]/ t6 `
/ c2 N+ |9 v) _3 o4 g$ o/ |[PAID_SERVER] 定义服务器名称 (通常删除)/ v. B( W: L7 c( {/ C; b
REMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)
) V- b, O) A9 k8 C6 y# NREMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)+ O6 a7 L5 f, u. K" _
: X' }0 [' D1 ]6 C" J. e% S D# |' J4 Q* e2 j. a6 R" Q! Q
tgs1000.acs文件。GATE的语言库。1 ]) X# N6 L; I. g) `: n9 u
6 [' Z( P: c# k# S, t5 n/ D& P
Village.Ini文件。定义新手出生地图。这里讲一下。
1 ^; ?' {& ]) }/ ?. H) r" o5 l; ]1 E" w- o
[VILLAGE] 定义配置文件名* c$ t+ Y; K/ m: P1 w" R8 W
7 C/ ^8 i6 n6 k: y9 C( z
COUNT=1 定义新手村可选择的数量' W- C2 H& E6 @0 ^: E) N
% ]3 f, F) c! `8 D) A& x1 D' `NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。1 b4 K' r6 l/ `! W- M
X0=178 第一个新手村X坐标
' [: k8 y8 q4 H+ x# l+ @3 N* vY0=238 第一个新手村Y坐标
% z ^6 h! o3 l/ N4 Q3 A. @SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号. / |; _- G6 k& O: t
|