速查 › 總設定檔

總設定檔 datafile

遊戲的攝影機在哪裡、每一種聲音多大聲、打擊的物理參數是多少 —— 全部寫在同一個純文字檔裡,而且 EA 把每一個欄位的名字也一起寫在裡面。 4.2 MB、21,548 行,本站全部解析完,沒有一行讀不懂

這一頁的數字量自哪一份遊戲

剛安裝好、沒有裝過任何模組的原版英文版。 你自己的遊戲如果裝過模組,數字可能不一樣 —— 怎麼確認你手上那份被動過什麼,看怎麼看出哪些檔還沒被動過那一課。

先看規模

data\datafile\datafile.big 的大小2,857,593 bytes
裡面有幾個項目460
全部解開之後合計14,095,446 bytes
其中最大的 datafile.txt4,392,183 bytes
datafile.txt 有幾行21,548

460 個項目全部是 QFS 壓縮的純文字。解開之後總量是原檔的 4.9 倍 —— 純文字壓得很好,這也是為什麼一個 2.8 MB 的檔裝得下 14 MB 的設定。

python mvp_fel_toolkit.py "你的遊戲資料夾" --big data\datafile\datafile.big --entries

會列出 460 個項目與每個項目解開後是什麼。工具在介面萬用工具那一課。

一行長什麼樣

0x830b955c 108<BattingView7LeftHi>;0 0;1 0;2 0;3 0;4 1;5 0;6 1;7 ;8 ;9 ;10 ;11 None;12 ;13 away_dugout_01;14 0;15 945.000;16 83.000;17 840.000;…
   ↑識別碼      ↑這個數字      ↑這筆記錄的名字      ↑ 編號 值;編號 值;編號 值 …

中間那個數字不是型別編號,是欄位數量

一開始很容易把它當成「記錄型別」。 但把 21,548 行全部檢查一遍:那個數字永遠等於這一行有幾個欄位

檢查結果
解析得出來的行21,548 / 21,548
那個數字 ≠ 欄位數的行0

⚠ 一個容易踩的坑:識別碼不是固定長度。 原版裡 5 位到 8 位十六進位都有(8 位 20,144 行、7 位 1,320、6 位 79、5 位 5)。 本站第一次寫解析器時把它寫死成 8 位,結果 1,404 行對不上, 差點寫成「有 1,404 行是未知格式」。是解析器錯,不是檔案怪。

⚠️ 改這個檔之前:它用 LF 換行,不是 CRLF

本站在版面檔那頁反覆警告「.fel 全部是 CRLF, 編輯器統一成 LF 會壞檔」。這個檔正好相反。

行數/個數換行符號
datafile.txt(英文版與中文版都量了) 21,548 行LF,CRLF 0 個
data/datafile/ 底下全部 .txt 466 個LF 460 個,CRLF 0 個
另外 6 個是 0 bytes 的空檔,一個換行位元組都沒有:a004day.txtmemoday.txtmemonite.txtscript_ar_spec_catch_01/02/03.txt
(對照)全遊戲 .fel 版面檔 329 個CRLF 329 個,LF 0 個

同樣是純文字,跟動作庫裡那 244 個 .axt 也不一樣 (那裡是 CRLF 200 個、LF 44 個)。 規則是看檔案家族,不是看副檔名

⚠️ 那 244 個的副檔名是 .axt 不是 .txt, 而且它們不是散在 data/anims/ 底下 —— 那個資料夾裡只有 anims.big 一個檔,244 個 .axt 全在它裡面。 照著「data/anims/ 底下的 .txt」去找是找不到檔案的, 要先解開封裝檔,見動作庫 anims那頁。

實務上:用會保留原始換行的編輯器,關掉「存檔時自動補檔尾換行」, 改完確認檔案長度只差你預期的那幾個位元組。 本站的工具是逐格取代、不重寫整行,所以不會動到換行符號。

另外一件量的時候要小心的事:封裝檔裡那 460 個 .txt 全部是 QFS 壓縮的。不解壓就數換行符號,數到的是壓縮位元組, 會得到完全錯誤的答案。

有些行的第三個位置不是 <名字>,而是另一個數字。那種行是欄位名稱表

0xf64fbeb3 6 1;5 PipSlideMotion;2 ShapeTexY1;4 ShapeTexY2;1 ShapeTexX1;3 ShapeTexX2;0 RunnerIconSize;
              ↑6 個欄位   ↑ 編號 名字;編號 名字 … (順序是亂的,要照編號對)

