制作便于维护管理的Antrix服务器

针对不少新人,于是有了这篇文章
从Antrix8xx的一个版本开始,Antrix的设计人员对数据库代码进行了修改,以使用户数据与游戏数据的分离成为现实。
我们为什么要将用户数据与游戏数据分开?原因很简单:便于维护。你可以想像在混合的数据库中想要备份或修改是如何地麻烦。分离这两者以后,当OBDB有新版本发布时我们就可以方便地在原数据库基础上进行更新,或者干脆将其作为一个新的数据库导入,而不必在乎用户数据会受到影响。
哪些表属于用户数据?从OBDB提供的一个用于备份用户数据表的批处理中(export_accounts.bat)我们可以知道,用户数据由下列几个数据表组成:
accounts
auctions
bids
characters
charters
corpses
guilds
guild_ranks
instances
ipbans
mailbox
playeritems
playerpets
playerpetspells
playersummonspells
questlog
playercooldownitems
playercooldownsecurity
social
tutorials






首先我们先看看WOW的服务器是怎样的架构:
登录服务器---游戏服务器A---副本服务器
     |--游戏服务器B---副本服务器
     |--游戏服务器C---副本服务器
     |--................................
     |--游戏服务器N---副本服务器
登录服务器:当你启动WOW主程序,它便连接到了登录服务器。身份验证、排队等都在这个服务器中完成。
游戏服务器:就是我们通常所说的各区的服务器,如:六区的血顶、风暴之鳞。
副本服务器:为了减轻游戏服务器的负担,副本有专门的服务器,或许还不止一个。
当然,作为私人的服务器,由于用户不多,一台服务器甚至一台普通的个人电脑就可以了。

虽然私人服务器可以独立完成多个服务器的任务,但是为了便于维护以及要提供多个游戏服务器来说,数据库的独立则是必要的。
以下是我推荐的数据库结构:
               |-游戏数据(OBDB2-130)
登录数据(ACCOUNTSDB)--|-用户数据(CHARACTERDB1)
              |-用户数据(CHARACTERDB2)
              |-..................................
              |-用户数据(CHARACTERDBn)

下面就详细介绍下设置的方法:(服务端程序不是重点,下面将不会详细介绍)
1.准备服务端程序,自己编译、用别人编译好的都可以。


2.导入数据库:
  首先,到svn://svn.obdb.gromnet.net/下载最新的官方数据库,我这里用的修订号是130。
  导入数据库,修改好OBDB2提供的dbimport.bat后,双击导入游戏数据。导入到OBDB2-130中。
  提取用户数据,用户数据OBDB2没有提供,你可以从你现有的数据库中导出或者干脆准备个空表,这里注意,不要把accounts这张表同用户数据一起导出,而是将它单独到处作为一个数据库。
最终做好的数据库结构如图所示:


数据库:accounts



数据库:characterdb1(2)


数据库:obdb-130





3.配置服务端:
对于服务端我建议如下的文件组织形式:
<antrix>----<realms1>--antrix
     |--<realms2>--antrix
     |--.............
     |--<realmsN>--antrix
     |--logonserver
用这样的结构设置我们的服务器的优势很明显:节省空间、结构清晰、便于维护、添加新的realm(服务器)比较方便。
以下是logonserver和antrix这两个文件执行时必须的文件。
logonserver:logonserver.exe、logonserver.conf、libeay32.dll、libmySQL.dll
antrix:antrix.exe、antrix.conf、dbghelp.dll、libeay32.dll、libmySQL.dll、realms.conf、script_bin(脚本文件夹及脚本文件)、DBC文件、地图文件。
4.修改服务端配置文件:
服务端的配置文件一共有3个:logonserver.exe用的logonserver.conf,antrix.exe用的antrix.conf和realms.conf。
logonserver.conf
<LogonDatabase Hostname = "localhost"
              Username = "root"
              Password = "111111"
              Name    = "accounts" //登录数据库的名字
              Port    = "3306"
              Type    = "1">

<Client MinBuild = "6739"
        MaxBuild = "6904"> //6904对应国服2.1.4版

<LogonServer RemotePassword = "111111"> //这个密码随便设

antrix.conf
<WorldDatabase Hostname = "localhost" Username = "root" Password = "111111" Name = "obdb-130" Port = "3306" Type = "1"> //游戏数据数据库
<CharacterDatabase Hostname = "localhost" Username = "root" Password = "111111" Name = "characterdb1" Port = "3306" Type = "1"> //角色数据数据库

<Listen Host = "0.0.0.0"
        WorldServerPort = "8129"> //这里的8129是通讯端口,如果想要设置多个服务器的话,每个antrix.conf文件里的这个端口号必须不同,并且要与对应的realms.conf文件中的端口对应。

<LogonServer DisablePings = "0"
            RemotePassword = "111111"> //这个密码与logonserver.conf文件的RemotePassword要一致。

//注释掉两句<die开头的语句。

realms.conf
<LogonServer Address = "alzzl.xxx.net" //这里填上你自己的域名
            Port = "8093"
            Name = "Default Logon"
            RealmCount = "1">

<Realm1 Name = "很好,很强大"
        Address = "alzzl.xxx.net:8129" //这里填上你自己的域名和端口,端口要与antrix.conf中设置的端口号对应。
        Icon = "PVP"
        Colour = "1"
        Population = "1.0"
        TimeZone = "1">

 

4.启动服务端程序:启动logonserver.exe,然后分别执行realms1下的antrix.exe和realms2下的antrix.exe。(如果你设置多个服务器的话)

posted @ 2007-12-30 18:40  二宝的博客  阅读(242)  评论(0编辑  收藏  举报