翔鹰帝国网|帝国时代论坛|帝国时代II高清版|神话时代|亚洲王朝|征服者|罗马复兴
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 492|回复: 24

[求助] 探討一下如何讓AI判斷自己在TEAM中處於邊界

[复制链接]

13

主题

0

精华

1563

积分

侯爵

耕战
300
鹰币
10
天龙币
0
帖子
49
附庸关系0
发表于 2016-12-9 22:15:04 | 显示全部楼层 |阅读模式
正常情況下對手都會進攻邊界的隊友
所以邊界的隊友其實更適合及早進行防守而不是直城
我希望能讓AI處於邊界時(判斷自己位於邊界時)及早進行防守
而處於內部的其他隊友AI可以考慮直城
地圖版圖大一點使用ENEMY BUILDING IN TOWN似乎沒甚麼意義
回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-9 23:01:41 | 显示全部楼层
AI玩家之間無法交流, 感覺很難, 特別是不同地圖各玩家城鎮中心距離可以相差很遠, 更不用說多TC或無TC的情況了

不過針對官方地圖倒是有可能
回复

使用道具 举报

13

主题

0

精华

1563

积分

侯爵

耕战
300
鹰币
10
天龙币
0
帖子
49
附庸关系0
 楼主| 发表于 2016-12-9 23:39:56 | 显示全部楼层
目前構想的一個臨時性方法是

在特定時間內(例如封建時代)
模仿TSA 進行TOWN-SIZE擴大
根據地圖尺寸擴大的數值不一樣,例如只擴大30
如果在30點內檢測到敵方建築就判斷自己是處於邊界
此時按實際情況取消直城,轉為封建防守
回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-10 01:32:47 | 显示全部楼层
這樣不算是好方法, 特別是對方中路前置軍事建築時肯定會誤判
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-10 13:05:19 | 显示全部楼层
这个很好办,先输入自己和盟友的城镇中心坐标然后两两计算距离,距离最长的两个为边

评分

参与人数 1鹰币 -1 收起 理由
狂~劇情狂 -1 內容誤導:不同玩家之間 goal 無法進行比較

查看全部评分

回复

使用道具 举报

13

主题

0

精华

1563

积分

侯爵

耕战
300
鹰币
10
天龙币
0
帖子
49
附庸关系0
 楼主| 发表于 2016-12-10 13:44:04 | 显示全部楼层
樓上的兄弟說法是有用
可惜只適用於高階的USERPATCH
HD版並不支援 座標的功能
回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-10 19:34:26 | 显示全部楼层
五樓的說法UP也做不到,我在二樓已經說了不同玩家之間的goal無法直接進行比較

交流基本必須透過up-chat-data-to-player 再窮舉各距離的 taunt-detected
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-11 11:48:36 | 显示全部楼层
狂~劇情狂 发表于 2016-12-10 19:34
五樓的說法UP也做不到,我在二樓已經說了不同玩家之間的goal無法直接進行比較

交流基本必須透過up-chat- ...

可以获得坐标点位置的不信我写给你看
(defconst gl-point-x 100)
(defconst gl-point-y 101)

(defrule
       (true)
      
=>
      (set-strategic-number sn-focus-player-number 2)
)
(defrule
     (up-find-remote c: 109 c: 1)
=>
     (up-set-target-object 1 c: 0)
     (up-get-point position-object gl-point-x)
)
     
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-11 11:55:46 | 显示全部楼层
狂~劇情狂 发表于 2016-12-10 19:34
五樓的說法UP也做不到,我在二樓已經說了不同玩家之間的goal無法直接進行比較

交流基本必須透過up-chat- ...

坐标都弄成两个独立的变量了还不能比较吗
回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-11 17:27:25 | 显示全部楼层
這裡再說一次:不同玩家之間的 goal (變量)沒法直接比較,重點根本不是能否獲取坐標,這論壇上與 UP 相關的 AI 有一半是我擴寫或漢化的,請你別再班門弄斧了。

