千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!
n+ p d4 l' j5 i* i$ `8 M6 Z$ \ y0 t/ r0 M* S
1:Balance 网络均衡服务器。" |4 G% f: v6 K0 h1 D4 I6 o3 W9 [* g
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等. z" i- B& b) t; q
3: GATE 网关服务器.$ r; k: d. G$ [ g) @0 _7 A8 p
4: login 登陆服务器. 帐号密码等数据在这里.6 D+ q( b0 \% v' H7 \7 W0 ^3 T
5: TGS 游戏主服务器. 游戏大部分设置均在这里.- G) I' a& }* d) X( x
1 m' Z( N$ l' q: {4 E下面讲下他们的工作原理.- i8 D$ I8 u% Y) E7 g
/ K. e8 t% H' u5 p7 Y& T
首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
% u8 k8 K/ W7 [将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责
* E; j& @% v" O, K2 ?中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,
% O3 V3 b8 F7 O( N) ~: f$ \则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到
. w* N/ M1 g0 U客户端.5 s2 Q6 C+ v3 J9 y" N* M
3 m, }/ f; ?: \7 V* v
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)
0 s! D: M# y; c3 E; G, ~7 h5 D* j( J
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
3 Q# c7 d* i0 v( FDB服务器 TCP协议3051连接GATE.
[; S8 L4 g+ m1 iGATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.' i. ^4 ^1 } `1 B: L. v
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login4 l8 B( h( C" i* P* j
的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
/ Z4 ]$ I$ S- `3 c5 [验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友3 f3 d i: n% }% ?% S+ l3 y x1 \
的误区.
2 j0 ~1 l: X% k) y1 u6 E# D: G zlogin服务器 TCP协议连接GATE的3050
# G. ]" ^+ n! PTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.- O9 U) V8 r2 U' r/ Y1 u8 M
0 A9 f) v4 b. h; J0 P* F4 L; W
/ V5 m) \: W8 d3 [, w; g再讲每个服务器中的配置.2 W9 K" |! {8 ]' ]/ u4 E S/ s9 T T
: R$ i8 e. b+ _- _$ N" H
Balance服务器 目录中的balance.ini中配置
" y1 x( V$ h; q, J1 U+ T" o( [& U/ I n[BALANCE]+ m. w. U/ ]1 x' F" I6 D) {" F
TCPLOCALPORT=3053
' J4 L) a- `4 d2 m q+ l# fUDPLOCALPORT=3030+ W/ I1 D' A+ q2 }& k8 }
基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,% J. m9 b% @5 W6 t% K" E$ @
若需要一机多区,就要双开balance,GATE,TGS。- s6 m0 L$ M/ V7 {
这也就是克星一机多区的工作原理.
- Q5 d. y, h. B( a5 B* h! i但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053. i3 F2 v$ L# E& p
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
% f! x; @- [) `' D配置文件中读取用户所设置的端口来实现一机多区的.
3 b+ @* p/ _8 c2 H g如果你想不使用克星工具实现一机多区,应该做以下设置.( y2 f: P' ` r
复制另一份balance出来,打开balance.ini修改
. t) A+ S, Q4 x4 H[BALANCE]! W9 u. }$ S" q+ c# |
TCPLOCALPORT=4053
5 e/ G6 Z! [: p6 Q3 P0 I% QUDPLOCALPORT=40301 O# H* F+ `- }6 d9 M/ @4 i
这里修改后注意GATE.ini中UDP协议3030端口为4030
5 i: k! N# [6 d; x/ F! x然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
' J3 B t: D( t4 Y9 [" v' z* x) I6 }& A; \9 [
题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下., c Q$ e4 a6 `1 J7 i& R! D
打开windows自带的计算器,选择查看-科学型,然后选择10进制+ y u a; S; D+ F6 _. {
按下3053,再选择为16进制,你会发现3053在16进制中显示为BED* G9 R4 [9 T% \* {
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,
7 E( N7 k2 {7 L7 O4 Y7 Y. i1 |1 A以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D
3 D! ~) b' _' _7 C/ s若是奇数就要加一个0来补齐.
9 X% k0 i# x2 V, M; r% x) K( f
: E- o& Y% k9 M+ I/ v8 y' @" G3 u; n, E再来看看DB服务器。
+ Y$ F7 r t3 l0 t D! t5 j4 R$ j& B; b, M! @" r- E
DB服务器下目录比较多,我们一个个来讲
3 r8 M R% B1 K9 @0 K5 Kbackup目录本身DB服务器不产生,也不在他的目录下增加任何文件,) K2 _$ R/ z* K# y
根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.+ E9 U9 k( C7 K$ B' O% v
log目录,web目录,均是记录玩家的情况8 Y& [( f3 G6 M- g1 f W
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时9 Y2 {( e) K! N6 p! p& i; R
他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因- Z/ s: b3 ?( `% T
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
( n9 m% X8 i/ H, `
& x2 P* T4 n2 G% m! ^% ODB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.# M* V- Q" ~* [
reload,字面意思是重新读取,具体作用未做测试.: j# q; I, N; @$ n: u
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
+ s& ~8 X+ }8 J. h8 `! @到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.6 H8 \, _6 ?3 e) J: }
save today.sdb,存盘当天玩家上线记录.8 K4 g L; ^5 m% C# Q
back up,备份数据库,备份的数据库会产生在userdata目录下.; q1 T: J! }. T) j+ S
8 v; C/ A8 v+ K7 }& V, |. M
: R. C- f& n! e' `1 R6 \0 q7 @; kDB.ini,DB服务器配置文件.
' C% A& h. i9 P/ S[DB_SERVER] 明确服务器名称.6 z3 J- E u- |0 `: a
FileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.. V9 R: n$ m; h
BufferSizeS2S=1048576 数据库的规格
" z& n% H; S9 r1 RGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.; N) {. d. t" F( C' |+ w
RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
: S9 C3 n1 `6 ?; l5 k6 P9 aItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.5 b& k: i3 O7 Q2 i
# |1 V( y0 ~: m6 j- d: I& w* _7 u
9 A( u/ P$ w( n3 w7 f# f9 m$ PIPList.txt文件.
$ a+ k1 j$ r; H9 b! G F记录远程GATE连接的IP.一般设置为127.0.0.1
0 S4 e7 S5 ^' R; V* y" v' W- T' `& G& q2 i; k1 N8 G8 c
remoteip.txt文件.$ h% H4 a1 Y" {9 R- v* J3 Q( G3 v2 _* F
记录远程TGS连接的IP.一般设置为127.0.0.1
6 d/ t6 [2 b3 d& W! M$ j
/ n$ X7 }& F$ ] [ VModifyMagic.txt文件.
/ i3 T! w2 J \' L% I% C感觉目前似乎没有用到.具体作用有待补充.
' o/ x W7 F" u c* o6 k* L
2 ?6 j0 H; O9 J& G( k s; r0 Y* Z) P/ \* _1 \4 M: a) D$ k
( Y8 U6 z! R0 W& |) m
GATE服务器.
& H8 f( X. Q% G6 g7 q& B1 R- b+ j V9 u' S4 n1 B4 v4 a. _, z; Z
log目录,记录目录.; T M7 E O. p
1 h( u! m0 ^! _CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
$ |$ W9 x; u% D" {0 s& E( [[CLOTHES]
4 v" N; t& K( z. `CLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.; C7 l. [7 B4 C3 L5 Y& j6 s
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
* b6 j5 R7 g* B1 [$ c" \CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.6 ]- \" B5 C5 s* `( d; o
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子
. a3 O: Z8 j& C: [' D$ B* q2 s
6 f8 Y+ t% m, C[WEAPON]
/ k) ~) E4 W1 l& N8 ]/ @, \WEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
% z g4 G) y! }% `' w7 WWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以- r- f, {' w, B5 r
WEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
* k, r* t4 d5 E" z7 D. uWEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
2 C) s9 |* n0 q7 R& i
+ P, c6 ]! o$ @* ]- c0 s) z8 L+ z[ETC]
0 k" i; ]! U9 X: Z4 m, [, g$ sETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
/ F J s/ v& y( @9 K
+ A& N: D" _$ k" t; _8 g# Z即使你定义为没有耐久的物品,他出生后还是会有耐久的.
2 k! I7 W# k0 e) G0 Z5 S+ ^8 M6 O即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.) ^) o; k7 Y2 b+ I/ V- `2 V
I& r+ i: x/ _' a- r$ p# n7 { w
, \! r" i1 V8 E" J' {4 `' I, lDontChar.txt 定义不允许建立的角色名.
% L9 W$ r* z. A C8 X7 t- K! p3 I$ H$ l( ~+ A" L/ B$ f( \# j J/ i4 }
' }- k) ^. d" {% ?; Q+ E$ x5 m1 c
gate.ini文件,GATE服务器配置文件.这里详细说一下.8 w% N% M+ D: V
: \( O; z; f- I" x1 K( {# ^" |[GATE_SERVER] 定义服务器名称
E" m( D$ f5 s# G8 N- g0 H( A9 \LOCALIP=127.0.0.1 定义对外IP
) Z9 V4 L1 C; k3 p8 ~! m1 ULOCALPORT=3054 定义与balance连接的端口" W7 q% Q# R) u4 G V4 Q; l7 p l: R
LIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.8 G- u/ X& V$ N7 N
CHECKPAIDINFO=FALSE 是否收费服务器.5 Y, ~ }* Q7 I1 n: K9 z% ~+ c+ {
BALANCEIP=127.0.0.1 定义balance服务器IP3 f, Y9 {9 m0 t
BALANCEPORT=3030 定义balance服务器端口.UDP协议.) Y: G$ v/ M( v6 W+ [9 a
SERVERNAME=test 定义服务器名
) _4 {3 p6 X- b# t) ^0 J. d' @* g' LBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激+ a: v+ e1 }$ P3 ^6 Y5 m b1 G
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激2 S3 g/ B8 W$ d' W3 \" W& n
2 W4 W, N1 } v) X* C3 H6 i8 d[GAME_SERVER] 定义服务器名称
' L0 d. B) Z. _' RREMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.
1 C: F) f9 Q: t" _6 Y1 AREMOTEPORT=3052 游戏主服务器端口.一定要封.2 ~: K6 _" ]! A- I3 N
- A s* B' |6 E1 n$ z[DB_SERVER] 定义服务器名称& X( y. e; L' u% @
REMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
/ W9 x, p9 v; a; Y1 O, {REMOTEPORT=3051 人物资料服务器端口,一定要封.& _7 d! N. u6 X4 y b8 E
# m+ V" X) _9 d7 }[LOGIN_SERVER] 定义服务器名称
; |6 d( z5 X. C) ?+ F" dREMOTEIP=127.0.0.1 登陆服务器IP地址.
( W: j# C7 f8 Q1 p. t& pREMOTEPORT=3050 登陆服务器端口
9 [+ ~" {+ o) v3 A4 b2 \
' p' X7 A5 d, F8 G c% S% u[PAID_SERVER] 定义服务器名称 (通常删除)
) i: t- Y8 D4 m+ eREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)6 P6 L" x2 q- H6 `- |5 o
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)# ~( N9 w% f. \( Y
5 u6 W2 }$ b+ O/ r- x+ R; \, c2 n
tgs1000.acs文件。GATE的语言库。
/ ?. N! ?, d+ s; y# x# Q) x$ d+ e( O& f! k+ B4 ?" C. a0 d/ k
Village.Ini文件。定义新手出生地图。这里讲一下。
1 @! `. M7 M9 ?' `
! S" x: j5 A+ t% ~6 f/ k+ k[VILLAGE] 定义配置文件名
, ^( G" @0 p5 [* |6 v" ?- h9 h
$ L! R9 ?) C- ^1 [( y; L! [COUNT=1 定义新手村可选择的数量6 B$ x! ?7 d! O* |
$ ]) j& {* o" s8 h. H
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。( d1 h1 z- G: d8 [* v5 Z
X0=178 第一个新手村X坐标
) |1 p; z# U6 c: _. H! uY0=238 第一个新手村Y坐标% U$ t' p5 X9 S a2 p
SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号.
* }8 D1 R& `+ J! _% [/ | |