這跟名冊檔是同一套設計:檔案自己說明自己。 原版的 datafile.txt123 行這種表頭。

但「欄位數一樣就是同一種東西」是錯的

123 行表頭只涵蓋 43 種不同的欄位數 —— 代表有重複。 檢查那些重複的表頭內容是否一致:

同一個欄位數的多張表幾種欄位數
內容完全一致28
內容不一致15

不一致的全部集中在小記錄:欄位數 1、2、3、4、5、6、7、8、10、11、12、14、24、48、54。 光是「1 個欄位」就有 22 張表、15 種不同內容。

這很合理 —— 只有一個欄位的東西當然會撞在一起。 所以欄位數可以拿來對名稱表,但不能拿來判斷「這是什麼」。

欄位數唯一對應一張表的有 28 種: 0、9、13、17、18、19、25、28、31、32、40、45、51、59、63、68、70、73、76、86、88、101、116、127、128、174、233、381。 這些查名稱表是安全的,涵蓋 7,085 / 21,425 筆資料行(33.1%)。
(2026-09-05 訂正:這裡原本寫 21,184 / 21,425、98.9% —— 那是「欄位數查得到任何表頭」的覆蓋率,把上面那 15 種會撞的也算了進去,而資料行的大宗正好落在那 15 種身上,所以它不是安全率。)

攝影機:兩張名稱表,一張管打擊、一張管守備

⚠️ 本站 2026-08-28 訂正了這一節

這裡原本寫「整份檔裡只有一筆攝影機記錄帶名稱表(欄位數 116 那種)」。 那是錯的。有兩張。

名稱表欄位數管到哪些攝影機
第 7,940 行
兩種版本相同
11632 台 BattingView*
英文版(封裝的 datafile.big)第 8,516
中文版(散裝的 datafile.txt)第 9,216
128 7 台 FieldingView16HeadViewer

規則是位置:一張表管它後面那一段,到下一張表為止。 用這條規則跑一次,32 台全落在打擊表、7 台全落在守備表,零例外

⚠️ 表頭在第幾行、每個欄位是幾號,兩者都跟著版本跑。 本站量了 9 份有攝影機記錄的總設定檔,6 份是封裝的 datafile.big (含剛安裝好的原版英文版)、3 份是散裝的 datafile.txt (含剛安裝好的官方中文版),行號與編號組內完全一致,兩組之間整個重排過

兩張表彼此的編號也完全不同。同一個 ;53 在打擊表兩版都叫 FOV;在守備表, 英文版那張叫 Pitch、中文版那張叫 VerticalFraming。 守備視角沒有絕對的 X/Y/Z,它記的是位移 (OffsetXOffsetYOffsetZ, 英文版是 ;19/;20/;21、中文版是 ;13/;14/;15)。

諷刺的是,答案一直在這一頁上: 上面那份「唯一對應一張表」的欄位數清單裡就有 128, 只是沒有人把它跟攝影機連起來。 這個疏漏讓改視角那一課的工具 對 7 台攝影機顯示錯的欄位名,而且會寫壞檔案 —— 已修好,該頁有完整說明。

⚠️ 下面這些編號是官方英文版的,中文版不一樣

兩個版本的名字完全一樣(打擊 116 個、守備 128 個,一個不多一個不少), 攝影機也完全一樣(39 台,名稱集合相同)。 但編號整個重排過

欄位名個數兩版編號相同的
打擊表11635 個(30%)
守備表1280 個(0%)

守備那張表,兩個版本沒有一個欄位的編號是一樣的。

這正是名稱表為什麼要存在 —— 遊戲讀的是表,不是寫死的編號。 也是本站在球員欄位那頁講過的同一件事的最強版本: 不要記欄號,去讀表頭。 任何寫死編號的工具,換一個版本就會靜靜地寫錯地方。

打擊那張表把 116 個欄位全部命名了(下表編號為官方英文版):

