Re: [AOE2] 教學:如何編輯劇情

看板AOE (世紀帝國 - 世紀帝國2 - Age of Empires)作者 (紳士的野蠻要藏在袖子裡)時間11年前 (2013/07/15 08:09), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串5/7 (看更多)
AOC劇情製作---AI觸發事件與鍵盤指令 序言: 自從上一次發布介紹劇情製作的文章至今也有很長一段時間。這段時間筆者又學會了許多 的技術與思考出不少有趣的想法,在這裡分享給各位。 這篇主要是在講述一個很簡單的技術:利用AI來強化單人劇情。這不但能增加主角單位的 隱藏參數,也能產生多支線劇情。在某種程度上,也可以產生譬如說隊友好感度等等這樣 的東西。 廢話不多說,我們進入正題。 1. AI指令寫法: 我必須聲明,我沒有寫AI的經驗。雖然我參考過許多人寫的AI,但是這裡就不班門弄斧了 。這裡我們只考慮一些AI指令。 首先,先隨便選一個你喜歡的AI檔。用記事本打開。例如我打開Zanzard Lothar寫的不動 AI: (defrule (true) => (set-strategic-number sn-maximum-food-drop-distance 0) (set-strategic-number sn-maximum-wood-drop-distance 0) (set-strategic-number sn-maximum-gold-drop-distance 0) (set-strategic-number sn-maximum-stone-drop-distance 0) (set-strategic-number sn-maximum-hunt-drop-distance 0) (set-strategic-number sn-food-gatherer-percentage 0) (set-strategic-number sn-gold-gatherer-percentage 0) (set-strategic-number sn-minimum-civilian-explorers 0) (set-strategic-number sn-wood-gatherer-percentage 0) (set-strategic-number sn-cap-civilian-explorers 0) (set-strategic-number sn-percent-civilian-explorers 0) (disable-self) ) (defrule (true) => (set-strategic-number sn-percent-enemy-sighted-response 100) (set-strategic-number sn-hits-before-alliance-change 25) (set-difficulty-parameter ability-to-maintain-distance 100) (set-difficulty-parameter ability-to-dodge-missiles 100) (set-strategic-number sn-number-explore-groups 0) (set-strategic-number sn-percent-attack-soldiers 0) (set-strategic-number sn-task-ungrouped-soldiers 0) (set-strategic-number sn-number-attack-groups 0) (set-strategic-number sn-enemy-sighted-response-distance 10) (set-strategic-number sn-total-number-explorers 0) (set-strategic-number sn-relic-return-distance 0) (disable-self) ) 好,接下來我們選一個從1~255的數字。這裡我選2為例,在文件中加入下面這兩種指令: 第一種: (defrule (taunt-detected 1 2) => (acknowledge-taunt 1 2) (cc-add-resource wood 1) ) 第二種: (defrule (event-detected trigger 2) => (acknowledge-taunt 1 2) (disable-self) ) 現在我解釋一下這兩種指令,第一種是說: 打開鍵盤輸入2,使用這個AI的電腦就會自動獲得1單位木材。 第二種是說: 打開鍵盤輸入2,使用這個AI的電腦就會開啟人工智慧觸發事件2。 當然第一種可以有很多變形,可以把wood改成gold。那電腦就會獲得黃金而不是木材。獲 得數量也可修改。 2. 應用: 現在來說怎麼用這個AI。我舉個例子說明: 首先,我們假設要製作這樣的事件:A和B是世仇,我們要經由對話選邊站。 主角先遇到單位A,單位A與主角有以下對話: A:你看起來武藝高強,我有一個請求,不知道你願不願意聽。 (願意) A:謝謝你,我需要你幫助我殺死一個兇惡的盜賊B。可以嗎? (願意) A:那就說定了。(加入主角) (不願意) A:那當我沒說吧。(開啟B的對話型2) (不願意) A:那沒事了。 與B的對話設計如下: 對話型1: B:你好。 對話型2: B:A說我是兇惡的盜賊嗎?你不要相信他。不如你幫我殺死他,我就永遠 跟隨你。 (願意) B:很好,我們出發吧。(加入主角) (不願意) B:那就算了。 這個事件有些複雜度,但是本質上他就是一個不斷的二選一問答。所以我們可以這樣想: 首先製作一個AI,用到兩組第一種指令: (defrule (taunt-detected 1 1) => (acknowledge-taunt 1 1) (cc-add-resource wood 1) ) (defrule (taunt-detected 1 2) => (acknowledge-taunt 1 2) (cc-add-resource gold 1) ) 好。這組指令是說:輸入1則電腦獲得1木材。輸入2則電腦獲得1黃金。 打開AOC的地圖編輯器,設定三個遊戲者。遊戲者2就用剛剛完成的這個AI檔。接下來開啟 事件觸發,用以下格式來製作這類型的二選一: ============================================================ 事件觸發1:開 循環 (對話1) 狀況1:將主角帶給A 狀況2:選擇物件A 效果1:顯示指令:(第0行) "A:你看起來武藝高強,我有一個請求,不知道你願不願意聽。" 效果2:顯示指令:(第2行) "主角: 1. 好 2. 不好。" 效果3:啟動事件觸發2 效果4:啟動事件觸發3 事件觸發2:關 循環 狀況1:將主角帶給A 狀況2:選擇物件A 狀況3:累積屬性:遊戲者2木材1 效果1:啟動事件觸發4 效果2:關閉事件觸發1 效果3:關閉事件觸發3 效果4:貢品:遊戲者2給大地之母1木材。 事件觸發3:關 循環 狀況1:將主角帶給A 狀況2:選擇物件A 狀況3:累積屬性:遊戲者2黃金1 效果1:啟動事件觸發5 效果2:關閉事件觸發1 效果3:關閉事件觸發2 效果4:貢品:遊戲者2給大地之母1黃金。 ============================================================ 寫到這裡就算是"一組"事件。也就是說這組事件把劇情根據玩家的回答分割成從事件4開始 或是從事件5開始。事件4寫法和事件1一樣,然後會再次把事件分成兩個可能。 事件觸發4:關 循環 狀況1:將主角帶給A 狀況2:選擇物件A 效果1:顯示指令:(第0行) "A:謝謝你,我需要你幫助我殺死一個兇惡的盜賊B。可以嗎?" 效果2:顯示指令:(第2行) "主角: 1. 好 2. 不好。" 效果3:啟動事件觸發6 效果4:啟動事件觸發7 ………。 最後,當你寫完所有事件觸發後,記得加上這兩個事件: 事件觸發n:開 循環 狀況1:累積屬性:遊戲者2木材1 效果1:貢品:遊戲者2給大地之母1木材。 事件觸發n+1:開 循環 狀況1:累積屬性:遊戲者2黃金1 效果1:貢品:遊戲者2給大地之母1黃金。 就完成了這個劇情。 同樣的,你也可以使用第二種指令來建立這類的劇情。第二種指令的優點是他不會占用到 電腦玩家的資源。缺點是他只能使用一次,無法重複好幾層對話。 結語:這裡我簡單介紹了一下AI和事件觸發是如何配合,產生出更多劇情的可能性。當然 這只是一個基礎應用,筆者也應用了這個技術製作了譬如虛擬單位的交易與武將技等等這 些可以應用的方式。如果能配合上模組修改技術和其他程式,將是一個非常有發展性的技 術。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.247.0.115

