作者DogEggz (DogEggz)
看板Paradox
標題[HOI4] 1.3.3開發日誌#2: 資源缺乏、AI、效能
時間Thu Feb 16 13:06:15 2017
原文:
https://goo.gl/yBU7F9
資源缺乏
目前資源缺乏最多只會有80%的產能懲罰
因此玩家可以用大量工廠來減少缺乏資源的減成
我們覺得這種機制的真實性不夠,也使缺乏資源對大國家來說不那麼致命
因此我們將資源缺乏的懲罰上限提高至100%
產線上每"個"(不是每種)缺乏的資源會給予5%的產能懲罰
因此缺超過20個資源後工廠就無法運作
便民改動
- 下達建築指令時同時按下Crtl可以將該建築提升至第一建築順位
- 點擊師團時單位界面現在會切換到該師團所在的位置
(圖示:
http://i.imgur.com/5xWikKp.jpg )
- 右下角新增隱藏非玩家單位的按鈕(快捷鍵:M),讓你可以簡單找到你的軍隊
(圖示:
http://i.imgur.com/Hdp6fdT.jpg )
- 新增關閉戰爭迷霧按鈕,讓你可以更清楚的分辨地形
- 新增讀取進度條
- 多人連線時有人LAG的警告訊息改為通知(界面上面那一排)而非彈出視窗
- 新增陸軍師團未被指派的通知
(圖示:
http://i.imgur.com/J6pWuqD.png )
AI
我們發現德國在多次重複試驗中都可以打敗英國
一開始我們以為是因為德國能穩定的擊敗蘇聯而獲得大量工業產能
利用這些工業產能德國就可以海贏英國的飛機
後來我們發現我們錯了,主要的原因為海軍的AI不會更動已指派艦隊的任務區域
所以海軍會卡在特定的區域,因此我們做了以下兩點更動
- AI現在可以更好的評估海軍區域的情況,以便AI做艦隊調動
- 突擊艦隊(AI的海軍分類)在沒有任務會使用岸轟功能幫助陸上戰鬥
突擊艦隊指的是與其他國家海軍作戰的艦隊
接著是部分1.3.3的重點AI改動,注意這不是完整的改動列表
- AI在訓練部隊時會考慮他目前能補給多少部隊
- 增加equipment_stockpile控制選項,使你能藉由MOD的方式改變AI囤積軍備的數量
- 已有足量部隊的AI現在會改為囤積軍備而不是一直部屬部隊
- AI可以更好的使用作戰計畫系統,且可以更準確的評估各個前線所需的部隊
- AI不會再直接刪掉整個前線計畫了,在更改作戰計畫時AI會採用更溫和的改變
- AI在達到預期部屬數量後就會不會再繼續生產部隊
- 修正AI會忽略反抗游擊軍的重大問題
之前的CODE裡面我們是寫"擁有"區域而不是"控制"區域,所以AI完全不會理會剛占領的
領土工廠被拆爽爽,現在AI會使用防守駐軍指令來控制游擊軍了
- 修正AI提供軍備的邏輯
- AI現在會送過時的裝備給其他國家
- AI現在會在適當條件下取消運送軍備
- AI不會在擁有大量民生工廠時興奮的開始狂蓋港口和軍港了
效能改進
這次的效能改進主要針對的目標是效能尖峰需求時段的優化
也就是每次遊戲時間進入下一天的瞬間
在經過修正後遊戲的速度大約提升了14%~18%
1.3.2板時換日大約需要4秒,1.3.3板只需要不到0.4秒
除此之外遊戲的其他部分也有效能的改進
以下會說明我們是如何改進效能的
這個段落會比較技術性一點,對Coding沒興趣的人可以左轉離開了
- 我們改善了簽訂和約時AI國家計算他們割讓領土時的CODE。AI在合約畫面時會死命的按
跳過,每按一次就會讓遊戲跑得更慢,遊戲中每次談合約都會發生這個現象,在更正
code loop後問題就完美的解決了
- AI在指派海軍任務時,為了確保自己的指令有被正確的執行,他會一直發出移動艦隊的
指令(想像玩家玩即時戰略時一直點右鍵動部隊,差不多就像那樣),因此我們加了一行
Code之後就解決了這個問題
- AI計算登陸計畫、前線的部隊部屬、海軍戰鬥的雷達加成、運輸艦的路線的方式皆獲得
優化
- 補給系統的改進
在補給系統方面,我們大量的使用"提供的補給量"和"補給的需求量"這兩種資訊,主要是
用來判定可以塞多少部隊進去某區域而不會產生耗損。每次有需要用到補給系統的地方,
系統都會從頭計算可以提供多少補給量和需要多少補給,它會從區域中的每個單位身上獲
取補給需求量的資訊,也會計算目標區域可以提供多少補給,這個流程在遊戲的各個階段
都會大量的從頭重複計算,消耗大量效能,因此我們更改了code使部分資訊在第一次計算
後會存到快取記憶體中,之後需要這些資訊時,系統就會從記憶體中獲得。
另一個補給系統的問題是大量的部隊,在遊戲後期部隊太多時一直計算補給量很容易把系
統操壞,所以我們重寫了計算區域補給消耗量的code。之前的code會問區域中的每個部隊
你需要消耗多少補給,現在是每個部隊會自己回報他們的補給需求,地區中的部隊將他們
的補給需求統計後呈現在區域資訊中。雖然文字敘述上看起來是一樣的,但在code上可以
減少很多loop。俗話說的好,最好的優化方式就是直接把功能移除:D
補給方面還有其他優化的改動,總結而言之前補給系統占了每日計算的65%
現在只需要6%以下就能完成補給系統的計算
另一個改進是AI使用師團設計器的方式,目前每次在師團設計器中新增/移除/取代師團
時,整個師團的數值都會從頭計算。只有單一國家在弄師團設計器的時候並不會對效能造
成太大的影響,但如果全世界的AI國家都在同一時間嘗試各種不同的組合時就會對系統造
成負擔,因此我們把它改成只有在完成師團設計後才會計算數值。
最後一個是我最喜歡的改動,在克勞維茲引擎中有一個很舊的code loop是用來處理界面
的,它是使用平面的系統而不是樹狀層次的系統,所以我們在界面中加入新功能的時候會
導至效能越來越糟糕,甚至到了視窗不需要顯示的狀況下都會拖累效能。之前沒人敢動這
個牽一髮而動全身的部分,現在我們找到了新方法來修正這個loop,使每次loop要跑數量
從大約120000/禎到700/禎以下,也就是代表引擎不會在你開科技樹界面的時候,還分了很
多資源去跑你根本沒開起來的政府界面了。我們把這個部分怎麼改動告訴了其他團隊(CK、
EU、Stls),如果它們還是使用類似的code的話就可以把這些改動套用到其他遊戲中,改善
它們使用界面的效能。
我們目前仍致力於遊戲後期效能的改進,目前這些所有的改動花了我們1.5個星期,你可以
期待我們在未來的版本中持續修正這個部分。
----------------------------------------------------
由於本人非資訊相關科系,效能改進的部分可能會翻的比較不通順,歡迎指正
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.156.73
※ 文章網址: https://www.ptt.cc/bbs/Paradox/M.1487221578.A.F9B.html
→ michaelxxx: 從code這邊看來,eu4的系統效能消耗搞不好也能有提升 02/16 13:18
如果eu4的團隊沒有更動過這個部分,那就可以用這個方法提升效能
推 hinanaitenco: 總而言之遊戲變順了就是好事 02/16 13:19
→ oz5566: 後期LAG真的煩凡的 02/16 13:20
→ oz5566: 對了你圖片最後面離)太近 好讀板出不來 02/16 13:22
感謝提醒,已修正
→ michaelxxx: eu4似乎有一直讀取省份歷史的習慣 02/16 13:45
→ michaelxxx: 假如這次更動介面code有改到這邊就好 02/16 13:47
→ sevenny: 靠 橡膠只有東南亞有啊 02/16 14:16
→ sevenny: 又在打壓希老闆 02/16 14:17
推 WASIJLA: 大概德國太猛,最近一直被削弱 02/16 14:59
→ WASIJLA: 感覺HOI團隊coding蠻強的,大概是新來了高手 02/16 15:58
推 tyrueiwo: 聽起來只要出一堆一工廠生產線就贏了? 02/16 16:01
缺乏資源給與的懲罰是綁工廠的,所以你開多產線一樣會有產能懲罰
推 goodgodgd: 這就是軸心在史實中面臨的困境啊 02/16 16:10
推 jason222333: 真是厲害 困難的bug都解掉了 02/16 18:07
推 tyrueiwo: 是會有懲罰 可是例如缺橡膠。每條生產線都缺三橡膠 就每 02/16 18:23
→ tyrueiwo: 條生產線各扣15% 總合起來還是15%啊 02/16 18:24
推 GKKR: 結果還是不讓我屯橡膠跟油阿! 02/16 18:27
推 tyrueiwo: 跑去看了原文 下面回應是說堆疊是一起算的 所以我誤會了 02/16 18:29
推 kons: 改AI是很好,但沒新系統讓人暫時不想回鍋 02/16 19:02
推 x838550: 又往open beta更進一步惹www 02/16 20:04
推 jacky1990b: P社的遊戲需要至少1-2年熟成 你看那精美的EU4(咦 02/16 20:13
推 deluxe: 可以期待他後期的效能好多了對吧? 02/17 00:01
推 Anderson0819: 阿不就回到3 而已......真的超半成品的 02/17 00:22
HoI4初版和Stls初版比起來我覺得Stls半成品感比較重
但是Stls的更新有誠意很多 HoI4的就讓我很無感
尤其是HoI4修AI修了快1年了 還是有很明顯的智障感 很破壞單人遊戲體驗
推 firewalker: 每次聽開發日記就覺得是不同的遊戲,我不管怎麼看都是 02/17 05:17
→ firewalker: 德國輸給蘇聯,偶爾還會輸給法國跟波蘭 02/17 05:17
史實模式下還是有低機率發生非史實結果喔
之前還看到有人分享史實模式下法國直接拒絕萊因區重新武裝
1936就直接AI對尻了
我自己是玩非史實模式所以對這種事情的接受度比較大
※ 編輯: DogEggz (140.121.156.73), 02/17/2017 10:39:02
→ michaelxxx: hoi4在國府還沒作完前都是半成品 02/17 11:05
→ michaelxxx: 亞洲明明就是個大戰場還是通用政治樹就是證明 02/17 11:06
→ michaelxxx: Stls的問題是科技樹太小,然後一堆抵銷政體特色的科技 02/17 11:10
→ camerachao: 其實我希望可以多一些政策樹選擇,不然一個系統很容易 02/17 12:10
→ camerachao: 玩膩,沒辦法像eu4那樣玩幾千小時不膩。各個意識形態 02/17 12:10
→ camerachao: 都一個完整的樹這樣。 02/17 12:10
→ firewalker: 我說的是一切都史實到開學日,結果德國被波蘭推爆那種 02/17 18:36
→ firewalker: 窘境 02/17 18:36
推 jonathan836: 玩了幾百小時,只有一次開史實時看到德國沒吃下波蘭 02/17 18:38
→ jonathan836: ,1.3版剛出的時候 02/17 18:38
推 jonathan836: 樂見AI修正與系統優化 02/17 18:43
→ DogEggz: 1.3.3版beta已上囉 改不少東西 02/17 23:16
→ DogEggz: 中共領導變成張國燾了 RIP老毛 02/17 23:20
推 bill50514: 查了一下 36年中共主席是張國燾沒錯啊 02/18 01:11
→ DogEggz: 剛剛玩了一下Beta發現還是老毛 可能是指國民政府轉共產 02/18 01:46
→ DogEggz: 的領袖改成張 02/18 01:47