项目背景:u3d,c#,mirror做客户端,python写服务端,数据库用mysql实现的卡牌游戏(类炉石)创意是自制桌游移植
想麻烦问下有没有法术效果触发的判定思路(点击卡牌后如何识别触发效果)及效果循环触发逻辑(如果光环类效果逻辑进行了嵌套该怎么办)
法术这里初步设想是通过数据库给卡牌设很多的字段来筛选,但是效率好像很低,循环触发是设置flag,然后设一个上限,每次触发都从新遍历检索
有更好的建议欢迎大佬指正
项目背景:u3d,c#,mirror做客户端,python写服务端,数据库用mysql实现的卡牌游戏(类炉石)创意是自制桌游移植
想麻烦问下有没有法术效果触发的判定思路(点击卡牌后如何识别触发效果)及效果循环触发逻辑(如果光环类效果逻辑进行了嵌套该怎么办)
法术这里初步设想是通过数据库给卡牌设很多的字段来筛选,但是效率好像很低,循环触发是设置flag,然后设一个上限,每次触发都从新遍历检索
有更好的建议欢迎大佬指正
桌游类型的卡牌游戏最好是设定一个判定的优先级,这个就需要在游戏设计阶段进行划分。
比如目前存在五种卡牌:
场地卡牌:炼狱,效果是生成一个光环,附近2格内的怪物造成伤害+3。(速度+7)
场地卡牌:禁魔空间,效果禁止一切场地卡牌的效果。(速度+2)
场地卡牌:雷雨天,效果是生成一个光环,全场怪物受到伤害+1。(速度+1)
怪物卡牌:熔炉法师,面板5/5,战吼效果是造成3点伤害
奥秘卡牌:反制陷阱,效果是当对方攻击时,直接破坏攻击怪物。
在服务端进行运算判断时,按照游戏的设计思路,是先判断场地卡牌的光环效果,然后判断怪物卡牌的战吼阶段,随后是怪物攻击阶段,怪物攻击后反制阶段和亡语阶段。所以在判断场地的逻辑阶段内,根据速度来计算优先级。炼狱的速度是最高的,也就是说优先级最高,所以此时可以使用升序遍历所有属于场地阶段判定的速度属性。先判断速度+1的雷雨天生效,然后判断速度+2的禁魔空间生效,全部光环效果移除,最后判断速度+7的炼狱生效,重新添加光环BUFF,这样可以避免逻辑嵌套。
随后再进行其他阶段的判定,比如入战阶, 战阶和战后阶和亡语等,具体看设计师怎么设计,仅提供一个参考思路