首页 > 代码库 > 多人即时战斗游戏服务端系列--90坦克Online网络版详解

多人即时战斗游戏服务端系列--90坦克Online网络版详解

前言:

一直想写一个关于这个项目的系列,当前此游戏目前处于下架过程中(运营不善,虽然本人还是挺喜欢这个游戏的).

        距离开发已经一年多了.趁着还没忘光,就在此整理并共享出来.

        能写多少算多少..弃坑勿怪...


        先上一发服务器架构图:


     考虑到当时项目的考量,以及后面用户群的表现.其实这个架构有点复杂了.以至于有点浪费.

首先,我们进行几个名词解释.

1.数据差异引擎:是使用一套数据协议和对象监听,保持多个不同位置(客户端/服务端或服务/服务端)之间的多个数据对象一致,一个主节点多个副节点同步的引擎,请参考之前的OpLog或者OpWeb文章

2.即时战斗:由于涉及到游戏的操作手感,所以服务端硬性要求是,60fps后端渲染,推送延迟低于50ms,玩家延迟100-150ms流畅运行.

3.数据通道:类似泡泡堂这类游戏,每个游戏都会进行5-10分钟,所以每个房间都会有一条数据通道,给参加游戏的玩家进行数据推送.

4.完全同步数据:不管用户什么时候加入战斗,总是可以获取到一份当前场景状态的拷贝,用于初始化当前这个时间点的对象.

5.差异同步数据:加入数据通道后,玩家基于完全同步数据使用差异同步数据,对当前内存中的对象进行合并,以保持所有客户端的显示一致.


其次,这里重点描述的是游戏服务器,也就是战斗服务器.至于其他的部分,有兴趣的话留言,视情况是否进行详细讲解.

游戏介绍,90坦克大战,80后大家都熟悉,这是一款坦克大战的网络版,当然进行了很多的修改和加强.网上搜搜"90坦克online"应该可以找到宣传片.

游戏中分为几个对象:

1.坦克 可上下左右移动,并且拥有3-4个技能,

2.地形 草地(不可破坏,但是可隐藏己方坦克),钢板(不可破坏),砖块(可破坏)

3.子弹 坦克都会发射出各种属性的子弹,子弹在生命周期结束的时候,会在目标地点创建一个爆裂物.

4.爆裂物 一般都由子弹创造,会对当前范围内的敌方坦克/可破坏地形进行破坏

5.技能 大多数都是创建一系列的不同的子弹,也有类似瞬移,隐身,回血,之类的.


大致的游戏介绍就到这里.


技术选型:

1.前端采用flash,导致我们无法使用udp进行网络层开发,也就是tcp协议.

2.后端采用c#开发,win2008服务,网络层采用iocp实现.

3.异步通讯架构,客户端发送指令,服务端仅返回是否受到(或者不返回).

4.客户端通过数据差异引擎中的场景镜像进行渲染.类似一个特定的数据播放器.


客户端活动图:


服务端活动图:


数据序列:


PS:今天刚画的图,有些记的不是特别的准,而且有些乱画的,凑合看..

多人即时战斗游戏服务端系列--90坦克Online网络版详解