13号避难所

 找回密码
 立即注册
搜索
楼主: novarain
打印 上一主题 下一主题

FO2引擎mod - sfall

[复制链接]
41#
 楼主| 发表于 2019-1-9 13:31:08 | 显示全部楼层
sfall今天更新到4.1.4/3.8.14,詳細更新資訊請參考另一帖
在檯面上可見的主要仍是腳本相關的修正和功能性擴充,這回沒啥遊戲修正的部份,檯面下幾乎都是源碼重構或優化ASM的效能。
電梯INI檔對一般玩家來說沒啥意義,那是給modder用的。最大改進是現在能建立全新的電梯,原本電梯資料像是面板用什麼圖像、有幾個按鈕、各按鈕對應的出口等等全是寫死在引擎內的,數量也就固定24個(編號0~23)。
之前新增電梯只能取既有種類當範本(面板圖像與按鈕數量),然後出口資料用INI設定覆寫,現在面板圖像與按鈕數量都能自行指定,不用再拿舊電梯當範本。
新增的UseWalkDistance是原本玩家在試著使用物件或撿地上物品時,在間距3格以內的距離會切換成用走的過去進行動作,超過就一率用跑步過去,現在可以縮短那間距甚至取消切換(不能加長,因為也沒啥人會想那樣做)。

我打算在接下來幾次更新之後完全停掉3.8.x的維護,從這次開始不會再跟隨4.x新增任何功能,只會修正bug或重構源碼到停掉為止。
畢竟還會更新3.8.x完全只是我個人想讓sfall在原生Win2000上運作,但移植4.x的源碼更新愈來愈麻煩(4.x用C++11),而且我同一個更新要多做一倍以上的測試以確定修改後的源碼正常,實在有點耗心力。
其實Win2000裝別人寫的擴展核心就能跑一部份在XP系統以上才能動的東西,sfall 4.x也包括在內,我只是留有無謂的堅持而已。
42#
 楼主| 发表于 2019-1-14 14:13:40 | 显示全部楼层
sfall今天更新到4.1.4.1/3.8.14.1,為上週前一版的緊急修正。

前一版更新過程中多了新bug,讓你在加技能等級時,本來該花費的技能點數計算出錯,變成一律以最高等級來扣。
舉個例子,像你現在修理技能50%,升級了有20點可用,點一下增加鈕本來該是扣1點加1%,結果是扣6點加1%(技能等級在201% ~ 300%時的花費),但按減少鈕只會退給你1點,這“手續費”也抽太兇了些。
因為影響到遊戲過程而且挺嚴重的,所以直接出了緊急修正。
43#
 楼主| 发表于 2019-1-27 00:25:59 | 显示全部楼层
wrhunter 发表于 2019-1-26 22:49
4.1.4.1升级加技能点时,如果把已经加的点扣完后继续点,极大几率导致系统重启……

我不太懂,扣回到本來數值再扣,不是該跳出個窗口說已經是最低點不能再減嗎?
會搞到整個系統重啟我想應該是其他問題而不是sfall本身....你是在英文版還是漢化版RP上碰到這事?
44#
 楼主| 发表于 2019-2-8 12:24:44 | 显示全部楼层
YAAM公式沒有調整過,如果換成3.8.14.1也一樣的狀況那就不是sfall的問題了。
你確定你有用上改變彈藥屬性的檔案嗎?

EDIT: 我剛試了4.1.4.1和3.8.14.1,用穿甲彈對穿金屬裝甲的敵人造成的傷害都一樣,也合乎公式計算結果。

45#
 楼主| 发表于 2019-2-10 23:14:37 | 显示全部楼层
有人已經用sfall腳本重現了差不多的功能,所以不考慮。
46#
 楼主| 发表于 2019-2-12 11:37:53 | 显示全部楼层
