PPWOW纯公益性的80级WLK巫妖王之怒怀旧服服务器架构

PPWOW (Player vs Player World Of Warcraft)开设的目的是为怀旧玩家提供一个纯公益性的80级巫妖王之怒虚拟交友社区

服务器使用了C++语言开发,网络模块使用ACE库,数据采用mysql存储,redis缓存地图和生物,玩家的线程保存在内存中。服务器使用了pthread多线程框架,可以有效的利用多核cpu的处理能力。同时服务器开启了A*寻路算法,怪物和移动路线全部基于地图tile进行计算。最大限度还原了暴雪的真实游戏体验。接下来,将为你逐一介绍服务端技术结构。

认证服务器(authserver)

认证服务器作为单独运行的服务,主要功能是对游戏账号进行认证,玩家客户端使用openssl加密,通过验证后,authserver将把服务器各网管地址发送给客户端,同时附带服务器分区的认证信息和玩家分别在哪些区有多少角色的信息。

  1. 与暴雪的battle net account相似 ,authserver可以为跨区的服务器网管提供认证。多个区可以共用一个authserver,达到battle net的效果;
  2. authserver开启之后,需要与所有的游戏区域网关通信,沟通获取认证token;
  3. 账号的安全信息,都由authserver负责,包括记录了在不同游戏分区玩家账号的权限等级;
  4. authserver采用 **RBAC(role based access control)**权限管理方式,可以根据不同游戏区域自由定义玩家的角色,比如不同的GM等级;
  5. authserver控制着账号级别的封号、禁言;
  6. authserver采用 TCP 协议进行通信;
  7. authserver支持多线程,每1000个客户端连接增加一个线程。有着非常优异的性能;
  8. authserver在完成认证传递token之后会与客户端断开,不用长时间与客户端连接,只有有需要的时候才连接。
  9. authserver支持玩家认证队列(即排队);

公共区域世界服务器(public zone server)

公共区域世界服务器主要为4个地图提供了世界空间:东部王国、卡利姆多、外域、诺森德。对于同一个游戏区域,可以根据线上人数的多少来配置公共区域的实例数量,一般情况下,将4个区域运行在同一个进程中即可。但对于人数较多的服务器可以拆分为每一个大陆一个服务实例,即每一个大陆单独作为服务开启,需要像autherserver注册单独的网关地址。

公共区域服务器继承自世界服务器(worldserver),一个世界服务器支持多个线程(thread)。其包含了地图容器、entity容器(包括了怪物creature 物体object)以及AI调度。世界服务器在启动的时候会载入指定区域的地图mesh数据、区域触发(area trigger)、坐标集合(map data)、建筑物及地形阻隔(vmap)等信息。而entry容器会载入所有需要在地图生成的生物和物体信息,AI调度则是一个公用的行为策略指令集合(core ai / script ai / event ai),可以指派给任一一个entity。

  1. 由于地图mesh、区域触发、地图坐标集合、建筑物阻隔等数据容量很大,是非常占用内存的。所以,只有当一个区域处于激活状态,才会load至内容中,当然,你也可以一次性将他们全部load进内存,这需要有很高的配置。
  2. 当没有玩家进入地图区域,或者玩家离开地图区域一定时候后,可以将该部分地图数据全部unload以节省内存;
  3. 所有继承自Worldserver的zone 都可以划分为1-n个镜像,只有处于同一个镜像的玩家和entity才可以进入同一个数据广播池,进行交互;
  4. 可以配置单一镜像的最大entity容量,玩家在进入世界的时候动态分配镜像;
  5. 可以根据任务进度指定切换镜像ID;
  6. public zone server采用 TCP 协议与客户端进行通信;
  7. public zone server采用状态同步(state synchronization)技术,全球统一物体id标识 (Guid);以及highguid(服务端)to lowguid(客户端)标识转换。
  8. public zone server 集成了移动速度验证,传送验证,飞行验证,等反外挂手段,能够有效的防止客户端伪造指令包的hack

副本区域服务池(instance server pool)

副本区域服务池是一个可以动态分配副本区域的服务池,当有玩家进入副本时,会从池子中随机分配一个zone给该副本,执行和worldserver类似的初始化工作后,该副本及可以被玩家进入。当一个副本完成后,在一定时间后,该副本被释放,此zone又回到副本池中为空闲状态。

副本区域服务池在启动的时候会事先初始化一定数量的空闲副本,再根据实际需要创建或销毁。副本区域服务器池理论上支持跨区的的副本创建,及地城查找器

战场区域服务器(battleground server)

与副本区域服务池的运行机制类似,但是支持更为复杂的排队队列机制。理论上可以支持跨服匹配。所有PVP副本,包括竞技场、战场都由该服务承载。

拍卖行服务器(auctionhouse server)

该服务主要用于拍卖物品的挂售

基础worldserver(world server)

该服务主要用于处理频道通信邮件等功能。

PPWOW网站功能

你可以通过PPWOW官方公告 查看具体的信息。

服务器运行模式

非商业化,无任何盈利目的,无RMB可兑换的任何福利,单纯为了丰富我们的业余生活,缅怀逝去的时光。

开设服务器的另外一个重要动力是为了尝试建立一个无金钱交易、社交为主的绿色坏境。希望我们在这浮躁的现世找到一分简单和宁静,在游戏中得到放松,找回老朋友,结识新朋友。

PPWOW的节奏很慢,想要寻找瞬间满足的玩家请慎重。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值