編號名字意思
15 / 16 / 17X / Y / Z攝影機的位置
53FOV視野角度(數字越小畫面越窄、看起來越「拉近」)
41 / 42 / 43Pitch / Heading / Roll俯仰/左右/傾斜
11 / 13LocationObject / LocMarkerName位置掛在哪個東西上、掛在哪個標記點
23 / 25Target / TargetObject鏡頭看向哪裡
0 / 1 / 3HideCatcher / HideCatcherLegs / HideNet把捕手、捕手的腿、護網藏起來
82LetterBox上下黑邊
75 / 76DepthOfField / NearClipPlane景深、近端裁切面
108 / 109Handheld / HandheldJitter手持鏡頭的晃動
110–115JitterPitch… / JitterHeading…晃動的幅度、頻率、隨機量
6Fog
47–51Damping / PitchDamp / HeadDamp / RollDamp / FOVDamp各種阻尼(鏡頭跟隨的柔順程度)
99–107Spline…沿著曲線運鏡的一整組參數

上表是 116 個裡挑出來比較看得懂的。完整清單自己跑一次就有 —— 方法在最後一節

這張表可以拿去讀同一張表管到的其他攝影機

名字裡有 View 的攝影機記錄共 39 筆, 分佈在 11 種不同的欄位數(87、97、103、104、105、107、108、110、111、113、116), 真的有 116 欄的只有 4 筆

⚠️ 名稱表不是靠欄位數配對的,是靠位置: 往前最近的那一張,管到下一張出現為止(見上面那張訂正卡)。 所以「這 11 種欄位數裡只有 116 找得到同號的表頭」是真的, 但由此推出「39 筆共用同一張表」就錯了:管守備那 7 台的是 128 欄那張, 而這 39 筆裡沒有任何一筆是 128 欄。

下面這張表是訂正之前做的,拿 116 的表去讀全部 39 筆, 在剛安裝好的原版英文版 datafile.big 上量到的:

用這個編號去讀期望39 筆裡符合
15 / 16 / 17(X Y Z)數字39
53(FOV)數字39
41 / 42(Pitch Heading)數字39
0 / 3(HideCatcher HideNet)只能是 0 或 139
13(LocMarkerName)不是數字的名稱39

39 / 39,九項全中。這正是本站當年把 7 台守備視角一起讀錯 還不自知的原因:在原版英文版上它真的全中。

同一套檢查搬到官方中文版那份散裝的 datafile.txt (用它自己那張 116 欄名稱表,去讀它自己的 39 筆), 九項裡就有五項掉下來XYLocMarkerName 掉到 32 / 39, 不符的正好是 FieldingView16HeadViewerFOVHideCatcher 掉到 38 / 39, 不符的是 HeadViewer;只有 ZPitchHeadingHideNet 還是 39 / 39

同一份設定檔的兩個版本,一個全中、一個掉五項, 這件事本身就說明「39 筆共用同一張表」不是量到的事實。

本站另外做了一次證偽測試

「九項全中」聽起來很強,但要小心:如果隨便位移幾格也照樣全中,那這個測試就沒有鑑別力。 所以本站把整張名稱表刻意位移 −8 到 +8 格,每一格都重跑那九項:

位移九項裡全中幾項
0(不位移)9
+16
−1 / +23
其餘 13 種位移2 或更少

只有不位移那一格是滿分。但 +1 拿到 6 分, 代表這九項測試沒有本站原本以為的那麼嚴 —— 隔壁那一欄剛好也是數字的機率不低。

所以本站把這條標成推論而不是「量到的」, 而且把上面這張表也放出來,讓你自己判斷證據夠不夠。 推論

⚠️ 本站在別的地方犯過一模一樣的錯: 用「數量剛好對得上」去推「編號 → 名稱」的對應,結果整段結論反過來。 那次的完整訂正在代號對照那一頁會被同一種錯咬兩次,是因為它每次都長得很像好證據。

本站做了一個失敗的對照組,說出來比較誠實

為了測「這張表是不是隨便套都會過」,本站找了欄位數 ≥87、 但名字裡沒有 View 的 73 筆當對照組,結果九項裡有四項不符 —— 看起來測試有鑑別力。

然後去看那 73 筆叫什麼名字,發現它們大多也是攝影機batterintro_01_cam01_left.StartCambatterreplay_right_foul.Cam1PostHitCamUserReplayHighFirst…… 對照組根本不是對照組。

換一個判準(X/Y/Z/FOV/Pitch/Heading/Roll 七欄全是數字)去掃全部 21,425 筆, 命中 223 筆,但裡面混著 skillbasefintweakFECreateAPlayer 這些明顯不是攝影機的東西 —— 這個判準會誤判,所以本站不拿 223 當「攝影機總數」

結論只寫到能站得住的地方:名字裡有 View 的有 39 筆, 整個攝影機家族比 39 大很多,確切數字未定