sfall今天更新到4.1.5/3.8.15,詳細更新資訊請參考另一帖
主要還是腳本相關的修正,特別是修了兩個存在很久的老問題。
一個是對內存中的虛擬文件系統進行操作的相關函式和設定,這些玩意兒從十年前2.12版以來就有問題,但因為沒啥人會想在腳本內使用(應用性太低)所以一直就這樣放著。
一個是set_self無法配合use_obj_on_obj、attack、attack_complex腳本函式運作,因為它本來只能把self_obj重新定義一次(在下一個函式呼叫完就會重置),但那三個腳本函式實際內部運作會呼叫self_obj兩次,變成在內部第二次試著調用self_obj時對不上讓遊戲當掉。

另外結局幻燈片現在不受遊戲速度影響,不用再擔心結局播放速度和飛的一樣讓你看不了字幕之類的。
47#
 楼主| 发表于 2019-2-13 22:36:08 | 显示全部楼层
那其實沒太大用處,因為絕大多數影片(就算是其他TC)都有音軌,有音軌的影片無法被加速,只會變成有點斷斷續續的樣子但時間長度仍舊不會變。
48#
 楼主| 发表于 2019-3-13 00:32:25 | 显示全部楼层
delete1204 发表于 2018-12-10 17:01
好吧

然后报一下队友ai的bug,我不清楚是原版就这样,还是sfall的问题

這個bug今天修了,原因是AI本來判斷沒彈藥就換下武器的程序只有檢查武器是否為槍械,所以極少數要耗彈藥的近戰/徒手武器就被忽略而不會換下,變成每次攻擊前就會發生“彈藥打空了要試著裝彈 -> 發現身上沒子彈 -> 是不是該換下武器用空手攻擊 -> 武器不是槍械所以不需要換下”的迴圈。

修正就是插入一個新判斷,除了投擲武器之外只要有設定使用彈藥就一律視為槍械,讓程序可以換下該武器。
49#
 楼主| 发表于 2019-3-19 12:42:00 | 显示全部楼层
sfall昨天更新到4.1.6/3.8.16,詳細更新資訊請參考另一帖
這次更新比較集中在三個部份,藥物與其上癮效果、負數技能點數的相關問題與調整、角色屍體和地圖載入的關係。

藥物與上癮效果部份可以參考此帖:http://www.bn13.com/forum.php?mod=viewthread&tid=117859

這邊提到的負數“技能點數”不是角色畫面技能列表下面你每次升級都會獲得的點數,而是角色資料內的實際點數,你可以想成是依技能高低花費N點獲得點數去換1點實際點數。
遊戲計算技能等級是:依據SPECIAL屬性由內部公式計算的基數 + 特徵/額外能力加成值 + 實際技能點數,如果該技能是專精技能(tag skill)就把實際技能點數再加一次。
但當初沒有把實際技能點數為負值時的狀況列入考慮,而是寫了個判斷如果為負值就跳過上面計算,變成直接用該負數當技能等級。
這部份操作在原本遊戲是沒啥問題(因為正常狀況下不可能發生,連腳本函式都會自動縮限在最低0的狀態),不過如果有人想做新特徵或帶有副作用的能力效果,就沒辦法把技能正常降到比初始值還低的值。

在一般設定的地圖上,非隊友角色的屍體會在你離開地圖超過6天(144小時)之後回該地圖時清除掉,變成只剩一灘血。不過因為計時用的變數沒有正確零初始化,所以常會發生離開地圖才過幾小時回去屍體就被清掉了。
現在修正讓計時一致化,不過要是你動不動每兩三天就回某張地圖,上面的屍體就永遠不會被清掉,因為計時是取你最後一次離開地圖的時間。
隊友在遊戲引擎內的處理比較特別,他們屍體只要有地圖載入的動作就會自動清掉,但清掉的方式和一般NPC不同而是更簡單暴力一些,所以他們身上物品會乾乾淨淨地被一起清掉。現在物品會留在地上,而且會留下一小灘血表示有人死在這邊過。
50#
 楼主| 发表于 2019-6-7 22:48:05 | 显示全部楼层
