原始出處 https://answers.ea.com/t5/Technical-Issues/Troubleshooting-advice-for-2042-issues/td-p/10883092
文章內部的討論原本是在探討為何在頂級配備的CPU上面常常會有CPU使用率不足的問題 (GPU跟CPU使用率都無法到頂)
結論是BF2042的引擎常常會無法辨認hyper-threading (或是Ryzen系的SMT)造成在8c16t的架構下遊戲只使用8條執行緒造成cpu使用率偏低
於是有玩家發現可以藉由在遊戲安裝的資料夾 (BF2042.exe 所在位置) 底下新增一個User.cfg的檔案來修改遊戲對CPU的使用方式 內容如下
Thread.ProcessorCount <實體核心數>
Thread.MaxProcessorCount <希望遊戲使用的最大執行緒數量>
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount <希望遊戲使用的最大執行緒數量>
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
舉例來說 在我的11900k (8c16t)上面我使用的參數就會是
Thread.ProcessorCount 8
Thread.MaxProcessorCount 14
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount 14
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
最大執行緒數量使用14而不使用16的原因是為了避免CPU造成的卡頓 以下解釋
BF2042在引入128人戰場後對CPU的需求高到完全不合理的程度 運算能力不足的CPU很可能在遊戲執行時所有的CPU資源全部被BF2042佔走 但windows系統本身以及一些背景運作的服務還是需要運作 因此當它們被喚醒時就會造成BF2042暫時無法使用CPU而形成卡頓
解決方法就是一開始就預留一些CPU資源給背後的其他服務使用就可避免問題
以我弟的9600k (6c6t) 為例 他在修改前執行遊戲時CPU永遠使用率100% 遊戲中每5-10秒就會有強烈的頓挫感
而在User.cfg中加入
Thread.ProcessorCount 6
Thread.MaxProcessorCount 4 (留兩個CPU執行緒給系統使用)
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount 4 (留兩個CPU執行緒給系統使用)
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
後
原本的頓挫感便幾乎不再出現
這個方法最主要的後遺症是因為限制了BF2042的最大CPU使用率 最大張數"有可能" 會下降
但在順暢的遊戲體驗面前個人覺得沒有什麼意義就是了