翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 2601|回复: 14

[教程] 【浅谈AI】生命值相同,战役中的双重人格

 关闭 [复制链接]

79

主题

0

精华

5988

积分

国王

耕战
1028
鹰币
79
天龙币
0
回帖
1163

活跃者

附庸关系0
发表于 2015-5-2 00:24:13 | 显示全部楼层 |阅读模式
本帖最后由 这只话唠菜鹰是路人 于 2016-11-22 00:40 编辑

这几天考虑了一下在战役中添加精分角色,越想越兴奋,索性放手一试,做了个简单的双重人格规划。

所谓的双重人格,个人觉得在游戏中要表现出来的不仅要有两个对立的性格,也要有两个独立的身体。有了两个身体之后就可以按照两个人来设计对话了。


那么,对于这两个身体,由于是同一个本体,所以两个身体都是真正的人格,那么其中一个身体消失就要伴随着另一个身体的消失。所以制作精分的角色的两个独立的人格,实际上只需要保持两个单位的血量相同


对于两个单位,如果想要每时每刻都要保证他们的血量相同,这个时候就要用到1.4的新型AI了。目前生命值是一个变量,凡是和变量有关的效果,用AI都可以很直观简单地实现。




(defconst hitpoint-x 101)
(defconst hitpoint-y 102)
(defconst hitpoint-diff 103)
;首先是定义新的语句,分别用hitpoint-x、hitpoint-y、hitpoint-diff来替换掉101、102、103位置的数据。

(defrule
        (food-amount == 0);食物为0的时候执行
        (wood-amount == 0);木材为0的时候执行
        ;其实这个与触发有点类似,两个条件必须同时满足才会开始执行
=>

        (up-set-target-by-id c: 0) ;首先以地图上ID为0的单位为读取对象
        (up-get-object-data 10 hitpoint-x) ;读取它的生命值,并储存在hitpoint-x中。这里的“10”代表的是单位的生命值
        (up-set-target-by-id c: 1) ;再以地图上ID为1的单位为读取对象
        (up-get-object-data 10 hitpoint-y);读取生命值,并储存在hitpoint-y中
        (up-modify-goal hitpoint-x g:- hitpoint-y);这里提供的方法是利用计算的差值来检测两个单位的生命值高低,
        ;用hitpoint-x(读取的ID=0的单位的生命值)减去hitpoint-y(读取的ID=1的单位的生命值)来替换掉原来的hitpoint-x
        (up-modify-goal hitpoint-diff g:= hitpoint-x);再定义hitpoint-diff为替换之后的hitpoint
)

(defrule
        (up-compare-goal hitpoint-diff > 0) ;当hitpoint-diff为正时,也就是ID为0的单位生命值大于ID为1的单位的生命值时,执行条件
=>
        (cc-add-resource wood 1);得到木材1,因为后面要用到资源法来控制血量相同
        ;木材对应的是ID为0的单位损血的触发
        (up-modify-goal hitpoint-diff c:- 1);这时用hitpoint-diff减掉1的数值替换掉原来的hitpoint-diff,
        ;这样就会暂时性的使hitpoint-diff=0,也是另一种方式防止循环执行
        (up-jump-rule -1);跳过向上第一个规则
)

(defrule
        (up-compare-goal hitpoint-diff < 0) ;当hitpoint-diff为负时,也就是ID为0的单位生命值小于ID为1的单位的生命值时,执行条件
=>
        (cc-add-resource food 1);得到食物1

        ;食物对应的是ID为1的单位损血的触发
        (up-modify-goal hitpoint-diff c:+ 1);用hitpoint-diff加上1的数值替换掉原来的hitpoint-diff
        (up-jump-rule -2);跳过向上第二个规则
)

这样,AI就完成了,但是要调节ID为0和1的两个单位的生命值,还需要触发进行配合:

触发循环开启
条件:堆积木材(食物):……、512、256、128、64、32、16、8、4、2、1
效果:减损ID为0(1)的单位生命值:……、512、256、128、64、32、16、8、4、2、1
效果:进贡木材(食物):……、512、256、128、64、32、16、8、4、2、1


总之,利用二进制的循环触发把堆积的资源全部以扣血的形式一一对应在角色身上,需要注意的是二进制顺序由大到小。


这样,生命值时刻相同的两个单位就制作好了。


不过仍需要注意,英雄回血会无效化,并且无法用一个僧侣来达到治疗效果,所以最好的治愈效果是利用纯粹的负损血触发同时增加两个普通单位的生命值。






指导教师:@狂~劇情狂



















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x

评分

参与人数 1耕战 +50 鹰币 +200 收起 理由
一窍不开 + 50 + 200 分享交流

查看全部评分

从零开始的日系绘画系列
01-头像篇
02-躯干篇(上)
03-躯干篇(中)
回复

使用道具 举报

34

主题

0

精华

2万

积分

圣徒

耕战
3978
鹰币
-9546
天龙币
511
回帖
479

