网游服务端一般是怎么分层的?

我之前是做WEB开发的,WEB开发都讲究分层,前后端MVC。

现在业余自己想做独立游戏,所以开始研究游戏服务端开发了,主要用的编程语言是golang和c++,所以对这类开发的分层和架构规划不是很清楚。

我现在在做一款MMOFPS游戏,主要有进入游戏大厅,然后登录,匹配玩家,进入游戏选择英雄,进入真正的游戏场景开始游戏,然后结束返回战绩数据,最后重新回到游戏大厅。

我看网上很多资料提到游戏服务端也有分层概念,比如说最外层是gateway层负责维护客户端长连接,阻拦不合法的游戏请求等等,然后gateway再将它处理不了的数据给大厅服务端,聊天服务端,匹配服务器,场景服务器,AI服务器,游戏过程如果要反作弊还涉及到物理运算服务器等等。

但是这个分类还是太过于笼统。

  • 比如更实际一点的,UDP请求是无连接的,那么登录之后是不是服务端要给客户端一个像cookie一样的token,客户端每次都要发一个token到服务器来证明自己是某某玩家。
  • 并且如果发现两台客户端主机同时请求一个帐号,那么要T另一个人下线等等,这些操作是gateway层该处理的事情吗?还
  • 有就是TCP的粘包分包处理以及UDP的包序重排序操作都是哪一层来处理呢?
  • 以及收到数据包之后,根据数据包类型选择丢给哪台服务器来处理这种路由操作又是哪一层来做呢?
阅读 3.2k
1 个回答

你说的分层是服务器架构的意思吧,现在服务器一般都是分布式的。上层接入服务器,登录服务器、聊天服务器等等这些与游戏逻辑没啥关系的服务器,下层就是n个负责游戏逻辑的GameServer。游戏客户端往往是跟一个接入服务器做数据交换,由接入服务器根据具体请求分发消息。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题