游戏服务器后台的快速开发 .

mitesi 2013-06-14

很多人都痴迷于游戏,而做为程序开发人员,喜欢自己做游戏的自然也不在少数。但开发一个有点规模的游戏,除了主要的游戏逻辑外,还需要将大量的数据保存下来。现在流行的架构则是将保存数据的模块单独做成一个服务,与前端通过socket进行通迅。用socket流行当然的是完成端口技术了。但完成端口只是实现了一个基本的数据收发包,真正实现起来,还需要定义各种的通迅协议。讲到通迅协议那就要提一下google的protobuf协议了。googleprotobuf是google公开的一套用于网络通信时用于协议编解码的工具库,使用它定义的格式,你可以定义协议的字段,由它自带的编译器生成出负责编解码的代码文件(可生成许多不同的语言文件).简单来说,protobuf就是将你要发送的消息内容进行,高效序列化和反序列化的。

总结一下上面废话的意思就是:游戏后台要使用完成端口+googleprotobuf这样才不显得太落后。再加上访问数据库的odbcapi接口,这些就组成了window下游戏后台服务的基本技术。当这些技术条件都具备了。那就可以按部就班的写程序了。当然正规开始写之前还需要相关的架构设计文档等,但业余写游戏的话,部分步骤可视情况面定。下面说一下大至的步骤:

第一步就是按需求(游戏内容)整理要保存的数据,这一步呢,要设计出表结构及一些存储过程。

第二步则是与前端游戏逻辑模块开发人员进行沟通,定义出两者间的通讯协议,也就是编写出protobuf文件。同时用google自带工具生成相应的.h和.cc文件(protobuf还支持其它的语言)。

第三步就可以开始写代码了。写代码呢无非就是封装完成端口,及数据库访问接口。等将所有接口都封完之后,接下来就是力气活了。根据一个个protobuf包格式化成SQL语句,将执行后的结果在回写到一个个应答包内(protobuf)。

以上就是一个游戏后台程序的大至流程。那么如何做到快速开发呢?

答案是,要想快,就得充分利用网上的资源,看有什么可以拿来就用的。用度娘,找谷哥,查开源,很快你就会发现,完成端口,odbcAPI接口什么的网上都有封装好的,直接用就可以了。而google的protobuf本来就是开源的直接去官网下就行。东西都找来后,将他们拼一块就可以了,这些用不了二三天。而数据库设计及protoBuf协议编写,只要你的游戏不是非常复杂的话,一二天也照样搞得定。那接下来在初步搭好的架构上switch一个消息ID然后,取出protobuf包,拼接SQL语句?如果这样做你就OUT了,这代码一路写下来,得多少天才能完工呀,在加上来回的调试工,多变的需求,整个下来,二十来天都是少的,这还是你游戏需求不那么复杂的情况下。

那不这样做能如何呢!大家不都是这样做的吗?难道能向写protobuf文件那样,写一个描述文档,然后用一个工具直接生成我需要的代码吗?

答案是,不全对,为什么呢?对的部分是因为可以在写一个xml描述文件,然后用这个库进行加载http://download.csdn.net/detail/yd_gxm/5044507。然后呢...然后功能就实现了。不相信,不相信你就下载一下看看。看看能否达到一行代码不写就完成一个DBServer程序。

不对的地方是,还不存在一个将xml描述文件转成.h.cc的工具。如果存在这样的一个工具,那就属于微智能开发了。不过我想出现这种“编译”工具只是迟早的事情。

-----------------------------------------------------------

(最近正忙着看《原子战神》http://2152996.qidian.com小说。等忙完了,编译上传一个vs2003版的。^_^)

相关推荐