全区全服PVP服务器管理策略

转载请注明:http://blog.csdn.net/herm_lib/article/details/8654396

首先我们要确定的是,能做全区全服的前提是,游戏不能有公共空间,就那种任何人都可以随便进出,然后有视野的空间,像MMORPG新手村,主城之类的;而副本、战场是带有私有性的局部空间,你的角色进出是有条件的。这两个的区别很关键。

下面来看一下全区全服带有PVP服务器的一种处理策略。结构可以尽量做到简化,逻辑服与大厅服像下面这样:

这里的lobbyd1(图中少了d了,不管了,改图太麻烦)是管理pvpd进程用的,一个lobbyd管理多个pvpd,而且lobbyd之间没有任何关联。

我们再看一下,lobbyd和pvpd是怎么关联起来的。

pvpd主动连接到lobbyd上。我们这里逻辑服(logicd)和战斗服(pvpd)走了不同的接入服。

我们简单地描述一下处理流程,某一个角色加入战斗的大致过程(可能细节上有偏差):

[1] 获取战斗的房间号,根据房间号hash到某个lobbyd;

[2] 登记到lobbyd,这个目的是让其他人可以看到某些房间人数之类的,同时获取pvpd的地址信息(比如ip&port)和进入凭证(ticket);(像房间人数之类的能否从pvpd获取?)

[3] 根据上面的地址信息,连接到指定的pvpd, 根据房间号和凭证进入指定房间;

[4] 战斗....

[5] 战斗结束,断开连接。

我们这里pvpd用了独立的接入服,因为一般战斗的消息包是10个以后,所以做一次连接和断开的动作是可接受。