選單上那些名字,在檔案裡找得到

遊戲的語系檔裡有一串攝影機名稱,跟 datafile.txt 裡的記錄名對得起來:

遊戲選單顯示datafile.txt 裡的記錄名
Center Field CameraUserReplayCF
Left Field CameraUserReplayLF
Right Field CameraUserReplayRF
High First / High Home / High Third CameraUserReplayHighFirst / …HighHome / …HighThird
Low First / Low Home / Low Third CameraUserReplayLowFirst / …LowHome / …LowThird
Mid First / Mid Third CameraUserReplayMidFirst / …MidThird
Batter Pitcher Camera · Hitter's Eye Camera找不到對應的 UserReplay 記錄

11 個選單名稱對上 11 筆記錄,一對一。剩下兩個沒有對應的, 本站不硬配那兩個對到哪裡未解

還有一台叫 FieldingMiniGame 的攝影機

它的名字裡沒有 View,所以不在上面那 39 筆裡, 但它確實是一筆攝影機記錄。整份 datafile.txt只出現一次, 兩個版本都在第 8,010 行,欄位數 115:

0x5d51ae 115<FieldingMiniGame>;…;11 Home Plate;…
  ;15 -454.000;16 288.500;17 -454.000;…;25 FieldingGameWall;…

上面是官方英文版的編號,照本頁那張 116 欄的表讀: 11LocationObject(本壘板)、 15/16/17 是 X/Y/Z、 25TargetObject。 它落在第 8,010 行,往前最近的一張名稱表正是第 7,940 行那張打擊表 —— 照「一張表管到下一張表為止」這條規則,管它的就是那張。 中文版的同一行內容一樣,但編號一如既往重排過: 13 Home Plate、座標在 ;16 / ;17 / ;1825 FieldingGameWall

它瞄準的 FieldingGameWall 在整份檔裡也只出現這一次。 混音表裡那組 FMGFMGVolumeFMGMusicVol%) 在玩家看得到的地方都找不到出處,而這筆記錄的名字剛好是 FieldingMiniGame —— 名字對得起來,但本站沒有在遊戲裡看到過這個小遊戲。 完整的追查在音訊那一頁,混音表那一組在下一節名字對得上,實際存不存在未驗

有兩座球場自己覆寫了守備視角(三個項目)

FieldingView2 這個視角,除了 datafile.txt 定義了一次之外, 還有三個項目各自定義了一次:

項目是哪座球場
metrdome.txt室內巨蛋
shibday.txt · shibnite.txt一座 1900 年代的老球場,日間與夜間各一份

460 個項目裡只有這三個覆寫視角。兩座都是形狀特殊的球場 —— 一座有屋頂、一座很老。為什麼是這兩座,本站沒有答案

音量:127 軌,每一軌都有名字

另一筆記錄(欄位數 127)是整個遊戲的混音表。它的記錄名叫 test, 但內容一點都不像測試用的:

這一群欄位名(節選)
總量Volume · MasterVolume · PBPVolume%(播報)· PAVolume%(場內廣播)
群眾CrowdLowStreamVol% · CrowdHighStreamVol% · ApplauseVol% · CheerVol% · BooVol% · OhVol% · TensionVol% · AnticipationVol%
群眾反應之間的「過渡」OhBooVol% · BooAfterOh% · OhCheer% · CheerAfterOh% · OhApplause% · AplsAfterOh%
球場動作BatSwingVol% · BatBreakVol%(球棒斷掉)· SlideVol% · HelmetHitVol% · FoulPoleVol%
氣氛HecklesVol%(噓聲叫囂)· VendorsVol%(小販)· OrganRallyVol%(管風琴)· BatDittyVol%(打者出場曲)

群眾不是只會歡呼,它有「情緒過渡」的混音

注意上表第三列。OhBooVol%BooAfterOh%CheerAfterOh%AplsAfterOh% —— 這些是「喔……」之後接噓聲「喔……」之後接歡呼 這種兩段情緒之間的音量。

球快要出牆時全場「喔——」,然後被接殺變成噓聲、或飛出去變成歡呼。 這個轉折在 2005 年就是一個獨立的可調參數

裡面藏著三個小遊戲的音效

同一張表裡有四組前綴:BMGPMGFMGHRS。 其中三個在遊戲文字裡找得到對應:Batting Mini GamePitching Mini GameHome Run ShowdownFMG 找不到 —— 詳情在 音訊那一頁,那是一個只存在於程式內部的小遊戲。 它們的音效名字很有畫面:

