游戏服务器引擎的设计介绍游戏服务器部署框架

Posted game_helloworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏服务器引擎的设计介绍游戏服务器部署框架相关的知识,希望对你有一定的参考价值。

服务器的架构,根据游戏类型不同大多有:账号服务器、全局服务器、网关服务器、场景服务器、中心服务器、存储服务器,配合其他的服务器(比如日志服,监控服等)。传统的游戏是单服模式,现在也有很多的是分布式模式。

单服模式:就是一组服务器为一个服,与其服务器之间不互通的。比如传统的网游(魔兽世界),客户端看到的服务器列表里每个服都是一组单独的服务器,之间数据不共享。

分布式模式:理论上可以无限扩容,可能有万人同服的情况。但实际上是有上限的。这个要根据服务器的逻辑设计,和硬件决定的。分布式的思想就是服务只是一个概念。一个服务可以是一个进程分布在不同的硬件服务器上,也可以分布在相同的硬件上,也可以多个服务在一个进程内部。服务的业务逻辑可能是一个场景,也可能是一个玩家的业务逻辑,都可以的。这样可以无限扩展,业务逻辑之间的通信只要找到对应的服务逻辑地址就行了。

每一个服务器的作用:

账号服: 提供账号注册登录验证流程。这个一般多线程,因为业务逻辑没有交互,注册账号,验证账号,以回调方式返回信息就好了。(可能多组服务器器共享一个账号服)

网关服务器:这个是所有客户端连接的服务器,客户端不会直接连接到业务处理服务器,而是连接到网关,由网关转发消息到相应的业务处理服务器。提供路由作用,消息的加密解密也在这一层处理。(每组服务器可能有多个)

全局服务器:这个根据不同的游戏设计不一样,全局数据和业务处理在这个服务器上处理。比如棋牌游戏的话,玩家不在游戏的时候其他的商城业务可能就在这一层处理了,如果是MMO游戏的话公会服务,或者场景管理服务可以放在这一层处理。(单点,但是现在为了防止宕机也有做主从的)

场景服务器:这个如果是棋牌游戏的话可以叫房间服,传统MMO的话,就是具体的业务服务器,可能由好多个,玩家可能分布在多个场景服中。玩家的具体的场景漫游,战斗,交互大多数都在这个服务器。(会有多个场景服,每个场景服内部有可能只有一个场景也有可能有多个场景,根据人数压力来配置)

中心服务器:这个定位跟全局服务器差不多,这个要看具体的设计,哪些业务可以放进来。

存储服务器:提供存储服务,玩家的数据都会放到这个服务器上,玩家的数据不是直接的从数据库读取出来的,这个相当于数据缓存服务,内部有很多策略,保存和存储玩家的数据。尽量减少数据库的直接操作。(这个也有可能有多组,根据事实情况策略设计)

日志服务: 没啥好讲的,

监控服务器:监控这一组服务器实时信息,预警和干预一些异常情况

一般的登录流程(每个游戏都有些不同,大致一样):

1:客户端登录游戏的时候向所属渠道请求登录(渠道:游戏发行的渠道,比如腾讯的渠道,在华为手机商城上下载的就是华为的渠道,因为现在大多数游戏的账号信息都由渠道把控的)。

2: 渠道那边账号验证通过的以后向客户端发送token(这个相当于唯一的验证KEY)

3:客户端选择对应的某个服务器(比如:1区龙之召唤服务器),向其发送连接请求,这个时候会连接到对应服务器的网关。然后拿着token发送登录请求

4:服务器的登录处理所在的服务器收到网关转发过来的登录请求,会拿着这个token向所在渠道服务器发起验证,渠道服务器验证返回成功后,服务器通知客户端登录成功。

5:如果登录验证这一步是单独的账号服务器组的话,还会向客户端发送具体的区服网关重新连接到具体的服务器,这个要看服务器是如何设计的。

一般的棋牌进入房间游戏流程(场景服跟这个很类似):

1:客户端点击请求进入某个房间

2:大厅服务器(全局服务器) 收到验证通过后,发送回包,并且向所在房间发送玩家进入请求,

3:房间服务器收到消息后再次验证玩家信息,然后拷贝初始化玩家信息,向大厅发送回包,并且向客户端发送进入房间的消息

4:客户端根据另起的进入房间的消息,初始化房间界面

「游戏引擎 浅入浅出」1. 游戏引擎框架介绍

「游戏引擎 浅入浅出」是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame/cpp-game-engine-book 

目前市面上的游戏引擎比较多,商用的有UE/Unity,开源的有OGRE/Cocos等。

多年前,每个游戏公司都有自己的专有引擎,背靠优秀的引擎技术,可以将产品打磨的更加流畅,画面可以做的更加绚丽。

例如13年网易 蜗牛等厂商进军手游,将一大票小型游戏公司压在脚下,又例如今腾讯做出的PUBGM/CODM等超大场景,无不依赖强劲的引擎技术支持。

各大游戏引擎都有着自己的独特之处,相对其他游戏引擎而言,我比较熟悉Unity。

所以后续开发都会学习Unity的一些思想,一些知识点也以Unity进行举例,方便大家进入状态。

以上是关于游戏服务器引擎的设计介绍游戏服务器部署框架的主要内容,如果未能解决你的问题,请参考以下文章

保姆级教程: c++游戏服务器嵌入v8 js引擎

使用skynet 的一个简单范例,附分析

「游戏引擎 浅入浅出」1. 游戏引擎框架介绍

「游戏引擎 浅入浅出」1. 游戏引擎框架介绍

「游戏引擎 浅入浅出」1. 游戏引擎框架介绍

「游戏引擎 浅入浅出」1. 游戏引擎框架介绍