千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!
?! \6 h) y6 S! K
) c& L- Y) h ?0 N4 V1:Balance 网络均衡服务器。/ X! d0 d' d6 p
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.& U8 `- i9 ?5 I% X1 i' q
3: GATE 网关服务器.
- k R3 M. ?! N+ V" v4: login 登陆服务器. 帐号密码等数据在这里.0 n5 @2 o* x7 I" y2 P
5: TGS 游戏主服务器. 游戏大部分设置均在这里.
5 n e9 x% i; W$ y: H6 R! o2 T( l. Q* q+ `4 }* K2 P
下面讲下他们的工作原理.
0 A& ]( [" d0 {! a. f( C4 P
6 F0 n! U% G& h7 ~1 F i- {首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
) t$ U$ u" e: _8 U+ l将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责
0 X2 P- X s/ d0 N- A+ i; O. }6 t中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,0 y- F5 m+ w$ J
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到, |' f4 c% l1 D# R* X
客户端.
% x4 {, H% ^/ G. m4 E9 T4 G1 |* U: w5 P1 c$ D/ H" p" H6 d1 D
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口). V+ j3 H8 g3 k: V7 m% h
) R- r7 | W6 z) f; a+ y& ]Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
% l [+ t% W1 U4 `& PDB服务器 TCP协议3051连接GATE.' r; s3 u- u9 a5 P
GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.
9 V7 L" Z; X) R( o" D$ W3 h& OUDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login# w6 u2 i E1 n
的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡% C5 ~( r9 Y" I* f# _+ d" r
验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
* W4 _0 @0 g ^' Z& q! v的误区.8 I p) e U P
login服务器 TCP协议连接GATE的3050
! A& t( M# S( KTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.$ G0 W1 h* b$ x5 w9 z
6 o/ W- F; I) k- A8 f! `9 y- f0 E( @) d F; u- T+ [* R, ]) n0 k: r& w& Y
再讲每个服务器中的配置.
6 N6 o" U& A+ M8 {/ c
$ K5 a, x) T1 [ |% M5 d1 ~2 BBalance服务器 目录中的balance.ini中配置# Y+ V# ]' }1 h! Q. x
[BALANCE]' S( k9 F. ^+ ^
TCPLOCALPORT=3053( C, J5 w9 W! O
UDPLOCALPORT=3030/ p, [6 j6 a# H( A
基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,$ y/ Z: V( E4 K# t0 O* M
若需要一机多区,就要双开balance,GATE,TGS。
6 y7 Q X/ x B9 l7 A5 F这也就是克星一机多区的工作原理.
# z* d+ U8 V6 k# N但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053
. F/ H* P. `& X8 X+ B c! ]他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
" }; F9 i% N9 @% |: O D配置文件中读取用户所设置的端口来实现一机多区的.
4 q1 S/ A/ P! Y/ g. ~" j8 D如果你想不使用克星工具实现一机多区,应该做以下设置.
9 r! _7 T* \* W5 {复制另一份balance出来,打开balance.ini修改
( H" o$ O. N. g[BALANCE]
* C# O e+ s$ t& ?& w7 O, qTCPLOCALPORT=4053
! E+ Q* U" |% C4 m; r" v. jUDPLOCALPORT=4030) p2 ]# I2 a- v7 s/ t+ T
这里修改后注意GATE.ini中UDP协议3030端口为4030
- @5 |8 C6 ^& w然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.) R. P2 B: E7 ]$ V* B
" p z# f2 |# \3 r
题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.$ k" X* k. `! u5 q& G5 B7 C
打开windows自带的计算器,选择查看-科学型,然后选择10进制
4 [1 i G( Z4 T$ ?, g按下3053,再选择为16进制,你会发现3053在16进制中显示为BED& a' x5 s+ `8 w8 g$ c' k# x# U
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,
, k$ _& c. [6 n, l以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D6 @* N# S0 R$ K# Y
若是奇数就要加一个0来补齐.5 K. |7 Y! w3 V2 h9 u" X' ]
! @5 x% j( f# j
再来看看DB服务器。
1 F# j! p# Z2 \4 L0 a( S1 a/ ^6 k* f! y1 h" h
DB服务器下目录比较多,我们一个个来讲8 A; {3 I4 e5 c$ j& m0 g0 ~: v. l# {
backup目录本身DB服务器不产生,也不在他的目录下增加任何文件,: J4 O" `3 q& y7 ~+ e: t. I
根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.0 L2 |. H S; J" `- o- j" H
log目录,web目录,均是记录玩家的情况
6 n2 M$ e+ u: O( a1 ]3 huserdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时, T* X5 j! ~. W3 {$ N. f- P
他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因& ^4 A. X7 M+ n0 S# U. s
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
2 G/ G# E* ~ L9 k! @* ]( {8 Y4 p2 K+ l& \1 k
DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧. d( r/ B! s% U! f. h
reload,字面意思是重新读取,具体作用未做测试.
# ]0 ^" `5 s2 p6 k5 N. M$ haddrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,/ F$ r4 H" h5 i5 K5 Q, `5 J0 W
到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
! V0 F+ R9 c( h; I9 Wsave today.sdb,存盘当天玩家上线记录.+ n2 ~( C5 W: u
back up,备份数据库,备份的数据库会产生在userdata目录下.
. P. K2 G! v$ C: G- ]0 C( @
K& E& k3 F/ `) S( T2 U$ T8 g# E1 i% }9 i+ j+ l, Y$ i
DB.ini,DB服务器配置文件.
1 i+ x6 L( L2 i: @[DB_SERVER] 明确服务器名称.
k9 ^! @" ^$ V7 q! X0 kFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.
. w( ~) F& F% @( [BufferSizeS2S=1048576 数据库的规格
3 j& i: C+ | J8 V6 P( @( KGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.
% n% V8 |, h3 D% F1 q4 xRemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
0 B9 m# y) {4 j" ]2 X% ~( e( ~# U8 {ItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.- S$ F1 d& i) R+ s8 c! }4 P
0 O1 o- `, x! S+ O+ w' _+ o# B# s
7 w% s; T( b" mIPList.txt文件.
/ P6 n% k j8 M7 `& z Y5 I7 K* r: |2 l记录远程GATE连接的IP.一般设置为127.0.0.1
, T6 ^6 ]; a. n& N: E
6 a' e: _" v8 W/ a6 U% `3 ~4 x, ^! {remoteip.txt文件.
t- J* t2 U! A) Y1 `4 e记录远程TGS连接的IP.一般设置为127.0.0.1
* W; s! i* I+ e1 n! J
0 w1 P$ Y; s9 O F8 m$ QModifyMagic.txt文件.4 B4 ^6 o/ u5 \ B2 x7 Q* a
感觉目前似乎没有用到.具体作用有待补充.
6 W v j, Q! y) q; A, s$ L; b6 h: k/ b! W% i! c1 g' {- o9 ~
4 V& l3 H' Z9 C" Q" l/ B9 r
* o; @/ ^) |5 k1 [; e. P' {' r$ Y) D
GATE服务器." z4 M2 c: a, \! D
! M2 [+ h, Y% B6 k2 E8 ]/ x7 ^: rlog目录,记录目录.
$ Q c5 W) x# i9 E. |( S2 i2 c1 p% a/ I
CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.1 n1 ^! Z0 L$ j/ E8 Q% p/ y
[CLOTHES]+ A/ k! ?. m) o. [# A; Y
CLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.
$ P H9 V: R3 t$ f6 NCLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
% `( ~, _, u e/ lCLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.
. H, C( X8 p* l! t: [1 s4 {CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子+ U% d- J- b! L
& u- W- |+ \) H[WEAPON]
+ @" j. l; ^% L- a: G8 yWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以, \- U3 h0 K: F) D
WEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以! ]% P! m8 k6 g: `8 [5 g! J
WEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
% L) Y0 e& ?) s6 XWEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
$ ?& U+ B1 ?( d' S! v/ _
- J5 X3 b$ {, I" X. S9 k2 @0 ?[ETC]) b9 E" E$ A# [ g" j; z$ l% Q% v2 V
ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下( A5 ]0 d4 ]: @' \
6 D+ Z( F1 B: S( u& x, C
即使你定义为没有耐久的物品,他出生后还是会有耐久的.6 e* n A( E: R1 ~, s* f) e8 r
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.7 O- y% W* Z( J x* [
# d! M) U4 }# [* _9 p/ ~- f6 r) V3 _
. Y% e. z2 A) R% H; C
DontChar.txt 定义不允许建立的角色名.8 o/ d9 i" N' X8 Z+ Q6 b' A
% W6 ^7 }! f' T* |3 {8 G' X. a' t* `
* w4 f/ ^! }; c4 B ~gate.ini文件,GATE服务器配置文件.这里详细说一下.
1 t2 u5 Y, ?/ [: z, ~$ E. V
7 M2 X7 a3 q' p1 y3 Q" ]" n9 V[GATE_SERVER] 定义服务器名称
: V' _: C9 U! G* g% d% [LOCALIP=127.0.0.1 定义对外IP' S/ J$ a& L1 A3 c
LOCALPORT=3054 定义与balance连接的端口
: A0 t; q Q, v6 @LIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制. T w, U K+ l% S
CHECKPAIDINFO=FALSE 是否收费服务器.0 C& O$ T0 M& B. H: p% M. D0 H( ^
BALANCEIP=127.0.0.1 定义balance服务器IP0 M% G4 o# H. C* f
BALANCEPORT=3030 定义balance服务器端口.UDP协议.
7 D. t% X( j/ u( S( e, `SERVERNAME=test 定义服务器名) n( S# z- o0 M6 n
BUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激/ l, X0 \ o% b6 F$ g
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激
) K6 J c" `( {0 q; p
! |3 f& y% w! x2 d[GAME_SERVER] 定义服务器名称
0 w/ b7 ^+ P* x9 O# F- X% b9 XREMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.7 g+ i3 w: X e1 A+ h! L
REMOTEPORT=3052 游戏主服务器端口.一定要封." @* y1 p" S! \- n% i/ B7 ^: h2 U! k+ E1 `
: |9 l6 _4 } V, Y) a
[DB_SERVER] 定义服务器名称" R' G5 O# V3 L3 |
REMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
7 u: {) B* p; oREMOTEPORT=3051 人物资料服务器端口,一定要封.+ |, q/ L1 U9 Z. A7 n* ]
; o# P; B4 c1 [+ D/ V# O[LOGIN_SERVER] 定义服务器名称
0 ]! e! k3 `2 m7 b% TREMOTEIP=127.0.0.1 登陆服务器IP地址.
* \ e+ R8 K. Y4 q% j) R& B- YREMOTEPORT=3050 登陆服务器端口
: `$ d- h! e8 J. t6 X7 l0 f$ m5 v
8 G/ `; ?, J% M* s[PAID_SERVER] 定义服务器名称 (通常删除)
6 v5 N6 x" Q3 G! `+ ^REMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)" A- i' _) E% n; U. h
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)
! u: g% H- ?; u- C% D- H" T, h3 A, I% b; ^& u# t; t
% R, ?: S9 V) ~9 F
tgs1000.acs文件。GATE的语言库。
2 V- L# Z( l' @! `
: l9 ^$ ?/ J$ U' q9 o3 IVillage.Ini文件。定义新手出生地图。这里讲一下。
/ w. U' X$ N) O7 ~4 S5 B3 B
& G7 S7 l/ n) d S9 j! d[VILLAGE] 定义配置文件名
5 \! y/ ]* o @ q( g" n
% A0 E% l. O$ J# C, KCOUNT=1 定义新手村可选择的数量
# z9 ?2 z/ {9 T& r- q2 q4 a( V2 e, q+ d% b$ H/ v
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。+ m+ g) s9 T7 {6 M, K' J
X0=178 第一个新手村X坐标% U9 A* P$ C8 Z, S5 |2 E- O, O6 b
Y0=238 第一个新手村Y坐标
8 c) `8 M7 l/ E2 GSERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号. 5 l, Q' `6 C6 n. k" t, ~2 q
|