这是一个讨论无缝大世界的地方。不是开发仓库。
它源于我对大世界RPG的热爱。
- 大世界 -- 就像字面上的,在空间上非常大,水平面上1024KM*1024KM,高度上10KM,这样一个尺度。
- 无缝 -- 从一个地方到另一个地方不会有肉眼可见的场景过渡
- 动态单位 -- 互相有交互会移动的单位
无缝大世界有客户端和服务端的开发内容。这里主要讨论服务端的架构。
传统MMORPG服务器,一般会有N个地图,规定每个地图的最大玩家承载数,这样可以在一个线程上处理一个地图所有的逻辑。
无缝大世界的MMORPG服务器,要实现的是在一个超大地图上承载足够多的玩家。就像经典的魔兽世界。
要实现这样的服务器。架构上,我能想到两个
动态单位之间的交互通过异步编程来实现。那么理论上来说就可以通过一定的负载均衡的算法来无限扩展单一地图的承载量。
动态区域来实现。 动态区域指的是一群动态单位集合形成的一个区域。这个区域运行在一个单线程上,动态区域内的动态单位的交互是同步的。区域与区域之间由于空间上距离足够远,不会有交互。因此通过区域的负载均衡算法来扩展单一地图的承载量。
以上算是抛砖引玉。大家可以在issue里提出各种宝贵的见解。
致谢