先討論你所說的計算「自己和盟友的城镇中心」坐標和距離的方法,假設一隊有四個玩家 A 、B 、C、D 依序排列, A 與 D 在邊界,你確實可以用一個玩家的 goal 檢測 A 與其他玩家之間的距離誰最長,玩家 A 知道自己與 D 之間距離最長,玩家 B 知道自己與玩家 D 之間距離最長,玩家 C 知道自己與玩家 A 之間距離最長,玩家 D 知道自己與玩家 A 之間距離最長。但之後又如何?四名玩家彼此之間仍然必須設法透過 taunt 或其他方法來交流確切距離,才能肯定哪一玩家是邊界。

相比之下,單純計算各同隊玩家城鎮中心(而非限於自己和間友之間)距離會更有效,但是仍有一些問題:一來 up-compare-goal 僅用於兩個指定變量之間的比較,在同隊玩家數量不可知的情況下,實際操作將需要複雜的規則代碼;二來佔用 goal 的位置會太多,為了確保代碼執行起碼要八名玩家 TC 之間距離加坐標的儲存位置;三來一些自訂地圖會將同隊玩家均距分佈,此情況下透過 TC 距離計算反而可能誤判戰術。

另外計算 TC 距離此一作法的其他破綻在上面我也提過了: up-find-remote 要求玩家視野先看到對方的物件,並且不能預估建造中的位置,因此不太適用於開局無 TC 的地圖;而多 TC 的情況也會因為無法確定單一 TC 而出現誤判。

關於計算單位距離,參見http://www.hawkaoc.net/bbs/forum.php?mod=viewthread&tid=118721http://www.hawkaoc.net/bbs/forum.php?mod=viewthread&tid=136622

最後補充一下, up-compare-goal 可以用於 HD 版 AI 。
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-11 18:33:27 | 显示全部楼层
狂~劇情狂 发表于 2016-12-11 17:27
這裡再說一次:不同玩家之間的 goal (變量)沒法直接比較,重點根本不是能否獲取坐標,這論壇上與 UP 相關 ...

为什么必须要看到,探索到的就不行吗
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-11 18:37:12 | 显示全部楼层
狂~劇情狂 发表于 2016-12-11 17:27
這裡再說一次:不同玩家之間的 goal (變量)沒法直接比較,重點根本不是能否獲取坐標,這論壇上與 UP 相關 ...

楼主所说的做边当然是那种规规矩矩的竞赛似的地图,那些不规矩的地图又何来做边一说,ai当然能知道自己是什么样的地图了,只要通过检测系统定义的常数就知道了,再说难道电脑还不能通过检测系统常数知道自己到底有几个同盟吗
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-11 18:39:57 | 显示全部楼层
本帖最后由 mxzwt2 于 2016-12-11 18:42 编辑
狂~劇情狂 发表于 2016-12-11 17:27
這裡再說一次:不同玩家之間的 goal (變量)沒法直接比較,重點根本不是能否獲取坐標,這論壇上與 UP 相關 ...

再说,如果up-find-remote真的只能找到视野看到的,而不能检测到已经探索到的建筑物,那ai代码要这个动作有什么用,敌人的一切都检测不到了
回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-11 19:46:51 | 显示全部楼层

o

