怪物消消乐record2

距离上一次更新,有一个月05天了,时间匆匆即过

这次游戏基本原型确定好了,要记录的东西很多,慢慢道来:

1.游戏下半区域  消除模块:


难点1:格子连线判断,采用枚举算法,最初是 九宫格 8个方向计算相邻格子,是否同色,同色则连线,然后递归,若累积数小于3,则返回false,第一次用这个算法实现,实践后,可行,但是循环的计算量太大,想减少计算,消耗点空间,提升性能。于是把同颜色的所有格子,放进一个队列,然后,根据选取的颜色,在同色格子里,寻找是否能相邻,相邻则连线,若累积数小玉3,则返回false .大于3,丢入消除队列

难点2:无消除判断,类似难点1,只不过,用了减少支路开销,从颜色最多的格子开始查询,直到第一个满足3连的格子,就返回true,全部不连,则返回false,  false触摸打乱模块,重新排序。


难点3:连线回退,开始用纯触摸的方式,回退连线,发现很不好用,然后选择用数据状态的方式,把已连线的块丢进一个队列,离开最后一个块,触发一个控制量,若回到倒数第二个块,则消除,最后一个块的连线,数据控制要准确。


难点4: 遮盖技术,因为上班区域,和下半区域,美术用的一张图,导致无法,用一个Zorder 解决,遮盖问题,选择使用ClippingNode配合DrawNode ,完成上盘区域这个,实现顶层格子下落移动。方法2:可以使用shader,控制渲染区,可控性更强,目前未使用这种方法,类似方法基础源代码找到,因未学习openGL,对这一块控制力不足,未选用次方法,但是以后若需要,再进行研究,在此记录,提示自己以后看到了,选用此方法。

其他细节,就是格子格子的,触摸判断区间要减小,  ,以后面图片的触摸区间控制,最合适,否则,以格子原本的大小控制,在边界时,判断会不准确


2.上半区:


炮台,根据策划,出了两种方案

1.单个炮台,寻路,查找怪物,然后攻击(发现不好用,废弃)

2.5个炮台一起上,选择最近的怪物,炮台在本路攻击 (现用)


难点1:

炮台响应攻击,检测怪物,发动攻击。检测怪物,攻击判断。缺一不可。 每一步都要精准控制,不能偷懒,一条线全绑定在炮台上。例如:炮台响应攻击,检测怪物,发动攻击,这时炮台与怪物发生了碰撞,怪物死了,炮台减少血量了,那么炮台可能就攻击落空了。 


难点2:

所有炮台,怪物的游戏逻辑的判断分离,比如炮台能否攻击,应该用炮台的血量状态,不能用isVisible,虽然后者更简单,但是不符合游戏逻辑,应该根据游戏逻辑来判断。当然,如果 isVsible false了,那么就是挂了,自然就不能攻击,应该消掉这个炮台数据。


难点3:

美术提供的图片参差不齐,原始大小,各式各样,要修改合适 boundingBox 来配合碰撞检测,很费时间,但是不废脑子。

本游戏特点,因为有固定路线,可以完全放弃碰撞检测,减少update的计算量,直接从路线上判断,根据子弹发射的路径,和怪物的路径,做判断,也可以达到效果。因为目前游戏过小,如果以后要挖性能,可以从这方面入手,施放update内的计算量。


难点4:

道具添加,目前只做了,一个打乱格子的道具,发现,核心按钮,需要调用 格子层的打乱函数。就需要传当前的格子层对象过来调用,中间通过mainScene 中转的,感觉这样不好,内聚性是不是破坏了,但是未找到更好办法,目前采用,未来再找更好办法代替, 道具类准备用抽象工厂来做,未来可能有几十种道具,选择抽象工厂,目前觉得是最好的办法,框架搭建好了,填代码就好了,目前还未遇到问题,不过第一次达这个框架,不知道好不好,待实践检验


总结:

这一月的开发,断断续续,做的内容也不多 ,感觉开发速度不够快,可能经验还是不太足,不过对cocos2dx 的底层倒是更加熟悉了,目前,游戏原型已经具备,准备着手开发,关卡编辑器了,打算用QT来做,以自动生成.Json或者.xml的形式,给战斗主场景调用,根据选择的关卡不同,调用不同的文本,来生成关卡。此方法行不行,好不好用未知。因为缺乏经验,也没人指导,可能中间造了很多浪费时间的轮子,但是能完成需求,我相信就是好的。

类图如下:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值