对于我们的游戏后台器系统,上一篇文章,我已经大概的描述了我们的游戏后台的整体架构。
具体参见这片文章:http://blog.csdn.net/wallwind/article/details/8743802
当我们确定好了基本的框架,和游戏中通信机制后,我们就要开始一步步完善我们的游戏了。
首先,我们要知道,游戏里的所有东西,包括地图,玩家,道具,怪物,NPC等等,所有我们能看到的东西,抽象到我们计算机里,其实就是一块块内存,
我们后台程序所做的就是,将后台的的所有数据进行组织起来,呈现给前端,然后前端根据我们后端的数据,进行显示。
因为,我们的后台是c语言的后台,因此,我所讲述的应该都是以数据流的问题为导向。
不管目前是端游,还是也有,还是手游,其本质的基本结构就是c/s结构,因此,我们就要确定 c/s之间的通信协议,
这里,我们使用的是基于TCP的通信,为了在游戏开发和后期的运营阶段,协议的保持一致性,我们通过对protobuf的开源产品的改进,定制了自己的一套协议 体制。
只要后端,定制数据结构,就可以给前端解析和编码。
我们后台的简单结构就是前端接入+后端业务逻辑层既zone_conn<------>zone_svr.
zone_conn负责前端的网络监听数据的收发,zone_svr根据数据处理业务。zone_conn在这里先不说了,以后会有专门讲解。
因为游戏需要高效的业务处理,处理每一个请求,必须在几毫秒到几十毫秒内完成,因此,所有操作全部是内存操作。
那么我们怎么做的呢。
1,配置表数据:配置表就是我们熟知的游戏里那些稳定不变的数据,比如任务表,技能表,登记表,包括地图数据等等,
我们首先定义一个结构体,这个结构体包含了所有的配置数据内存需要的内存。也就是当我们的系统启动后,就会将数据库的内存 全部以char[][]的结构进行分配,也就是当我们需要使用这些
配置数据的时候,直接使用其指针就OK取出来。
2.玩家player,当我们接收到一个玩家要穿件角色,出生的时候,我们系统就要在其预先分配的内存池中,分配一段内存,这段内存在内存池中就永久不变。
3.怪物等等都是这样的道理
以上所有的数据都是根据其ID,进行有序的排列,因为我们使用了二分查等,高效的查找。
今天介绍这么多,以后打算着重介绍地图等