游戏服务器之跨场景

游戏服务器由于要容纳更多的玩家,常常是分布式的。由于场景服务器进程可能多个,所以跨场景处理需要处理进程内或跨进程)。

1、游戏服务器多进程处理

进程类型有 登录服务器(login)、网关服务器(gateway)、场景服务器(scene)、社会关系服务器(social)、中心服务器(center)、日志服务器(log)、聊天服务器(chat)、跨服战服务器(fight)、数据库服务器(db)、一个gm服务器(gm),对于端游可能还会有命名服务器(name),还有些特殊的服务器如公会服务器(guild)。这些都是可以根据需求来增减 的,对于端游会应用到这些类型的服务器。页游可以少些,手游一般是可以更少些,手游可以节省到剩下db和scene了,那样的话scene会结合网关的功能。

本文写的是玩家跨场景进程会实现的一些操作。这里是以一款页游的流程为例。

服务器的结构是由一个login 、多个gateway、多个scene、一个social、一个center,可以拓展的是一个chat和一个fight。

2、跨场景处理步骤

需要注意的是玩家的同步是在多种进程之间实现数据同步的,因为在各个类型的服务器上有对应的玩家的一些数据(如center和social、gateway上有对应的玩家对象指针)。

1、玩家连的是网关,首先通过网关发跨场景消息到scene,scene查看该场景id是否是在本服务器上 的,是的话就在本进程内转移玩家(设置玩家场景),否则需要跨场景进程转移玩家。

跨场景进程时:

2、设置scene中的玩家状态为切换场景(此时scene服务器不会处理客户端发来的玩家逻辑消息)

3、scene会通知更新玩家在social的场景,注销该玩家在social的社会关系数据

4、social通知center,更新center的玩家场景和切换场景状态(此时center服务器不会处理客户端发来登录相关消息)

5、social通知gate,更新gate中玩家的场景,并设置gate中的玩家状态为切换场景(此时gate服务器不会处理客户端发来的玩家逻辑消息)

6、gate通知回scene,scene通知db保存该玩家的数据,并注销该玩家

7、db发送消息到另一个的 scene,读档把该用户的所有数据发送过去

8、新的scene再通知social,把玩家的社会关系在social上重新建立。

9、social通知gate、center,设置gate、center中的玩家状态为正常状态

至此,玩家跨场景进程完成。

以下是比较简单的画了下玩家跨场景进程的流程。



你可能感兴趣的:(游戏服务器之跨场景)