你先學好基本的設計原理:一個好的 AI 設計是不應該作弊的,而檢測視野可見以外的物件就是作弊的一種, UP AI 之前官方 AI 就已經透過 cc-players-building/unit-count 及 players-building/unit-type-count 兩種事實區分了視野可見與不可見,過去一些 AI 腳本設計比賽甚至特別明文禁止 cc- 系列代碼。當然,從你在其他帖子的提問(如http://www.hawkaoc.net/bbs/thread-138532-1-1.html),可以看出你連官方教程都沒細看。

接著,你上面的代碼也有大量錯誤,例如 up-find-remote 在你的寫法下單獨作為事實不會觸發、up-set-target-object 給出 1 代表 search-local 而非 search-remote (2) ,up-get-point 的 position-object (12) 並非系統定義常數而會報錯,此外搜索前應先執行 up-reset-filters 、 up-reset-search 否則很有可能查找不到。

還有,你在十一樓與十三樓所說代表你根本沒理解 up-find-remote 背後原理,開局視野「看到」與「探索到」對於 AI 玩家是一樣的(我說不適用於無 TC 地圖的原因也與這點沒有關連),這裡需要分開同盟、敵對物件加以說明:

  • 雖然 Userpatch 相關文件與一些發展 AI 設計者聲稱同盟單位物件列入 up-find-remote 的判定條件受 AI 玩家視野影響,但實際它是基於 AI 玩家本身的外交態度是否視對方為同盟來決定,並且無視對方是否亦為盟友(它在對局執行上與受玩家視野影響差別確實不大,這點只考慮打局發展的設計者是較難發現的,但戰役 AI 作者就會知道它探索同盟物件並不需要製圖學科技或雙方互為盟友)。
  • 至於敵對單位方面,或者嚴格來說是被 AI 玩家視為敵對的物件(就算對方是盟友),則是 AI 玩家看過一次就會加入搜索範圍,這點與非 cc- 系列事實是相同的,同時也要注意間諜科技不能克服此一限制。

至於多 TC 與無 TC 兩種設定都有出現在 ES 官方設計的地圖,而現在國外流行用於比賽對戰的 MegaRandom 等自訂地圖亦有出現這兩種設定及均距開局。



回复

使用道具 举报

1

主题

0

精华

444

积分

子爵

耕战
80
鹰币
10
天龙币
0
帖子
22
附庸关系0
发表于 2016-12-11 22:32:40 | 显示全部楼层
话说UP不是能定义坐中吗?#load-if-defined UP-POCKET-POSITION

还有mxzwt2 你上个帖子关了 但是我得说taunt-detected my-player-number亲测有效 请不要乱下“根本检测不到”这样的评论噢

评分

参与人数 1耕战 +20 收起 理由
狂~劇情狂 + 20

查看全部评分

回复

使用道具 举报

402

主题

60

精华

25万

积分

教皇

耕战
42865
鹰币
1445512
天龙币
10
帖子
5794

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

附庸关系1
发表于 2016-12-11 22:59:52 | 显示全部楼层
AI2015 发表于 2016-12-11 22:32
话说UP不是能定义坐中吗?#load-if-defined UP-POCKET-POSITION

还有mxzwt2 你上个帖子关了 但是我得说t ...

完全忘了這個,確實反向思考不在中路就是邊界,而且 HD 版也能使用,那用load-if-not-defined就行了……
回复

使用道具 举报

45

主题

0

精华

269

积分

男爵

耕战
9
鹰币
209
天龙币
0
帖子
185
附庸关系0
发表于 2016-12-12 11:47:10 | 显示全部楼层
AI2015 发表于 2016-12-11 22:32
话说UP不是能定义坐中吗?#load-if-defined UP-POCKET-POSITION

还有mxzwt2 你上个帖子关了 但是我得说t ...

为什么用(taunt-detected my-player-number 1)就有效,我用(taunt-detected 1 1)就没有效呢
回复

使用道具 举报

1

主题

0

精华

444

积分

子爵

耕战
80
鹰币
10
天龙币
0
帖子
22
附庸关系0
发表于 2016-12-12 13:11:12 | 显示全部楼层
狂~劇情狂 发表于 2016-12-11 22:59
完全忘了這個,確實反向思考不在中路就是邊界,而且 HD 版也能使用,那用load-if-not-defined就行了……

嗯嗯 之前测试多人局 发现新ai总是坐边打封快 坐中直城 因此特地留意了下2333
回复

使用道具 举报

1

主题

0

精华

444

积分

子爵

耕战
80
鹰币
10
天龙币
0
帖子
22
附庸关系0
发表于 2016-12-12 13:12:10 | 显示全部楼层
mxzwt2 发表于 2016-12-12 11:47
为什么用(taunt-detected my-player-number 1)就有效,我用(taunt-detected 1 1)就没有效呢

这个。。不太了解啊
回复

使用道具 举报

13

主题

0

精华

1563

积分

侯爵

耕战
300
鹰币
10
天龙币
0
帖子
49
附庸关系0
 楼主| 发表于 2016-12-12 16:13:35 | 显示全部楼层
UP-POCKET-POSITION 這個不太理解
請各位前輩多說明一下這個
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国 ( 蜀ICP备07503549号 )

GMT+8, 2017-6-25 08:08

Powered by Hawk Studio  QS Security Corp.® Licensed

© 2001-2017 Hawkaoc.net All rights reserved

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