close
自己飛也是一樣
晚上開著FS2004測試一些新加上去的東西, 然後想說照著AIP, 玩一下從馬公飛七美
想不到就要在七美RWY02落地時, 一個老朋友出現了:
"Runtime Error! Program: E:\FS2004\fs9.exe R6025 - pure virtual function call"

為什麼說是老朋友? 因為這個在幾年前就出現過, 印象中是這樣:
(1)有一次從東沙飛C-130回來, 在南海的時候出現過一次(沒飛過第二次測試)
(2)用MRAI Traffic View Board觀察AI機, 從馬公飛高雄要做RWY09進場時必定出現
(印象中複製率超高)

說巧也真巧, (2)的狀況和現在遇到的有一個共通點 - 飛機都是從馬公出發的
難道馬公機場有啥魔力!?
這當然是不可能的, 鐵定是讀了什麼東西出錯, 導致整個程式崩潰
只是當時一直沒有很完整的去測試找原因, 讓這個遺毒一直留到今天

想來有點悲哀, 平常工作的時候就是不斷debug, 結果在假日應該是要放鬆腦袋
卻還是得對著FS來debug....
只不過為了不要有機會飛到一半程式崩潰導致敗興, 該處理還是得處理 Orz

花了一大堆時間想些手法測試, 感覺自己飛實在不是一個有效的方式, 既耗時且變因又多
只是這中間還是可以觀察到一些來龍去脈:
(1)從RWY20降落就正常, 但是RWY02則必死
(2)與場景無關 - 即使將七美機場和整個El Formosa地形都disable, 往同樣的地方飛還是會死
(3)與場景順序無關 - 依照一些"tweak建議"將scenery.cfg的area和layer數值調整為一致, 也沒用

好像沒什麼結論, 看來最有效率的做法, 就是乖乖觀察AI機, 再去調整變因
就像這個德安從馬公飛七美的plan, 再開啟4x加速, 大概五分鐘就到達final approach
只要風向不要亂改, 讓她從RWY02降落, 複製率是100%
FS2004發生R6025 Runtime Error

觀察一些網路上這十年來對於相同症狀的討論, 多半傾向是第三方gauge或是add on造成的
不過顯然這不是我遇到的狀況(用內建Cessna飛一樣也會死)
也有人說他寫信去問M$, 對方回應是"每15分鐘更新真實天氣時出包" - 顯然也不是
因為預設晴朗天氣也一樣

既然不是上述問題, 那比較有可能的狀況就是AI flight plan了
我自己針對AI flight plan的做法是分成幾個檔案方便管理:
臺灣, 臺灣空軍, 美國, 日本, 中國, 世界其它, 軍事, 復古, 以及其它MAIW的package

結果全部先移掉, 只留臺灣(因為有徳安flight plan), 發現一切正常!!
接著一個一個加回來測試, 發現最後問題是出在"軍事"這一個檔案

既然找到出問題的檔案, 接下來就要看是哪幾行flight plan出包
由於發生問題的點遍及南海, 高雄外海以及七美, 直覺上就是鎖定下面這幾行 - 結果先mark掉之後
竟然也是一切正常!!
//U.S. Navy CVN-70 Carl Vinson near Taiwan
AC#2901,112,1%,24Hr,VFR,00:00,TNG02:00,100,F,112,AC08,04:00,TNG06:00,100,F,112,AC08
,08:00,TNG10:00,100,F,112,AC08
AC#2901,113,1%,24Hr,VFR,00:00,TNG02:00,100,F,113,AC08,04:00,TNG06:00,100,F,113,AC08
,08:00,TNG10:00,100,F,113,AC08
AC#2902,114,1%,24Hr,VFR,02:00,TNG04:00,100,F,114,AC08,06:00,TNG08:00,100,F,114,AC08
,10:00,TNG12:00,100,F,114,AC08
AC#2902,115,1%,24Hr,VFR,02:00,TNG04:00,100,F,115,AC08,06:00,TNG08:00,100,F,115,AC08
,10:00,TNG12:00,100,F,115,AC08

這是我在南海加了一艘卡爾文森號之後, 又塞了幾架F-14 AI讓他們不斷做TNG (touch and go)
仔細觀察, 這有一個問題: 一般正常的AI flight plan, 其leg數都是二的倍數, 而這幾個則都是三個leg

不過對TTools和AIFP而言, 這些AI flight plan是合法的, compile時並不會檢測出任何error
而且調整成兩個leg後, 顯然也沒有幫助 - 甚至AI機在離跑道頭更遠的地方就會掛掉

那麼問題是出在TNG嗎?
原本我的意圖是"不斷做TNG直到某個時間點再真的降落"
但看起來這樣會出問題 - 雖然不知道為什麼, 而且compiler也認為合法, 但就是會出包
anyway, 把TNG拿掉之後, 一切都恢復正常了!!

有了這次的教訓, 以後就知道不要濫用TNG - 至少像這種讓他"TNG到死"的情況要避免~ Orz
arrow
arrow

    Houting 發表在 痞客邦 留言(0) 人氣()