翔鹰建站十周年纪念章活跃者

附庸关系0
发表于 2015-5-2 00:33:49 | 显示全部楼层
很好的创新!
回复

使用道具 举报

454

主题

65

精华

25万

积分

教皇

耕战
42935
鹰币
1441115
天龙币
10
回帖
5687

翔鹰建站十周年大纪念章特级帝国勋章特级翔鹰勋章特级嘉禾勋章一级皇家勋章鹰之智者蛟龙勋章十字军勋章大冒险家狂熊勋章

附庸关系2
发表于 2015-5-2 00:35:01 | 显示全部楼层
就跟僧侶治療一樣,英雄自身回復也會失效,不過換一角度來說這其實也可以成為禁止僧侶治療特定單位或取消英雄回復的特效;此外,其實要讓它們再次生效實際也不是完全沒可能,只是這樣後台要再另放單位進行逆向檢測而已,設定複雜程度要比現在翻倍。

另外,還要注意兩個部隊同時遭攻擊時,只會以較大傷害一方的生命值為準,較小傷害一方受的傷害基本會被無視。

最後補充一下,我前晚編寫那段代碼實測時,一張空白地圖上一秒內加上的資源量為二千七百多左右,雖然不知道與機器配置有否關係,但這大體應該是同一遊戲秒內觸發處理生命值差的上限了。

评分

参与人数 1耕战 +200 收起 理由
AMO + 200 老师好,老师辛苦了!

查看全部评分

回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
发表于 2015-5-2 01:05:31 | 显示全部楼层
研究辛苦了
简单说是一起掉血。。。
但是一起回血比较麻烦么。。。
从RPG角度考虑,这个效果如果这样做是不太好的

常见的效果更可能是:
两个单位按着血量差值
一个回复一半,一个掉一半
这样实际打起来就是,无论谁挨打,两个人都分担一半伤害
就可以做出类似生命锁链的效果了

再进一步的话
主要角色被攻击,分身单位为其分担90%伤害
分身单位被攻击,主要角色为其分担10%伤害

点评

AMO
所以只是浅谈一个想法而已啦~  发表于 2015-5-2 20:32
而且敵人固定還可以反彈對方攻擊  发表于 2015-5-2 03:23
同意,將二、三條規則事實的0改成1和-1,兩處目標修改值也從2,之後觸發添加補另一單位血的效果就行  发表于 2015-5-2 01:50

                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

109

主题

14

精华

6万

积分

教皇

特洛伊大叔

耕战
10480
鹰币
1610
天龙币
126
回帖
2349

翔鹰建站十周年纪念章二级帝国勋章一级翔鹰勋章二级嘉禾勋章大评论家小评论家创意工坊通行证第十一届火箭筒杯最佳战役

附庸关系10
发表于 2015-5-2 03:20:04 | 显示全部楼层
很有趣的想法。突然想到另一件事:
例如個單位會忍術 ( 像是杏花宵裡的小次郎 )。

但是現在考慮本體只有一個:打分身是不會損血,打本體會損本體和分身。這樣的效果理論上也可以用AI寫出來了。

点评

AMO
可以的。类似地,90%和10%的均摊伤害也能做出来。  发表于 2015-5-2 20:31
嗯,AI能做到很多触发做不到的事情。  发表于 2015-5-2 04:13
回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6011

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2015-5-2 14:22:30 | 显示全部楼层
这个嘛,与其叫双重人格,不如叫“心连心”……
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

42

主题

7

精华

6万

积分

宗主教

耕战
11247
鹰币
32856
天龙币
0
回帖
1973

翔鹰建站十周年纪念章二级翔鹰勋章三级嘉禾勋章第十一届火箭筒杯优秀战役第十三届火箭筒杯冠军翔四电影节季军冒险七王者

附庸关系0
发表于 2015-5-2 16:24:55 | 显示全部楼层
我果然老了········
现在已经是一个AI的时代了·········

点评

看完我的ID與注冊日期再說  发表于 2015-5-2 17:42
进而无可御,退而无可追,此乃良将
回复

使用道具 举报

104

主题

4

精华

3万

积分

宗主教

耕战
5285
鹰币
20144
天龙币
0
回帖
2507

雄鹰勋章二级翔鹰勋章二级嘉禾勋章一级帝国勋章二级皇家勋章冒险七王者翔鹰建站十周年纪念章翔鹰十周年帝国Online大纪念章

附庸关系2
发表于 2015-5-23 22:45:49 | 显示全部楼层
既然这样,大概可以引申为地图传送效果咯

点评

AMO
可以的,生命值之间可以连锁。  发表于 2015-5-25 22:59
花易逝,人常情。
冥中泪,旧时心。
——————————————————————
图集:玲珑巧筑,泼墨千里
战役:打地鼠枪兵幸运E
帝国:Age of Empires II Scenario Design Edition
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-4-25 18:59 , Processed in 0.174304 second(s), 106 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

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