sfall前幾天更新到4.1.8.1/3.8.18.1,詳細更新資訊請參考另一帖

中間懶病發作忘了寫4.1.7的部份,4.1.7主要兩大部份是自動地圖和32-bit對話頭像圖片,前者由於引擎限制所以最多只能調整前160張(編號000~159)能否在Pipboy自動地圖列表中顯示出來,後者是把Timeslip九年前的半成品功能完整化。

4.1.8則是隊友proto檔/屍體的處理,和AI在戰鬥中的幾個問題。原本AI在對選擇的目標命中率過低與HP低於設定值會逃跑,前者問題是一旦進入逃跑模式,就算後來對該目標命中率提升到門檻以上(例如目標自己接近),戰鬥結束之前該NPC仍然只會逃跑不會再攻擊任何目標;後者問題是最低HP設定值其實有兩項,一個是固定數值(例如HP少於30點),一個是比例設定(例如HP少於50%),但檢查是否該用治療藥物(治療針、超級治療針、治療粉)時只會看比例設定,一些狀況下會變成NPC跳過“先用藥物治療”直接因為HP過低逃跑,就算他身上有藥物也不用。

4.1.8.1提到的CPU兼容性是這樣:
從sfall 4.0開始都是用VS2015編譯器編出來的,原本VS2010“啟用增強指令集”的“Not Set”默認設定意義在VS2012之後有改,變成默認就是用SSE2指令集,所以在不支援SSE2指令集的舊CPU(例如Pentium III或Athlon XP)上就會直接跳出。
我在4.1.8.1把增強指令集設定改為IA-32,現在sfall可以在Pentium III機器上跑了。對,我真的挖出一台2000年的Pentium III機器來裝Win2000/XP做測試,不過DX9模式因為沒有可跑D3D9的顯示卡所以沒得測。
我沒有更舊的Pentium II/Pentium Pro,所以目前sfall不論3.8或4.x最低CPU標準都定在有SSE指令集的Pentium III和Athlon XP。不過實際上我也不保證sfall 4.x所有功能都能在PIII上正常運作,如果哪天我在PIII上沒辦法再跑sfall 4.x,我就會把指令集調成默認的SSE2(Pentium 4或Athlon 64)正式放棄舊CPU了。

認真來說,這年頭還有多少人有Pentium III或Athlon XP機器而且仍持續拿來玩遊戲的?它們都十九二十歲了。
這整件事除了滿足個人好奇心和執著之外其實沒啥意義,只是之前都只在乎OS版本,本來是想測試一下sfall內用到的CMOVcc和long NOP是否真如ASM技術文件寫的一樣所有P6架構CPU都支援,結果發現我能搞到的最舊PIII機器竟然不能跑sfall,再追下去才發現是指令集的差異。
另外如果有人對我那台PIII機器規格好奇的話:
IBM xSeries 330
  • CPU: Pentium III Xeon 1.0 GHz (開發代號Cascades)
  • RAM: 256 MB
  • VGA: S3 Savage4 8 MB (不支援D3D9)
  • HDD: 36.4 GB 10k U160 SCSI
  • OS: Windows 2000 Server SP4 + USP5.1/Windows XP SP3 (雙系統)

次舊一台做為對照的SSE2機器,一般電腦
  • CPU: Pentium 4 2.4 GHz (開發代號Northwood)
  • RAM: 2 GB
  • VGA: Intel 82845G/GL/GE/PE/GV圖像控制器 (支援D3D9加速)
  • HDD: 40 GB
  • OS: Windows 2000 Pro SP4 + 所有官方修正檔

就算是支援SSE2的Pentium 4從有支援較低價DDR SDRAM內存的Northwood(2002年)算起也有17年了(前一版Willamette只能用貴死人的Rambus內存),現在要找到不支援SSE2的CPU其實有點難度....
51#
 楼主| 发表于 2019-6-8 09:26:51 | 显示全部楼层
