当前位置: 首页 > 工具软件 > mmorpg > 使用案例 >

游戏思考13:关于MMORPG游戏服务器的种类及作用(以后会同步更新github,持续更新系列,目前有20个服务器说明,22/10/20)

吴哲
2023-12-01

1)平台服

  • 平台服务器定义
    平台服务器一般都用于处理全局相关功能,涉及玩家登陆,角色唯一性认证,跨区,全区排行榜等。主要包括以下几种:

六、guild_server工会服务器

七、friend_server好友服务器

八、team_server队伍服务器

  • 定义
    负责管理玩家队伍的数据的服务器

九、activity_server活动服务器

十、trade_server交易服务器

1)简单定义

用于管理限制交易会所、拍忙行的数据,商店的购买等数据

2)服务器备注

①个人每日限制、每周限制、终身限制放在逻辑服务器gs处理
②拍卖行等全区统一限制的东西,放在交易服处理

3)逻辑流程

①先判断有没有购买资格、有没有钱,符合不符合开商店的条件
②先扣钱,再触发购买的行为树节点事件

十一、service_manager_server服务管理服务器

  • 定义
    用于服务器的管理,重启和从共享内存restore恢复,当注册的服务器节点挂了,负责拉起相关的服务器节点

十三、account_server账号服务器

  • 简单定义
    登陆服务器进程,玩家登陆时首先连接account_server服务器。

十六、dbmanager_server管理dbc的中转服务器

  • 简单定义
    管理多个dbcache服务器,用于往mysql存数据,后期会根据一定规律将玩家、工会数据按照地域或创建先后顺序分配到不同的dbcache_server去存储

十七、global_server全局服务器

  • 简单定义
    全局服务器,处理所有区服的全局信息,比如处理所有区服的主播排名等

十八、match_server匹配服务器

  • 定义
    用于游戏的匹配业务

十九、world_server世界服务器

  • 简单定义
    管理多个逻辑服务器

二十、idip_server 补偿管理服务器

  • 简单定义
    idipserver:一个管理服务器,用来给玩家发邮件,补偿等特殊操作。

2)普通服

  • 普通服务器定义
    普通服一般都是涉及单个区服相关的,和其他区服往往是独立开来的,一般包括:

一、game_server逻辑服务器

  • 定义
    逻辑服务器,一般的需要即时反馈的逻辑放在这里处理(战斗相关的逻辑都可以放在这里)
  • 与其他服务器的区别
    后期可能根据场景的不同或分线的不同,开多个逻辑服务器负载均衡游戏玩家在线的压力

二、gate_server网关服务器

  • 简单定义
    网关服务器进程,gatewayserver相当于游戏客户端与mmo服务器之间交换数据的桥梁,游戏客户端与mmo服务器中其他服务器进程交互都是通过gatewayserver进行转发的。网关服务器收到玩家的消息后,根据消息类型转发给对应的服务器进程,同理各个服务器进程也是先把消息发给网关服务器,然后再由网关服务器发给玩家。

三、mail_server邮件服务器

四、router_server路由服务器

五、scene_server场景服务器

  • 简单定义
    场景服务器进程,mmo服务器中主要的服务器进程,承担了大量的服务器端逻辑操作,比如玩家在游戏地图中移动,跳转地图,玩家PK,与npc的交互,怪物的攻击,移动等等。在场景服务器进程中存在一个场景玩家对象,该玩家对象身上又存了很多与玩家相关的数据与操作,比如装备及其装备的打造,升级;坐骑及其参战,休息;图鉴及其激活,升级等。
  • 链接
    传送门

十四、cache_server缓存服务器

1)简单定义

缓冲服务器,用于给客户端推送不同逻辑服务器上的数据,例如各种人物状态数据等

2)服务器备注

1)libevent配合redis完成异步命令输送和回调结果

十五、dbcache_server数据库管理服务器

1)简单定义

存储服务器进程,通过该服务器进程进行数据持久化操作,比如把数据存到mysql数据库。

2)服务器备注

1)mysql集群注意限频单database单表20M每秒输送数据,否则mysql有可能被打崩

3)相关思考

①有遇到面试说dbcache是dbmanager的子进程:

1、但是如果是子进程的话,那么这样只能部署在同一台机器上,而且得用到waitpid这个接口,要么屏蔽sigchld这个信号,要么用孙子进程去做,否则至少得阻塞1到2秒
2、但是如果不用子进程,用中心服务器去扩缩容的时候,得用脚本去启动这个进程,然后这个进程再去自动上报给DBManager,这样可以部署在不同物理机,但是1、增加了网络延时,2、需要对这个进程进行验证

 类似资料: