SRPG开发之四

哈哈哈哈想不到吧有生之年我还能够再更新一下这个开发日志

时间有些太长了,中间也经历了许多事情,Project Uta貌似也变成了Project Kta,新浪微博的话题功能不是很好用,明明打了这个tag的微博不少,可是一条都看不到

初衷大概就是类似于注释一样的东西吧,写一写实现的思路,免得我以后看代码一脸懵逼

不过为什么过了这么久……究其原因,很简单,因为我不会(……)

毕竟企划还是以AVG为主,战斗部分在大纲之中明确提到的也就只有四到五处,所以相较于这里,剧本的分量更重一些。考虑到这一点,如果篇幅过长而战斗又太少的话,插入一个战斗系统就显得有些突兀和浪费……

所以说,在文本之中,即便是战斗,也有相关的描写,包括动作设计等等,至于动作设计的部分,如果卡克了我就会翻出来一部动作片看(……),然后经常看着看着就忘了自己该干啥了(…………),导致的结果就是,某种意义上动作设计是成家班(………………)

闲话不提,回归正道,这一次由于时间隔得太久了,所以整套系统算是重构了一遍,地图分层上更加合理了一些,远景层-地面层-碰撞层-动画层-遮盖层-天气层-剧情层-UI层-战略层,虽然不说划分的多细致多合理,但是肯定比以前全堆在一起强上太多了

随后就是整个系统的动态化,场景和地图等等都不是在程序里面写死的,而是根据配置文件动态生成——毕竟以前吃过亏,同样的系统复制粘贴到了多个场景之中去,发现一个小bug挨个修改挨个再测试实在是不要太爽——没有父子事件实在是太气人啦!


然后就是将八个月之前的移动范围计算算法复制黏贴过来,稍微修改了下,改成了面向对象的——大概是吧,不是也请不要喷我。虽然地图生成方面改了个乱七八糟,但八个月之前的代码居然还能够稳定运行,嗯,bingo

战略视图在坐标变换上还有一点小小的问题,嗯,引擎默认不会计算浮点数,截断了……断了……

这与坐标和对象的长宽都是整数有关。不过这些倒是还好,相应的比例都是能够预先定义在配置文件之中的,实在不行手动打表修正偏移量

仅仅只是这一些还不足以专门水一篇(你已经在水了),行动序列也算是完成了吧

实现的思路很简单——每个角色都有一个速度值,同时也有一个行动值,每回合都会增加行动值,当行动值满之后,就会返回该角色的单位ID,如果是我方角色,则开始进行操作(没法操作的UI系统我还压根没做),敌方角色会等待两秒钟后跳到下一个角色(因为敌人AI我也没做)

实现的思路并不复杂,一开始却遇到了问题——我将所有角色的ID和行动值分别存储在两个数组之中,只要用对组进行排序即可,然后坑爹的地方就来了——引擎内建并不支援对数组1所有元素排序,然后数组2对应位置的元素跟随移动,却支持对所有数组的某个元素进行排序,然后跟随变动所有数组的元素

也就是说,我想要的是:

数组1:1 4 3 5 2

数组2:2 1 3 4 5

排序后

数组1:5 4 3 2 1

数组2:4 1 3 5 2

但是内部提供的是:

数组1:1 4 3 5 2

数组2:2 1 3 4 5

排序后

数组1:2 1 3 4 5

数组2:1 4 3 5 2

简单地说,就是Excel对行排序和对列排序的区别

知道这一点之后解决起来就简单多了,在场景开始的时候根据可以行动的单位的数量创建N个数组,每个数组的元素1存储行动值,元素2存储单位ID,同时开始计算的主循环,直到有角色可以行动为止,将数组1元素2取出,根据单位ID的不同来判定该执行何种操作

最开始的想法,是要每回合遍历不同的角色,然后比对行动值的。最开始困扰我的,就是如果有两个角色同时达到可以行动的状态要如何处理

现在想想那时候,我真傻,真的,我单知道可能会有两个角色同时满足条件,但我不知道,排序以后直接取第一个就行——反正玩家不会无聊到去内存里面看数据,对,不会的!

嗯……所以说最大行动值/速度≠回合数……

那么既然知道了如何使用引擎内建的数组和队列,实现预想的卡牌指令系统就要容易的多了——毕竟只需要维护一个队列就行了。不过因为企划和剧情的关系,预想的“通过让不同角色进行不同的操作进行不同的剧情,可以获得新的技能卡牌”没办法实现了——毕竟没有策略部分,而且角色是依次入队的

不过——谁知道能不能塞进去呢?实现上只是需要更新卡牌列表而已,或许达成隐藏条件,或者砍砍草地砸砸罐子就出来了呢?

不过有一点能够确定,砍草地砸罐子是决计不可能掉卢比的(逃




评论(2)
热度(2)

© defisym | Powered by LOFTER