同意,不過目前既然改個設定就可以支持PIII的話就先維持這樣,直到哪天真的因為某些新增功能跑不動或出問題再改。
52#
 楼主| 发表于 2019-7-27 14:23:31 | 显示全部楼层
修正font的ini改字型試試,不過我對那些漢化檔案沒啥了解就是了。
53#
 楼主| 发表于 2019-8-5 00:51:47 | 显示全部楼层
哪些敵人?有實際一點的例子嗎?
54#
 楼主| 发表于 2019-8-5 12:16:14 | 显示全部楼层
我沒碰過你說的狀況,如果沒有足夠的資訊我只能說那是個人碰到的偶發問題。
你是用什麼遊戲版本配著哪個sfall?
55#
 楼主| 发表于 2019-8-10 19:45:38 | 显示全部楼层
我從來沒遇過你那種灰色畫面的狀況,如果照你所說直接裝Steam版也有問題的話,那表示五年前的sfall 3.3也一樣,這樣我會傾向是驅動還是啥的系統相容問題,試著調一下畫面相關的選項看看。
至於物品顯示問題看來只發生在以英文開頭的物品名稱上,除了加空格之外我沒別的解法,畢竟那包本質上只是把別人的中文支持檔案(載字型的dll沒有源碼,我沒那個能力也不想花時間解析它)和sfall包一包加上一些個人對文稿的調整而已。
56#
 楼主| 发表于 2019-9-23 17:13:04 | 显示全部楼层
sfall上週六更新到4.2/3.8.20,詳細更新資訊請參考另一帖

從4.1.9開始需要的檔案增加一個sfall.dat,裡面包含一些sfall功能會用上的FRM圖像,sfall一般下載內附的是英文版,如果要中文版請下載本串第二篇的繁體漢化補丁。

4.1.9最大功能是兩個延伸版遊戲介面,一個是世界地圖(1024x768的畫面):


一個是主介面上的AP燈號,一次最多可以顯示16個,算是正常不吃藥不作弊狀況下玩家能擁有的最大AP數(12點綠色+4點黃色):


兩者都需要高分辨率補丁4.1.8版(f2_res.dll為284KB,4.1.8有另一個加上拉近畫面功能的試驗版,檔案較大)。
延伸版世界地圖需要至少890x720的分辨率,如果你是用HRP的窗口模式在玩,不要在遊戲途中把畫面縮小到890x720以下,否則一進世界地圖就會當機。
延伸版AP燈號也是如果用HRP窗口模式,不要中途調整窗口寬度到觸發主介面圖片切換(從640拉大,或是縮到640),不然燈號位置會跑掉。

至於之前一直壞掉的“保留移動”是從一代開始就有的功能,一二代手冊上都有寫,只是很少人會特別用到它。
舉例來說如果你有10點AP,手上的槍要5點,在戰鬥中按住CTRL鍵點超過5格外的地方時,玩家角色只會朝該方向移動5格就自己停下來,保留可以用手上武器攻擊一次的AP數。

4.2加上支援武器proto檔內新增的“能量武器”旗標,只要有設定這旗標,該把槍在計算命中率時不論傷害種類設定為何都一律視為能量武器。
至於遊戲怎麼判定一個武器是用何種技能,請參考這帖:http://www.bn13.com/forum.php?mod=viewthread&tid=51805(新的“能量武器”旗標優先度高於“大型槍械”旗標)

新版F2wedit已經加上設定這旗標的功能:

像圖中這設定會讓激光手槍造成火焰屬性傷害(敵人也會顯示全身著火的死法),但計算命中率時還是取能量武器技能。

4.2 modderspack加了一個gl_compute_damage.ssl範例腳本,內容就是把引擎內計算戰鬥傷害的compute_damage_函式運作方式用腳本邏輯重現,想做些啥的話它是個不錯的參考。

