最近做了个个人项目,回合类的算是卡牌游戏吧(暂无美术)。自己抽空设计做了下技能系统,感觉不是很理想。有没有大佬给点常规思路?没做过传统游戏,想自我突破一下
我希望做一个只需要配表就能满足绝大多数技能类型的系统。原本构思的时候想得很美,结果做起来砍掉了很多。
大致是个3x3的布阵,分前中后排的类型,然后技能目前设计的是伤害、恢复、BUFF加持,施法范围是从前排伤害一列,随机一行,前、中、后排,随机/按血量/按攻击/按防御选择一个差不多就这些吧
目前制作的差不多了,实装了一个技能,就是感觉设计的很粗糙、很复杂,想找大佬给点思路
建议先把完整的结算流程以及各个变量梳理出来。
结算流程比如每轮开始、玩家回合开始、抽卡时、使用卡时、受到伤害时;变量比如玩家自身、伤害来源、造成伤害的卡牌、伤害类型(受伤/失去生命)之类的。
有了这些,再根据流程去设计技能效果,每个技能效果可以单独设计为一个状态或者说标记,达到某一流程时,根据标记触发相关效果。
举个例子,有这么个角色的技能是「每次抽卡时,额外多获得一张卡」,那可以在其进场时,为其添加一个标记,信息如下:
- 触发时机:玩家抽卡时
- 触发效果:给予玩家牌堆顶的第一张牌
每次该玩家触发「抽卡时」结算时(以三国杀举例,比如回合开始时抽卡,或者使用无中生有或五谷丰登时),都会触发一次这个效果。
再举个更复杂一点的技能效果,比如有这么一个角色,技能效果是「玩家受到伤害时,记录对自身造成伤害的卡牌以及伤害来源,到自身回合时,若被记录的卡牌仍在弃牌堆中,则获得这些卡牌,并立刻以相应的伤害来源为目标,无条件使用这些卡牌」,那么可以这么处理:
在玩家进场时,添加一个①标记,信息如下:
- 触发时机:玩家受到伤害时
- 触发效果:为自身添加一个②标记
那么,玩家受到伤害时,就会为自身再添加一个②标记,信息如下:
- 触发时机:玩家回合开始时
- 触发目标:[ 伤害来源 ]
- 触发效果:如果 [ 标记卡牌 ] 在弃牌堆中,获得这张卡(因为获得了卡牌,因此会触发一次「获得卡牌」结算,便可以和之前提到的上一个例子产生联动),然后向 [ 伤害来源 ] 使用这张卡
感谢,受教了!
因为不是三国杀这种类型的(虽然其实技能设计的很多想法按三国杀走的,哈哈),目前只设计了两个触发时机:回合开始、自己行动。
设计了一个BUFF类的触发时机:回合开始、自己行动、受到普通攻击、受到技能攻击。
原本是想做一个尽量全面的技能系统,但是感觉这种写法给我写得相当复杂,搞得乱七八糟的,快驾驭不住的感觉了
原本还构思了比如被动技能、势力技能等等,目前或许都要砍掉了,一个人做感觉力不从心,本身也是空余时间来做,唉
嘛,慢慢来,一点点迭代,先把游戏性demo做出来,后面再慢慢改,反正是个人项目,又没有工期限制,对吧
哈哈,道理是这个道理。年初一的时候做了个无技能的简单demo,开工前晚上简单把技能系统做了一下,目前就实装了一个技能,先给自己定个小目标好了,愚人节前出个完整的demo出来
你所谓的相当复杂是指什么样子?可以把你设计的表格贴一下?或许可以给点意见
晚点回家了贴出来吧。自我感觉很复杂的点在于觉得自己在取技能目标的时候写得很复杂,switch又臭又长,还有大量if、for循环。然后使用的时候,需要自己单独为技能配置自己的施放/计算函数。一个技能的配置大约是:
{
技能类型,
施放时机,
施放目标,
目标选取规则,
技能处理函数
}
试试把技能拆成每个小元素,多个小元素组装成一个技能,你只需要实现所有小元素,就可以拥有无限技能
谢谢,目前复杂点不是这个方向,应该是我水平不够,驾驭不了吧
做一套触发器就可以啊,就避免了if else这种
能详细举个例子么?
比如我有个技能:随机选择敌方前排一个随机单位,对这一行的敌方造成伤害。如果前排没有存活的单位就选择第二排,以此类推
大佬麻烦移步下这个帖子,新开了一个帖把代码打包传上来了
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。