游戏开发(十二) 之 塔防 程序设计思路

最近工作较忙,没有大块时间弄,东拼西凑出来点时间,昨天把基础游戏流程做完了,大概说下其中的开发重点.

游戏开发(十二) 之 塔防 程序设计思路_第1张图片

1.数据驱动显示.

这点一定记得,很重要.之前看过很多人写塔防的战斗逻辑,几乎都是用moveto,moveby去做,单纯跑起来好像没什么问题,但是这类的实现方式,后期可拓展性太差.

打几个比方:

  • 策划说,战斗太精彩了,想做个回放功能,你一想没啥难度,做完发现 回放内容跟战斗的时候效果不一样.
  • 老板说,战斗太精彩了,咱们做个联机对战功能吧. *******

第一个情况倒是有解决方案,就是去源码修改每帧的刷新时间,不使用真实的时间,修改为固定时间,这样整场战斗下来,每一帧的时间是一样的,这些内置的moveto,moveby 每帧位移也就一样了

第二个如果要达到两边同步的效果,那就需要用到帧同步的东西了,后续如果有做到会详细解读下

所以考虑到种种原因,这个地方我使用的是之前写的mvc的方式驱动位移,简单说就是 controller 做每帧的位移数据,通过向量速度时间,去算出来本次刷新需要位移的位置,这样在view层就完全不需要运算,而是根据position去显示即可.

 

2.老生常谈的效率问题.

  • 最基本的就是纹理了,做好大图,提前缓存.保持最低的drawcall
  • 塔防里面不固定的元素很少,怪物,子弹和其他的一些特效,这些会再整个游戏过程中,频繁的创建删除,所以这里就使用缓存,随用随取,如果整个游戏不复杂,可以在loading的时候,直接创建出来放到缓存里面,减少战斗过程中的运算压力

3.碰撞

这里我没有使用碰撞系统,这里也是要根据具体游戏内容来设定的,我这里只是单纯的使用了距离计算.给子弹一个目标点位置,然后加个随机数来调整落点.就可以看起来很自然.

如果你的游戏比较特殊,需要一些碰撞检测的话,可以直接使用自带的碰撞系统.cocos自带的是使用了 2d的 obb 碰撞算法.比较简单,可以去源码看看

 

在其他就没什么了,塔防类游戏算是比较简单的游戏类型,实现也不困难,目前我做过的最麻烦的一个游戏就是几年前仿了一个coc(部落冲突),里面的单位实在是太多了,有存在攻击建筑的情况,而且寻路是实时演算的,当时这块东西也都放在c++层,开的线程处理的,不然一个mainloop是真的扛不住,这种规模的塔防就需要在设计初期做好规划,不然后面改起来也是要命的.别的东西,有想到的在更新,如果有问题可以评论交流

你可能感兴趣的:(游戏开发之路,游戏,lua,cocos2d)