00:00
大家好,欢迎来到自由教育课程的学习,本系列课程呢是自学教育的第一季,从零开始搭建游戏服务器,本节课呢是我们第一期的最后一节,给大家做一个总结。嗯,还是两大知识点啊,第一个是我们社区的资源,第二个就是给大家说一下我们总结的内容,这我们订阅号大家可以扫码关注一下,然后回复我们微信客服呢,呃,可回复客服啊,可以获取到我们助教一个微信。好,那么我们就回顾一下。先看我们的。流程图啊,给大家我们本期第一期给大家讲了什么,哪些内容啊。首先呢,我们给大家讲了一个。就是我们。呃,Game server,因为我们第一期的话只给大家讲了一个game server,而没有讲网关服务器,也没有给大家讲DB server,或者是我们其他的一个注册发现服务器都跟大家讲,因为第一期的话,我是想大家带大家呃完成一个事情,就是知道我们游戏服务器的一些基础开发流程需要哪些,第一个就是我们一个消息调试消息这一块,还有我们log输出,还有我们的心跳,还有我们的看着缓存,还有我们的连接信息,还有我们服务器的一个部署情况。
01:13
而在这个里面呢,大家发现一个一个事情没有,就是我们在所有开发过程当中呢。没有对某些模块呢,做一个模块化的处理,也就是给大家看一下我们代码啊。我们代码是全部写在一个src下面的,也就是在默认是在我们的什么下面,默认是在我们整个工程的一个目录下面,所以说呢,我们在第二期的时候会给大家把所有的底层的函数做一个分层处理,就是放到我们作为我们第三方包来处理。比如像我们的。发送函数就是三的时候,这个函数呢,肯定是放到我们底层来处理的。还有一些初始化的,还有网络初始化的,全部会放到我们底层来去做。嗯,那一个个给大家说,我们先看一下第一个,也就是说我们。
02:02
整个的消息流程,消息流程呢,我们就是测试客户端是H5客户端,H5客户端呢,我在本节课呢,本来是不给大家写出来的,但现在呢,我给大家就是把H5客户端打包在这里了,我后面会发到我们微信群里面,大家可以去按照我们的测试流程,也就是说H5客户端的流程呢,大家可以去。呃,不用写H5客户端直接下下来之后呢,就可以测试我们服务器服务器的消息流程了。这里呢,我们我们我们购物服务器呢,也是game so呢,是采用一个什么杰son的一个BASE64,也就是在我们在我们整个传输的过程中啊,在这个下面给大家看它这里面呢,是转了我一个杰森之后呢,把我们的一个这个数据呢,Data的数据呢,转化成我们贝斯64了,传给我们。算给我们H5服H5客户端了,大家要记住这一点,调试的时候呢,你可以按照自己的官方文档,或者我们去看mob so的官方文档,或者是我们自己有自己的一套,有一自己的一套虚拟化和反虚拟化的知识,也是可以的理解了吧。
03:02
好,OK。啊,这里面我就给大家说一下我messages虚列化,Messagesger一个虚列化呢,是在我们整个游戏服务应用中是比较重要的,因为它直接到影响到我们一个呃数据处理的一个性能,包括你在一秒钟能处理多少个数据啊,多少条数据啊,对吧,多少个呃,多少一个并发过来,你怎么去处理,这性能影响是比较大的,包括我们在做m Mo类型游戏的话,也存在这种情况,虚拟化如果你耗时的话,你想后面都会都会呃消息队列都会堵塞在这里,对吧。因为那是个瓶颈,我们始终要处理这个消息嘛,所以说在这个里面呢,大家我是没给大家测一下我们这个。我们这个性能的,这个虚拟化性能的,这在我们第二期呢,会专门拿出两解来对我们整个框架的性能全部进行测试,也就是在我们正式把我们的。数据全部作为分层处理之后呢?我们做性能处理,就是我们用我们的第三方包来给大家看一下,最后生成火焰图,我们给大家看一下我们整个整个的服务器性能的。
04:07
行动的卡点在哪里,也就是我们的瓶颈在哪里,之后我们做做一个逐步的优化。嗯,OK,这是我们的。这是我们的协议处理是么子协议主理,我想大家在这里应该比较清楚了,就是现在这个服务器呢,你如果作作为弱联网或者作为测试客户端的话,测试服务器的话是一点问题没有,你可以跑几百人也是没什么问题的,也就每秒20帧的话,你可以去跑。这个兵都是测试过的,所以说如果你要是想呃,想完善一点的,你就你也可以把自己把这个全部做一个分层处理啊,对吧,也可以处理啊,你看你可以先处理一下看看,跟斌哥第二期处理的一不一一不一样,一不一致,因为每个人的思维方式不同,可能处理同样的事物啊,可能用不同的方法,对吧。嗯,好。那这是我们消息调试这一块,我们来给大家说一下,我们整个的一个日志输出,日志出呢,这块是可以自己实现一个函数,我之前呢给大家看一下,就是在我最开始的项目里面呢,我是实现了一个。
05:18
那是没有什么,只想打日志嘛,在。这。大家可以看一下,这是我们日志函数啊,这是date过来字符串,我某一个不定参数也是字符串啊,这呢临时的也是等于date,我这相当于做一个拼接,大家看到没。做个字符串拼接完之后呢,在这里面做了一个什么多地生成目录啊,在这里面进行一个数据打印。储到格式化我们的时间这里这里面呢,在这个下面。就做了一个替换,你看写入。整个来说是比较耗时的,大家你看嘛,我们整个操作都是字符串的一个拼接,对吧。而且是来数据就写磁盘的这种操作,磁盘操作太多了,会导致整个我们性能方面都很很差的,这个当时我就因为当时没想太多啊,只是给他只是测试一下我们。
06:12
呃,简单的流程大概用了可能没到一周的时间,我就把它给去掉了,直接直接后来用了我们的,呃,用了给大家讲那个glo。你看这这那个嘛,这那个台词这里面。测试的。主机。是它主要的地方在这里。大家可以看一下这个源码,源码没有多少。你看。这是做什么的是吧,Op状态。对吧,大家可以有时间看一下这个源码,比较简单也是嗯。我就在这里不给大家说了,嗯。好,嗯,日志这一块,日志是我们游戏服务器也是必不可少的,所以这会大家呢,呃,在整个game server里面,或者做我们getway,就是网关服务器也要注意这一点啊。
07:03
啊说日志日志服务器是吧,日志服务器肯定要有的,不日志服务器就是我们作为日志的输出的一个一个标准,也就serve里面之我作为调试啊,包括我们流日志啊,全部要有的。后面的话,如果我们要介入那个开发合作商的话,可能这块做一个专门做一个日志服务器啊这块,呃,可能大家如果大型公司里面或者是做CP的话,可能会用到这些东西比较多做分发的。好,那我们来继续这游戏服务器动态部署,这个部署呢,肯定是要有的动态部署,包括你用GM命令啊,或者是我们,呃,用我们用我们的一个容灾或者什么东西,大家可以根据自己的一个实际需求来做。比如这个模块,大家也要重视起来,动态部署。横向拓展,比如我们就跟他说,这个我相信你达到了,那我们再增加一个人,怎么再增加一些人过来,玩家,那你肯定要。
08:00
再建个再建个辅出来就可以了,对吗?是一样的,或者再建个物理机里面,我们直接把这个丢过去就可以了,过员其实呃,最为方便的就是它是什么。依赖比较少,因为我们整个game server里面没涉及到一些物理引擎的东西,所以说也没有涉及到什么依赖,后面的话,因为我们是小型的嘛,面前是中小型游戏的话,你要做大型游戏的话,你肯定依赖就比较多了,比如购这一块是吧。这一块呢,我呃动态部署大重视一下,还有一个connect信息,这个作为我们网服务里面是必须要有的,同时在我们里面也要有这个数据,这个数据呢,是作为我们一个房间广播的话,也是需要这个模块来处理的。所以说大家在开发过程中呢,呃,你要做做一个项目预言的时候呢,一定要考虑到目前我们项目需要哪些东西,再结合市面上比较流行的一些框架,比如说我们我们要做全球服务的话,那怎么做,是不是我们一定要抄,呃,就是搬到网,搬网上那一套东西过过来就觉得是适合自己的,也不一定是吧。
09:06
因为全球服务的话,它有一个中心服务,数据中心服务器,你觉得你们公司的业务会这么大吗?如果觉得你这个游戏做火会这么大,那你就要加上,对吧?这个后期都会考虑前期端,我建议把基础的功能完现就可以,就像丁哥大家第一期讲的样子,就直接用get game so来实现就可以了,要让我们测试客户端直接连我们game so后面的话改特会直接换一个端口或者是对吧,做一个连接中转,那都是服务器自己来处理事情的,就不涉及到一个呃,一个功能,功能一个卡点,对吧,也不涉及到一个呃,只是说呃,客户端从一个game server前面加了一个getway getway作为我们数据的一个中转。理解了吧?OK。这是我们connect耐信息啊,这是我们心跳心跳函数肯定要有的,心跳的话是我们啊,我建议前期前期在做的时候就需要加上,因为有些东西对吧,有些可能啊,或者是什么panicle啊,之前出现的时候呢,可能啊,可能客户端都不知道,你只有去查的候,因为在我们每个开发过程中啊,每个项目组开发过程中,根据项目组不同的可能有一组测试服务器或多组测试服,还有可能每一个人对吧。
10:21
都有一个单独的一个对吧,这当然这种情况比较少啊,一般都是有一个统一的测试服务器,所以说这块呢,建议大家如果心跳呢,建议大家在前期。加上就可以包括超时踢人这一块,这是在后面加就可以充值链接啊,饱和这一块。开始缓存,这个缓存呢,其实。根据也是根据自己性能吧,后面你要呃开发服务器呢,看性能比较低的话,比如呃在读取内存数据还是CPU计算比较快,怎么样子,你可以加个缓存进来都是可以的,这块自己设计啊,这缓存并不一定是能有,但是几大模块量有的,大家比如说我们相应的序列化,反序列化。
11:01
还有我们日志这一块,还有服务器的一些部署,还有我们的一些广播信息,可能信息保存等等,还有心跳的实现,这是我们最基础的,整个我们框架是最基础最基础的。还像兵哥哥跟大家讲的样子,建议大家在开始项目的时候呢,就只建一个game serve就可以了,作为我们服务器的一个。单进程单幅就可以,因为我们先前期都是铺功能,先要出DEMODEMO之后呢,你直接把它分出来一个game get位就是网关服务器就可以了,对吧,后边加。DB都是可以的,前期推出DEMO版本的话,就是建议大家建一个服务器就可以了,后面的话,呃,只要DEMO版本过了,像技术评审过了的话,那你这边后面加什么都可以了,只是对量的问题了,因为你在game server和前端测试的时候呢,包括网络链接,就是我们在这里connect信息网络链接,还有消息的虚拟化,虚拟化还有我们的一些日志输出啊,动态部署啊,对吧,这已经全部有了,包括我们这块,你可能直接加DB是可以的,对吧,直接连。
12:04
这嘛,你可以直接red或买MYS或者看一下信息啊,整个这一块是通的,这块只要你DEMO版本过了的话,记入评审带过的话,那你后面的话就很很容易加了,对吧。啊,第一期就这么匆匆而匆匆而过了是吧,所以说大家呢,我希望能够在第一期里面学到点东西,也就是说有些拈流程大家都知道。我们在第二期的时候,可能课课解比较多一点啊,因为第二期涉及到内容太多了,一是第一个可能就是我们的一些分层梳理,就是把我们的整个框架,原有的原有的数据,原有的结构,包括这些结构的话,可全民分分离出来,分离出来之后呢,我们再给大家整理一下,之后呢,我们要测试我们的性能。性能测试完之后呢,我们可能要完善一些,完善每个模块的一些信息,对吧。比如比如说在部署某块时可能不够完善,那我们在部署完之后呢,我们game server里面可能要拓展了,比如拓展之后我们改成为也就是要有网关服务器了。
13:09
第二期的时候会有网关服务器。完了加可能是多组,就涉及到动态部署这个概念,呃,还有一个消息是么调试。还有GM系统,我们在第二期会有GM系统了,也就是。加工系统呢,也是对玩家玩家一些管理等等,这都是比较简单的,也不是比较不是实施起来也是不是太难的。那我们就。第二期见吧,大家有问题的话就去我们群里问好吧,那我们就第二期见。好,再见。
我来说两句