千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!
. d* G* ^& \: _( X
0 k! F( o# J o/ h, ]; `- G1:Balance 网络均衡服务器。& w3 J d- U. ~
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.# L, n- o, H' s3 w3 |
3: GATE 网关服务器.
& g$ f/ a5 z* d4: login 登陆服务器. 帐号密码等数据在这里.
0 ~4 C7 Y, C7 B2 H% _5: TGS 游戏主服务器. 游戏大部分设置均在这里.
. ]1 |. S$ k2 V% f1 @6 ^. n1 V3 }8 I6 u# H* C5 v, y7 o
下面讲下他们的工作原理.6 u* Z- [) z+ X/ d
; {) Q0 r. J6 v; j* {9 @首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,( C( \9 S2 R1 P; u7 m/ ~% F. ^# ^6 J
将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责
: p }- W! @2 X中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,& z8 V6 _% C) T3 S; f# {# G
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到
7 R/ O1 ?/ R5 `) E8 [' z客户端.
) p9 Z% ~- @0 q: ^( q- o# x& c" F- j
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)) a2 t* ~1 g) { L& D4 d
$ }% w1 ?' x) T" o
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.% _$ G1 G: K& M& ~
DB服务器 TCP协议3051连接GATE.
$ F4 Q" F8 T8 u7 L2 r% o3 A/ xGATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.. A8 F$ e' @7 H R( T
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
/ P6 t* c o0 ]; J: l8 F的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
* s; H; p, p4 G验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友/ F: m' l3 z6 u: ?4 l
的误区.
1 e6 r+ y* |6 h i0 alogin服务器 TCP协议连接GATE的3050
w; o( l2 b& E# [% _6 G* lTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.
- }) H$ Y/ Q' m' ]0 e
$ k9 v9 L: c, D7 X, f+ x0 e y0 k* v- _4 T! t4 M$ P+ E
再讲每个服务器中的配置.
( d0 k3 m% P& C, a, F4 e# B6 |
Balance服务器 目录中的balance.ini中配置
- c+ c" ?4 G6 f. j8 q[BALANCE]5 Q, {2 w1 q3 U! ~/ r$ Z# v
TCPLOCALPORT=3053
% s' S/ q# g) `% v" H5 WUDPLOCALPORT=3030
- |0 F( ]/ P8 j& f# r基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,) ^% ^* f+ R1 }) D+ @+ F3 H' s5 h- ?) J
若需要一机多区,就要双开balance,GATE,TGS。- Q3 f# R- W7 [# o$ a
这也就是克星一机多区的工作原理.% }3 W- ~$ b* u8 m& G- E
但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053. J( i @, f; ^" B. I6 v
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从* t+ u4 i* w2 F1 ~8 }; c+ {
配置文件中读取用户所设置的端口来实现一机多区的.* D* v- ]9 E; u+ K* }
如果你想不使用克星工具实现一机多区,应该做以下设置.
2 `) R* m8 [% t. m1 p复制另一份balance出来,打开balance.ini修改4 I, D) b4 g, M/ T4 X4 i6 O& z: ]
[BALANCE]( `* ^" |2 V; s6 O8 |: X3 m
TCPLOCALPORT=4053
5 Q: R3 h. u9 ZUDPLOCALPORT=4030
5 T a+ C2 A. j4 u5 L) K+ y# g$ R这里修改后注意GATE.ini中UDP协议3030端口为4030( X* b) ~: K _$ @
然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
; w/ V6 X) Y$ h* t1 }4 M+ _' ~4 s3 b$ e5 b9 C, t/ D; U
题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.; O3 ^6 D% u' J( g
打开windows自带的计算器,选择查看-科学型,然后选择10进制/ m& S9 p2 x' W( N4 k
按下3053,再选择为16进制,你会发现3053在16进制中显示为BED" @ _( a' F- w( v0 g C" B% d
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,
3 v# L' V) A& O以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D
5 r& i# x, y+ ]- B& l8 }若是奇数就要加一个0来补齐.
* T' V2 Y* v4 ^, R& A+ }; V! J3 q% L( E: q( \
再来看看DB服务器。( _. b4 s. T3 r+ f, t) b: h
8 F2 w3 g- Y1 F0 x* k$ o8 T! [+ JDB服务器下目录比较多,我们一个个来讲- V8 }7 p9 @0 n! Z4 ]- k' J* a
backup目录本身DB服务器不产生,也不在他的目录下增加任何文件,
, Z6 a: H- O3 X& T根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
' I% m' G1 |; _2 Z6 n+ Llog目录,web目录,均是记录玩家的情况$ R1 \. `$ l8 o4 W6 A- O5 }
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
( {! i) s/ y- R9 M9 T他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因% l; Y# ?& @& E8 ?4 p
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.' l9 s. ]0 H# c$ z/ [ I
0 A8 b" D) n8 u! sDB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
* _. ?$ Z9 p3 I7 Ureload,字面意思是重新读取,具体作用未做测试.
& v4 B# {, h2 b1 naddrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
9 Y% e* F4 C% v8 _到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.* s% z/ t( B: Y) t6 N
save today.sdb,存盘当天玩家上线记录.
; S% v' d& S: [$ J1 Q% o- F% kback up,备份数据库,备份的数据库会产生在userdata目录下.
/ @* [2 A& Q# f/ f, f/ O0 D6 V' t# m% e4 w/ h; }+ ~+ S2 u0 H, B# K& P
- m; Q9 F: h1 f9 s4 aDB.ini,DB服务器配置文件.
2 a( U% I- D/ o[DB_SERVER] 明确服务器名称.
" J9 s( p7 Q1 ^% b) N" w0 t1 eFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.! W& k) `$ O, P- W; z1 ?. V3 X; W
BufferSizeS2S=1048576 数据库的规格
2 C. Z: D2 V2 hGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.6 P. Y0 ~( x# O4 _9 X5 W' d/ |
RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
# z- v0 A" e. C+ ^ItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.0 l, h1 H5 w2 N+ u- Q- X" B
7 ]$ L, Z; I2 R8 ?) l2 v$ ~$ V5 L( h a9 ]
IPList.txt文件." m' ^, Q9 w2 L. x- q6 e
记录远程GATE连接的IP.一般设置为127.0.0.19 f) U5 R' m+ H. H( V/ R( w
! k$ \1 w+ G& v' |; o, {
remoteip.txt文件." I' C; P, q( g; x* s
记录远程TGS连接的IP.一般设置为127.0.0.1
% i( v. S, `7 x2 D; C* m5 i
$ c# M! F" R- _, ~ModifyMagic.txt文件.! ?/ m- U+ S/ r" ^; a; Q0 C
感觉目前似乎没有用到.具体作用有待补充.
- k. X7 ^+ }0 k" f d! A5 ~
- R6 L/ b$ G9 ^( A- `% n( O' R: r3 h$ R# K# i9 p2 x
% S# N8 J. b" C2 g( b5 B x$ M$ {GATE服务器.8 J5 x* h6 R* f0 [, ?# N0 {4 e
0 y- z0 R: J5 Y4 A' T6 l' |log目录,记录目录.
0 p, [$ g1 Q2 s. E: e, k
6 `& ?7 V. G/ Y3 \5 b0 SCreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
3 m' E* q B: ~( V[CLOTHES]
$ Q) F k! \% h1 s% V2 bCLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.+ Q: \" t7 ?0 f& c
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
" u9 m5 _1 X9 }6 [" eCLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.
8 I, m4 }8 ]3 p* sCLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子
_+ V. ]0 Y+ H& u
) R9 ^8 X# z7 i# X" E w6 D3 [[WEAPON]
8 z. a9 W* F) P* l2 Y, \WEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
! y/ D4 L9 J4 l! v3 lWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
, L/ B& o4 i4 j+ q. o) ]WEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以* |$ _) H2 j3 @- o
WEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
) d, K( g" ~" z8 x* ` X. d- Y$ o) ^ P7 M: m+ b7 E+ @5 X
[ETC]
0 A" q$ ~, M/ y! `3 L: p& O6 ZETC_01=五色药水 新手出生后拥有的物品1.这里要说一下; {+ Z1 u5 T; Z
3 j3 y5 d, a8 S S: h2 F; r# V* s
即使你定义为没有耐久的物品,他出生后还是会有耐久的.
3 G1 Q( U1 ^0 d+ {即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.6 b3 M e1 J8 m% Y0 R
6 s1 t" {' F6 @8 I8 X$ Q6 F( d
, V0 ^; B/ C( Q' o/ S4 m4 xDontChar.txt 定义不允许建立的角色名.
+ F+ ]8 G5 v5 v& ~
7 T/ N9 C- G7 Y4 W' N L( H; m( A. r. h- b
gate.ini文件,GATE服务器配置文件.这里详细说一下./ ]- }& y1 f1 L) t7 [- a& P
" S. t& T' I, Y- [5 c o% R* \
[GATE_SERVER] 定义服务器名称
+ q; S9 N! z& q0 aLOCALIP=127.0.0.1 定义对外IP+ z# {- U6 ^+ Y
LOCALPORT=3054 定义与balance连接的端口
* T9 ^+ a; l2 G- V$ XLIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.9 k# M ]1 A3 z6 M* m& F
CHECKPAIDINFO=FALSE 是否收费服务器.
- U5 {4 o2 I6 wBALANCEIP=127.0.0.1 定义balance服务器IP
6 Q1 t/ x, G& \BALANCEPORT=3030 定义balance服务器端口.UDP协议.# W8 x8 F: e8 `# G" y
SERVERNAME=test 定义服务器名
: w' y7 m' X/ @ s1 f. A8 KBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激
0 T4 Z4 a" \% `- GBUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激
4 U1 o$ `( ?5 e4 F
% [ V- y2 {' e2 n c8 D+ g[GAME_SERVER] 定义服务器名称
6 ~) ?5 D. p1 C1 t( ^REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.% G/ ]/ s. l) R4 A3 ? D9 U+ B
REMOTEPORT=3052 游戏主服务器端口.一定要封./ q5 t# w0 ` x5 C: m
& f0 E# F) e7 H+ |4 I) ][DB_SERVER] 定义服务器名称
- ]5 J/ V) r vREMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
) n) y% e4 c/ U7 A: Z+ x/ AREMOTEPORT=3051 人物资料服务器端口,一定要封." M' W+ P% }$ h" Q
7 B7 ?9 Z8 i* q; U( E1 r; c
[LOGIN_SERVER] 定义服务器名称
: K" O, U, z% d) j- `REMOTEIP=127.0.0.1 登陆服务器IP地址.
0 A3 {2 c0 F2 c; ?1 f" V) vREMOTEPORT=3050 登陆服务器端口
8 E/ L0 G; ?3 ~( Z( s C3 B" B% w' W. p
[PAID_SERVER] 定义服务器名称 (通常删除)
" U" [. ~4 w" d* \8 ]# iREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)
( X$ |2 }, y; ~REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)5 g" ^( f5 J9 E
* ]* m8 Y4 X$ w6 Y
+ A D9 n7 B8 E3 A$ a+ v1 Ytgs1000.acs文件。GATE的语言库。4 K; L6 w9 U( p
{! R" t' m/ `$ Y* ]' eVillage.Ini文件。定义新手出生地图。这里讲一下。3 b6 w; R( y" C) O
. Q& I7 c2 n/ r& i! B
[VILLAGE] 定义配置文件名
0 z! W8 H- [7 w1 l) C% T. Q8 @* l9 D6 [ P- f" L
COUNT=1 定义新手村可选择的数量' `$ `; k( {/ f: t3 l+ J
o: c0 k- l3 H6 N3 E, ^& H/ c# SNAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。
' l3 Y7 L+ H; r* B! a* |X0=178 第一个新手村X坐标
% a! N! e# _0 I! m- y9 aY0=238 第一个新手村Y坐标
0 a% F- d! U5 }) wSERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号. % k3 v! V, y' z# ?0 n
|