千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!, W2 i. _# `5 z- `# M) w$ A! T9 s
: k, k v* F V1 o) K1:Balance 网络均衡服务器。
+ V( _9 d, {, E% v" t2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.! d% x& P+ u$ `+ X" g+ |$ D
3: GATE 网关服务器.
* _8 o# n8 M! \' R J# W4: login 登陆服务器. 帐号密码等数据在这里., j6 e+ O# K6 X+ o& E! d- H" `, W
5: TGS 游戏主服务器. 游戏大部分设置均在这里.1 i/ N4 v v" [! o2 u) G: f: y
1 e- T- x; _5 U下面讲下他们的工作原理.
' C8 K s. z2 [0 `. h8 k( I# i3 V" y M' V& K
首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,% o4 V% x( f4 \! _& ~
将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责5 `" i; Z/ p, d0 N0 H( c
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,
V& h8 [% P2 h- p C0 G" x- ~+ J则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到; ^) h' v3 L6 }+ }4 Q1 N; |
客户端.% S, g# w/ W1 l
" T7 f& N; y( _0 j* U4 E' [4 c再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)$ M: r; k3 j. F% f
7 T2 o# e. p5 c5 e5 pBalance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
) G% K) J; U/ Q: R: L1 K* ?' TDB服务器 TCP协议3051连接GATE.% O* A5 e1 ~( w7 H* M: D; r" q
GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.% |5 @$ U5 @# w" w! C* ]' {
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login- k0 }# j2 _) i* e
的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
- a$ X$ J' G; \% Y% {# t验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友2 T; P0 s/ K3 u9 \; U0 K- f/ ~4 X Y
的误区.1 |; D- O) e/ Q
login服务器 TCP协议连接GATE的3050' R7 ?7 }; `; t# ?, P7 O
TGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.8 I: g+ E( Q0 ^6 J
6 E H" w& G9 R1 B2 h6 S* x H
, h# Q% W+ Y8 q# t7 v
再讲每个服务器中的配置.$ U# A0 u, u4 Z% A5 O, l* Q5 {) N: v
' ~2 n+ W* l9 U) |, r
Balance服务器 目录中的balance.ini中配置3 Z Z+ @+ K3 z d' Z/ R( `' y
[BALANCE]% z' W% u7 m1 ^' o
TCPLOCALPORT=3053" ] X" N3 K7 e- A, [
UDPLOCALPORT=3030
9 ~+ y; @5 n9 K& [, t! Z基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,
8 P5 y0 I- G3 s: \- e+ D若需要一机多区,就要双开balance,GATE,TGS。) T: ]9 D7 h7 N& e( ]" t2 L% H4 r
这也就是克星一机多区的工作原理.. p; i4 B2 g; }5 W) E* v7 s/ t
但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053& _# X7 L2 _' ^
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从2 R" ^# V" U! `
配置文件中读取用户所设置的端口来实现一机多区的.
8 p4 J5 y6 J5 {& U7 n1 G如果你想不使用克星工具实现一机多区,应该做以下设置.
+ a8 B- u# D0 j- s' s复制另一份balance出来,打开balance.ini修改: x7 v0 Y, d, H1 M3 a2 ?$ r
[BALANCE]
/ b7 R+ Y' S. f+ r7 S- nTCPLOCALPORT=40539 ] U3 i7 t! f% }, K% ` C
UDPLOCALPORT=4030
0 ^- W! z; u6 ]1 `# z; R这里修改后注意GATE.ini中UDP协议3030端口为4030
/ N9 _: U9 o4 {, e8 V3 K然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了. R( E, \) B" y6 U7 G( \3 Q" R
2 e3 q' g" ?- m" w' [% _, ]8 A题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.
% R, N. n. a' B7 S打开windows自带的计算器,选择查看-科学型,然后选择10进制3 T( I( n& S4 D% P6 {
按下3053,再选择为16进制,你会发现3053在16进制中显示为BED% @! p) K, \% W8 d5 z6 Y; @ m
但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,
# G* z1 }, D: d+ m1 ^以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D7 ?, X5 `4 d. }; p$ }+ M* v2 `
若是奇数就要加一个0来补齐.; x* Q1 L( H& j) p
- Q2 B/ o' A+ [( W
再来看看DB服务器。
; h. Q: ~9 q* {. i" H* u: e/ V9 T$ H S( ~
DB服务器下目录比较多,我们一个个来讲
3 u2 |1 P1 |! D9 gbackup目录本身DB服务器不产生,也不在他的目录下增加任何文件,
u" f M, Q, C根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
3 w' {- u( P6 Z1 e% V7 ylog目录,web目录,均是记录玩家的情况
! K8 O B9 q# l4 H ~1 R9 @8 E8 H0 Fuserdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
( C* n- e7 T1 e+ i5 j/ [他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因
: t4 H- C4 D3 L5 j) o5 {还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
1 |/ A; [) x" z, R+ E6 w# E! N
DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
% s. ^. P! M6 Y7 i9 jreload,字面意思是重新读取,具体作用未做测试.6 m0 ]" K# o6 `3 l
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高, ]5 W( G4 r9 J, {
到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
( }7 ]+ @6 t" x: a& r) G: Nsave today.sdb,存盘当天玩家上线记录.' h7 [: E0 z; ?7 s+ U0 M
back up,备份数据库,备份的数据库会产生在userdata目录下.
' W V. J1 ?7 L3 O9 R! H
$ p5 a) u: D! A2 V& O- q- s
5 v5 N7 }3 E0 C Y' pDB.ini,DB服务器配置文件.6 F3 A ~! u8 r9 |# R7 |
[DB_SERVER] 明确服务器名称.
% [! l( X1 [- d) U. @+ g% @ qFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.
O7 Z, p6 K& k2 a2 I6 J- ~- BBufferSizeS2S=1048576 数据库的规格
# ~- F/ e, j+ i" ], ^/ @, oGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.
@( i, p v2 n2 i9 g- M" _1 M6 X2 dRemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
- T" P; w; \( O% y6 p1 j- LItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.$ C! a- b( [( q/ @+ |/ H Z* i
" U) }) F h1 z- q/ a1 n( B& t6 C* B; \) B9 Z1 Q9 B
IPList.txt文件.
' A6 i( {4 }* }; _6 ^记录远程GATE连接的IP.一般设置为127.0.0.1" \9 V, d9 O, P8 p! u m, _- r8 }
, w9 i- w' V: Z z, f2 W$ y+ a
remoteip.txt文件.
" h7 @: U% C) ~% g记录远程TGS连接的IP.一般设置为127.0.0.1, O% Y( y0 f. q* _2 ?; u) h7 r7 U1 O
4 b* V" y* a1 b" FModifyMagic.txt文件.
0 I; `2 D; K: ^4 ]" f感觉目前似乎没有用到.具体作用有待补充.
0 L# l0 [% S" f) V. W0 B+ B9 y" t5 g( q9 y* P: K; K
: P# z" u( V0 d0 B; M+ r4 ]0 ~+ F1 j
l9 q- }7 u( z3 pGATE服务器.+ ~: R$ I; m1 ~- `5 V0 m
, t2 F8 g: I; n' c
log目录,记录目录.& s. U7 u$ t7 j
1 F2 J9 E2 b6 H( m. bCreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.+ }! N( m: X6 Z0 R$ |- G
[CLOTHES]% L+ C: x n; U$ m) B1 u5 P5 a; q+ y
CLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.4 z! j- ^' B: w& M8 n% n
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.% U( ^6 x) B* p* q5 W& T7 @3 n% X
CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.9 | C- i& u2 y9 }( c- a7 c
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子0 K4 u0 H; D! n1 X; g
* D9 ]' a6 {, [[WEAPON]
, v) p' o& T9 N* iWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
+ h& T* P T* oWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
6 k6 [: r3 c2 e# QWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
3 D* J5 [/ f8 c: d- n/ L5 }) V( \WEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
# ^( d g$ u- Y6 b! ]
; A# `) ?6 ]/ N9 w1 W6 \[ETC]. Y4 ]) B& I0 v9 y- p" h8 o# h [
ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下9 c" y8 c* \2 x5 }- q- z4 l
( G" h/ g7 `9 K; k
即使你定义为没有耐久的物品,他出生后还是会有耐久的. k( `) C3 f6 f( @
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.
1 T, @8 i. Z \, g
9 D/ A1 e. g; n' F; F. [1 B1 b; Y
3 B9 `( X; M" B8 x! o5 ?DontChar.txt 定义不允许建立的角色名.
1 z2 x: C7 ]0 m
) `& Q' _) M" I: U5 w# Z2 g
- g9 J' P& _7 _gate.ini文件,GATE服务器配置文件.这里详细说一下.* p9 b n) W: V
* N1 e' @& m* \: g& C
[GATE_SERVER] 定义服务器名称. X3 b* }+ K2 ~# a
LOCALIP=127.0.0.1 定义对外IP) O2 E/ ^! M- x) b8 H# Y8 Q
LOCALPORT=3054 定义与balance连接的端口
: w5 c/ u8 [* N4 G( @' [7 `: g+ cLIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.4 d) a) J: A7 r2 J( S7 I( m
CHECKPAIDINFO=FALSE 是否收费服务器.
+ N7 Z4 o) X u3 b3 x2 n$ v' fBALANCEIP=127.0.0.1 定义balance服务器IP9 }: F) q' \! p m) @; D
BALANCEPORT=3030 定义balance服务器端口.UDP协议.2 b; [' a k) V) ^; m
SERVERNAME=test 定义服务器名
7 f8 E9 H; W+ X+ K9 j3 x- J1 yBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激- K" \) H4 W Q4 G+ w
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激7 U* X& j3 h8 M9 z0 p- t( C
% u! h$ P1 Q% G# b[GAME_SERVER] 定义服务器名称6 l0 `0 K x" e& E
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.
" n+ A4 e) N; ]; q& B1 wREMOTEPORT=3052 游戏主服务器端口.一定要封.
# @. D ^) R4 C+ O, f, U. E# N& ]4 S! Y7 O5 U
[DB_SERVER] 定义服务器名称
' j" W4 C# T$ G8 T0 iREMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.4 D7 ]# p) D/ X: @ r
REMOTEPORT=3051 人物资料服务器端口,一定要封.; k. k+ L/ C/ X1 x2 c/ B- s9 R s
3 R" a! `0 V' N8 W: k' j
[LOGIN_SERVER] 定义服务器名称
- l( M+ q5 c/ ZREMOTEIP=127.0.0.1 登陆服务器IP地址.' ]) q& U$ Z) ^1 m# x/ d
REMOTEPORT=3050 登陆服务器端口
1 V0 s! c3 X2 E) L5 A7 i2 r4 |( J5 i( j$ v
[PAID_SERVER] 定义服务器名称 (通常删除)
) [+ T* ~7 X. M# \) w' Z7 GREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)$ S2 U. D: W' v1 Q3 L8 `' V* [! T# C
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)
3 K& @! H( c, ]& u2 J% p
4 b( M2 }; G8 F3 I( I, d% q% e( P, I h6 I
tgs1000.acs文件。GATE的语言库。, p+ m2 _7 h0 H( Y4 ]/ Y
" P' ?/ t5 L zVillage.Ini文件。定义新手出生地图。这里讲一下。
5 Z0 S$ h9 r9 j/ l6 x7 D' ^ d1 C
[VILLAGE] 定义配置文件名
] ?; U1 v2 F" @
5 m& q" _. g# _: HCOUNT=1 定义新手村可选择的数量
9 H8 U5 |" t' n5 H) e1 I7 D/ v: x+ m+ X2 D
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。7 c. A6 g, d' z- {" ^
X0=178 第一个新手村X坐标; J" o$ [0 g4 S0 J8 s) K
Y0=238 第一个新手村Y坐标
6 D& X G, y ~" R0 q3 ESERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号.
4 C6 _7 t# F2 i- f$ @2 {( L' a |