站务联系

1 游戏服务器开发的基本体系与服务器端开发的一些建议

发布时间:2021-04-08   来源:网络整理    
字号:

近年来,我身边的同事有很多都从web转向了游戏开发。他们先前都没有做过游戏服务器开发,更谈不上何种经验,而从网上找的实例或游戏方面的知识,又是这么的少,那么的零星。当她们跨入游戏公司时,显得一脸迷惘。如果是大公司幸好点,起码有人带带,能学点经验,但是有些人是直接步入了小公司,甚至很多小公司只有他一个后台。他们一肩扛起了公司的游戏前端的研制,也肩负了公司的胜败。他们也十分竭力,他们也想把游戏的前端做好。可是就是由于没哪些经验,刚开始时以为做游戏服务器跟做web差不多,但是经过一段时间以后,才发觉代码很多,太乱了,一看代码都想构建,都是踩着坑往前走。

这里我把一些游戏开发方面的东西整理一下,希望能对这些想做游戏服务器开发的同学有所帮助。

首先,要明晰一点,做游戏服务器开发跟做传统的web开发有着本质的差别。游戏服务器开发,如果没有经验,一开始根本没有一个明晰清析的目标,不象web这样,有些明晰的MVC构架,往往就是为了早日满足企划的需求,尽快的实现功能,尽快能使游戏跑起来。但是随着功能越来越多,在老代码里面更改的越来越经常,游戏检测时显露下来的一堆bug,更使人感觉束手无策,这个时侯我们想起了构建,想到了构架的设计。游戏的架构设计十分重要,好的架构代码清析,责任明晰,扩展性强,易调试。这些会为我们的开发市去不少时间。那要怎么样设计游戏的架构呢?可能每位游戏都不一样,但是本质上还是差不多的。对于游戏服务器的架构设计,我们首先要了解游戏的服务器架构都有哪些组成的?一款游戏至上线,需要具有这些功能?有些人可能会说,只要使游戏跑起来,访问服务器不出问题不就行了吗?答案是不行的,游戏架构原本代表的是一个机制,它包括:

系统初始化 游戏逻辑数据库系统缓存系统游戏日志游戏管理工具公共服务组件

这一系统的东西都是不可少的,它们共同服务于游戏的整个营运过程。我们一点点来介绍各个系统的功能。

一,系统初始化

系统初始化是在没有客户端连结的时侯,服务器启动时所须要做的工作。基本上就是配置文件的调用,初始化系统参数。

但是我们应当要考虑的是:

二,游戏逻辑

游戏逻辑是游戏的核心功能实现,也是整个游戏的服务中心,它被开发的优劣,直接决定了游戏服务器在运行中的功耗。那在游戏逻辑的开发中我们要留意些哪些呢?游戏是一种网路交互比较强的业务,好的底层通讯,可以最大化游戏的功耗,增加单台服务器处理的同时在线数量,给游戏带给更好的感受,至少不容易出现由于网路层造成的数据交互卡顿的现象。在这里我推荐使用Netty,它是现在最流行的NIO框架,它的用法可以在我之前的文章中查看,这里不再多说了。有人疑惑,代码也须要分层次?这个是其实了,不同的代码,代表了不同的功能实现。现在的开发语言都是面向对象的,如果我们不加思索,不加整理的把功能代码堆放一起,起始看起来是迅速实现了功能,但是至后期,如果要更改需求,或在原先的代码上降低新的需求,那真是被自己击败了。所以代码一定要分层,主要有以下几层:

协议层,也叫前后台交互层,它主要负责与前台交互合同的解读跟返回数据。在这一层基本上没有哪些业务逻辑实现。与前台交互的数据都在这一层开始,也在这一层中止。比如你使用了Netty框架,那么Netty的ChannelHandlerContext即Ctx只好出现在这一层,他不能出现至游戏业务逻辑代码的实现中,接收至客户端的恳求,在这一层把还要的参数解读下来,再把参数传入业务逻辑步骤中,业务逻辑步骤处理完后,把要返回给客户端的数据再返回至这一层,在这一层组织数据,返回给客户端,这样就可以把业务逻辑跟网路层分离,业务逻辑只关心业务实现,而且也便于对业务逻辑进行单元测试。业务逻辑层,这里处理真正的游戏逻辑,该估算售价估算售价,该通关的通关,该计时的计时。该保存数据的保存数据。但是这一层不直接操作缓存或数据库,只是处理游戏逻辑估算。因为业务逻辑层是整个游戏丑闻的处理核心,所以他的处理是否正确直接决定游戏的正确性。所以这一层的代码要尽量使用面向对象的方式去实现。不要出现重复代码或相同的功能进行复制粘贴,这样更改上去十分不便于,可能是更改了某一处,而忘掉了更改另外同样的代码。还要考虑每位方式都是可检测的,一个方式的行数最好不要超出一百行。另外,可以多看看设计方式的书,它可以帮助我们设计出灵活,整洁的代码。三,数据库系统

图说天下

×
二维码生成