07/15 18:40, , 1F
只能推了
07/15 18:40, 1F

07/15 19:13, , 2F
模組修改在nakuz有文章介紹哦!
07/15 19:13, 2F

07/15 19:16, , 3F
小弟覺得還滿好玩
07/15 19:16, 3F

07/18 03:12, , 4F
我看了一下,確實不錯。其實我本來也想寫關於模組的,
07/18 03:12, 4F

07/18 03:13, , 5F
但是解釋起來太複雜了,很多要親手做才知道。
07/18 03:13, 5F

07/18 03:15, , 6F
基本上現在是這樣子的。有人做模組、有人寫劇情
07/18 03:15, 6F

07/18 03:16, , 7F
但是我個人認為這兩者應該合作起來,相輔相成
07/18 03:16, 7F

07/18 03:17, , 8F
譬如我要做一個三國的戰役,大概有40~50關這樣子。
07/18 03:17, 8F

07/18 03:18, , 9F
我要先去想我需要的圖、製作一個我的模組。
07/18 03:18, 9F

07/18 03:19, , 10F
做完人都老了怎麼還能做劇情想觸發和測試?
07/18 03:19, 10F

07/18 03:20, , 11F
更不要說還要加上動畫、配音、甚至修改遊戲介面了
07/18 03:20, 11F
文章代碼(AID): #1HupsX79 (AOE)
文章代碼(AID): #1HupsX79 (AOE)