游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2996|回复: 5

关于三国杀构架问题

[复制链接]

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
发表于 2014-9-27 23:15:58 | 显示全部楼层 |阅读模式
本帖最后由 kitanski 于 2014-9-27 23:19 编辑

做了个三国杀MOD,有些相对三国杀就是名字不同,各种特技单试都好的,都是用最省事的捷径,现在碰到组合使用特技,出事了,比如南蛮入侵,对方一个蛇矛转出杀,我这里就会逻辑不对,因为构架是最简单没有多余步骤的,所以貌似要一对对两两的特技都要另外处理,特别麻烦,已经考虑改构架了。
所以,做的时候一定要给后面留有余地,不要贪图怎么代码简洁就怎么来。而且我是知道三国杀怎么玩的,还犯这样的错误。
说多了都是泪。

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
 楼主| 发表于 2014-9-29 10:43:15 | 显示全部楼层
目标判定

我们知道,在一些场合,目标只能选择牌、只能选择人、有的还能选装备,有的不能。
我最初那一版,是纯粹偷懒,尽量减少赘肉,所以对于那种选错瞎点,基本是让逻辑自动流到最后的return false,“不理睬”让程序直接不反应,让用户继续点。基本上为了偷懒,对于瞎点处理的代码很少。


现在发现,如果这样的话,以后做AI的时候,还是要将它分为选择哪些目标好点,还不如早点做完。

我这样的构架就不好了。
我是分好几个阶段做的,第一个阶段先把所有的基本牌和锦囊都做好,不包括无懈可击。

第二个阶段做武器技能。

第三个阶段做人物特技,一个个测试可以。

第四个阶段做上无懈可击。

然后测试的时候,发现很多武器和人物技能,单独用的时候没问题,但两两相遇的时候往往跳到一个技能里不自动跳回来,对很多对技能都要用手动写代码来引导。

每一个阶段都只为当前阶段考虑,而没有考虑到要下一盘大棋,构架不宏大。

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
 楼主| 发表于 2014-9-29 13:54:40 | 显示全部楼层
我曾经做流程是一路下来
每个人回合开始的时候,先判定,判定完了就进入一个死循环,角色弃牌到少于等于手牌上限的时候或者死了比如决斗死苦肉死也跳出,自然做法当然是这样最简单。

但是,随着做到无懈可击对判定牌的否定和司马懿的鬼才改判定,必然要导致推翻这套构架。

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
 楼主| 发表于 2014-9-29 13:58:26 | 显示全部楼层
本帖最后由 kitanski 于 2014-9-29 19:21 编辑

如果在楼上的框架上修修补补自然也可以像裱糊匠一样撑过去,但是万一碰到某些人蛊惑无懈可击来否定判定,某些人还不相信结果掉血死了这样更多的拓展行为,要么把判定和行动分成两个死循环。要么还是要改构架,把判定阶段的各种行为融入到主动行为构架里来。今天下午小重构了下,把判定阶段的行为纳入主动行为的构架。

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
 楼主| 发表于 2014-9-29 19:18:33 | 显示全部楼层
本帖最后由 kitanski 于 2014-9-29 19:23 编辑

现在发现,应该对每个场景,都有一系列的参数来限定
比如,是否可以点玩家,是否可以点任何人装备(拆),是否只能点某人装备(反馈),是否可以点牌,是否点多张牌(制衡),是否点多个人(方天画戟)
这些东西当初都是从另外一款简单的游戏复制过来改的,而且接下来都是写一步算一步

当初我的场景只有两个信息,操作者句柄和操作的提示文字
功能都是好用的,在全方位加了无懈可击之后,觉得修改起来麻烦,在考虑要不要重构,还是搞个分支。


还有为什么没人来回复我呢。

59

主题

403

帖子

1916

积分

金牌会员

Rank: 6Rank: 6

积分
1916
 楼主| 发表于 2014-10-1 11:53:13 | 显示全部楼层
另外为了使系统流畅,必须在构架上做得更宏大一点,每一个结算步骤分自动和等待用户响应两种,因为我使用结算和等待用户响应双线程,每次一个线程等待,一个线程计算。由于一些结算计算过程中不用线程,所以必须用逻辑让它们完成所有自动计算直到等待用户下一个行动。所以每一步结算都必须分属性为自动或等待用户抉择,凡是自动结算的必须一步步自动做完,我没有分结算属性,所以每碰到一个解决一个,现在的问题就是两三个特技同时触发的时候,总要写代码衔接让它自己继续走下去,或者一些打断的特技打断完后跳回之前打断前的位置,继续向后结算,因为没有再额外用线程,所以必须用代码自己衔接。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 02:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表