Lawnmower1Vol%  Lawnmower2Vol%  Lawnmower3Vol%  LawnmowerImpactVol%
TrampolineVol%  ChainlinkFenceVol%
WoodImpactVol%  MetalImpactVol%  GridHitVol%  BlocksHitVol%

遊戲的文字檔裡也有對應的計分項目: Lawnmowers Hit(打中幾台除草機)、Vehicles HitMoving Ramps HitStationary Ramps HitVortices HitFielder Fences HitBall Bounces Over The Wall

跟另一個檔對得起來

整個遊戲的 3,503 個 ELF 那一節提到, 全遊戲只有 data\misc\miscmod.big 裡的 14 個模型是完整的。 那 14 個叫:

aple.o  bern.o  bli1.o  bli2.o  lawn.o  moon.o  obj1.o
obj2.o  obj3.o  obj4.o  pla1.o  pla2.o  roof.o  tran.o

lawn 旁邊有 Lawnmower1/2/3Vol%tran 旁邊有 TrampolineVol%

本站量到的是這兩件事各自成立,以及名字很接近。lawn.o 就是除草機的模型」是合理的推測, 但本站沒有把模型畫出來看過,所以不寫成定論。 推測

燈光:PC 版裡裝著三台主機的設定

檔案裡有四筆燈光記錄,名字直接說了它們是給誰的:

記錄名欄位數空白 值是 0有實際值
pclighting381 77185119
xboxlighting3487418886
ps2lighting3487418589
gclighting3487418490

每一座球場用哪一組光源,記在別的地方 —— 見球場檔那一頁(87 個球場封裝檔、58 座場地、16 種光源組)。

這是PC 版的遊戲檔。裡面卻裝著 Xbox、PS2、GameCube 三台主機的燈光設定, 而且不是空殼 —— 每一份都有 86 到 90 個欄位填了實際的值。

三個主機版彼此也不一樣:Xbox 跟 PS2 差 11 欄、Xbox 跟 GameCube 差 4 欄、 PS2 跟 GameCube 差 15 欄。每一台都是分開調過的。

PC 版多出來的 33 個欄位,全部是同一件事

pclighting 的欄位編號跟主機版一比,PC 多出 33 個。 用名稱表把它們讀出來,全部集中在三個地方

地點每個地點有什麼欄位數
牛棚 Bullpen_ 3 盞方向光,各有方向、俯仰、顏色
再加環境光的強度與顏色
3 × 3 + 2
= 每個地點 11
左側休息區 DugoutL_
右側休息區 DugoutR_
合計3 × 11 = 33

算式剛好對上,一個不多一個不少。 換句話說:PC 版會單獨打亮牛棚跟兩側休息區,主機版不會。

這是從欄位名稱與數量讀出來的。 至於實際畫面上差多少,本站沒有主機版可以比對。 視覺差異未驗

自己看一遍

不用寫解析器也能看。datafile.txt 解出來就是純文字, 用任何編輯器搜尋 BattingViewLawnmower 就找得到。

1

先把 datafile.big 裡有什麼列出來:

python mvp_fel_toolkit.py "你的遊戲資料夾" --big data\datafile\datafile.big --entries
2

找到 datafile.txt 那一列,確認它顯示 QFS → 純文字

它是 460 個裡最大的一個,解開之後 4.2 MB 左右(4,392,183 bytes,本站的 MB 一律是 ÷1,048,576 那一種)。

3

解出來之後搜 <BattingView1RightLow>, 對照本頁的欄位編號表看那一行的 ;15;16;17

⚠️ 本站沒有驗的事

這一頁講的全部是「檔案裡寫了什麼」。 至於改了之後遊戲會有什麼反應,本站一次都沒有實機試過

所以這頁不是教學,沒有步驟、沒有成功標準。 想動手改視角,走 改視角那一課 —— 那裡有預覽、自動備份、一行還原,以及「出錯了怎麼辦」的對照表。

完全沒改過遊戲檔的人,建議先從 改跑壘速度那種 「只動純文字、附還原腳本」的開始。

要動的話,寫回封裝檔的規矩看 BIGF 封裝格式 ——接到檔尾,改目錄 8 個位元組與檔頭 4 個位元組, 而且動手之前先備份

📌 重點整理

接下來