新的HOOK_STDPROCEDURE是在絕大多數物件腳本的標準程序之前被呼叫,本身只能做到阻止接下來該執行的程序,這hook是設計來在某些觸發狀況時順便做些其他簡單的事,不建議在裡面塞太複雜的邏輯,因為就算撇除start、critter_p_proc、timed_event_p_proc、map_update_p_proc這四個比較特別的標準程序之外,它仍然會被相當頻繁地被呼叫。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
57#
 楼主| 发表于 2019-11-5 11:24:36 | 显示全部楼层
sfall今天更新到4.2.1/3.8.21,詳細更新資訊請參考另一帖

主要更新在修正一些腳本函式和sfall功能。世界地圖介面上的汽車油量表圖像改成這樣:

(左:原本,右:現在)

現在你無法在物品欄內裝備當前外觀沒有對應動作的武器,例如土人外觀下想拖一把槍到手上會被遊戲退回並顯示訊息,這是為了避免玩家變成“消失”狀態然後當機的問題。
另外本來要是一個物品/武器所需AP超過9點(原版遊戲只有刺踢瞄準才會超過)AP花費的顯示文字會直接消失,現在可以顯示最高到19點,應該是很夠用了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
58#
 楼主| 发表于 2019-11-20 07:33:30 | 显示全部楼层
sfall昨天更新到4.2.1.1/3.8.21.1,為前一版的緊急修正。

修正把CorpseLineOfFireFix從INI移除後,在調整源代碼時不小心加上了可能會造成當機的問題。
59#
 楼主| 发表于 2020-2-5 02:09:17 | 显示全部楼层
你上面那篇應該就是同問題的解法了。
60#
 楼主| 发表于 2020-2-11 06:52:16 | 显示全部楼层
sfall上週六更新到4.2.3/3.8.23,詳細更新資訊請參考另一帖

4.2.2和4.2.3不少更新都是基於Et Tu(在二代引擎上玩一代內容)的需求而生,像字串和腳本視窗相關的函式就增加了不少。
比較明顯看得到的部份是類似在一代世界地圖上旅行的新增功能:
WorldMapTravelMarkers - 在世界地圖上移動時會隨著路徑畫出虛線。

它有附帶兩個額外設定能修改虛線外觀:
  • TravelMarkerColor - 線條顏色,數值為Fallout默認色盤內的索引編號:https://fodev.net/files/fo2/fo_colors.html
  • TravelMarkerStyles - 虛線線段長度與各段間隔的像素點數,各組對應worldmap.txt中terrain_types設定的各地形,像上面圖片那模樣是設定成1:2,2:1,3:3,2:2,要完全符合一代樣子的話是1:2,2:1,1:2,1:2

不過這功能在開車的時候畫出來的虛線會很稀疏,目前還沒解決。
畫虛線在二代拿掉的原因推測是一二代世界地圖美術風格的差異。一代地貌比較乾淨,虛線畫起來明顯,二代地貌雜點較多,虛點容易和地貌混在一起,大概是這樣他們才拿掉這功能,畢竟不顯眼的話留著也沒用還多耗效能。

WorldMapTerrainInfo - 把鼠標移到世界地圖上的倒三角形玩家標記時,顯示該格的地形種類。


另外是更進一步的舊系統測試:
一月時我偶然找到一台Pentium II的塔式服務器,把它整理好裝了Win2000/XP,用sfall 4.2意外地還算順(HRP用單純全屏模式),那些介面相關的新功能也正常運作,所以現在sfall的系統要求就降低到連二十二年前的Pentium II都行了,當然DX9模式還是沒得測。
機器規格:
IBM Netfinity 5000
  • CPU: Pentium II 450 MHz (開發代號Deschutes) x2
  • RAM: 1 GB
  • VGA: S3 Trio64V2/GX 1 MB (不支援D3D9)
  • HDD: 18.2 GB SCSI

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-5-17 13:44 , Processed in 0.087053 second(s), 13 queries .

快速评论 返回顶部 返回列表