故事

平安夜凌晨的
兩次建置

逆向遊戲檔案時,偶爾會挖到不是資料的東西 —— 開發者電腦上的資料夾路徑、每個檔案編譯完成的那一秒。 把 anims.big 裡 243 個封包的時間戳排起來, 可以看見 2004 年那個團隊做完這款遊戲動畫的最後幾小時(遊戲本體的執行檔要到將近一個月後才編譯完成,見下方訂正)。

先說這些資料哪來的

遊戲的動畫全部裝在一個 anims.big 裡,解開有 730 個子檔。 其中 244 個副檔名是 .axt —— 打開一看,是純文字的編譯清單

為什麼是 244 而不是 243:243 個封包各帶一份自己的編譯清單, 另外還有一個叫 Banklist.axt 的總表(只有 42 個位元組, 列著 5 個庫名),它不屬於任何一個封包。所以下文講封包時是 243, 講 .axt 檔時是 244。詳見動作庫那頁

[Version 0.03]
	1103890691	Dec 24 2004 04:18:11

[Bank]
	CLOSE_UP

[Directory]
	D:/mvp2004/artwork/anims

[Files] 84
	u_readyidle          1103876064	Dec 24 2004 00:14:24
	sb_strike04          1103875954	Dec 24 2004 00:12:34
	sb_strike03          1103875954	Dec 24 2004 00:12:34
	...

這是 EA 的動畫工具在打包時自動寫進去的:這個封包叫什麼、來源資料夾在哪、 裡面有幾個動畫、每個動畫是什麼時候編譯的。它從 2004 年一直躺在遊戲檔案裡到現在。

那台電腦上的資料夾

243 個封包,全部指向同一個路徑

D:/mvp2004/artwork/anims

某個人的 D 槽,一個叫 mvp2004 的專案資料夾,底下的 artwork/anims。 這就是這款遊戲所有動畫的來源。

順帶一提:資料夾叫 mvp2004,但遊戲叫 MVP Baseball 2005 —— 體育遊戲通常以發售季命名,開發期則落在前一年。

兩個階段,中間隔了四小時

把所有時間戳排出來,會看到很清楚的兩段:

階段時間(當地)數量耗時
編譯個別動畫12/24 00:05:50 → 00:14:262,024 個8 分 36 秒
(間隔)約 4 小時
打包成封包12/24 04:17:57 → 04:20:33243 個2 分 36 秒

2,024 個動畫在八分半鐘內全部編譯完,然後隔了大約四小時, 243 個封包在兩分半鐘內打包完成 —— 平均每秒 1.56 個。

時區是怎麼知道的

檔案裡同時記錄了兩種時間:Unix 時間戳 1103890691, 和人類看的 Dec 24 2004 04:18:11。 前者換算成世界標準時間是 12:18:11,兩者正好差 8 小時 —— 所以那台電腦設定在 UTC-8,也就是北美西岸時區。

本頁列出的時間都是那台電腦上顯示的當地時間。

那天凌晨零點五分

這批動畫的編譯時間,是12 月 24 日的凌晨零點五分到零點十四分

那是平安夜的凌晨。四小時後、清晨四點多,最後一次打包完成。

這裡要誠實:時間戳只說明「什麼時候編譯」

不能證明當時有人坐在電腦前。編譯完全可以是排程自動執行的, 建置伺服器在凌晨跑批次是業界常態。

「有人熬夜趕在假期前收工」是一個很容易冒出來的想像, 但檔案裡沒有任何東西能證實它。本站只陳述時間戳說了什麼。

封包裡有什麼

243 個封包不是平均分配的。最大的一個裝了超過一半的動畫:

封包動畫數用途 看名字推測
DEF_BANK1,052共用動畫庫,佔全部的 52%
CLOSE_UP84特寫鏡頭
MIDDLE50中距離鏡頭
FACIAL48表情。裡面有 fa_upset_idle01 ~ 06:六種不爽的待機表情
HANDBANK16手部動作
SIGB____66 個封包打擊姿勢庫。多數是某一位打者的專屬動作,也有幾個裝的是共用擺動
SIGP____59 個封包投球姿勢庫。多數是某一位投手的專屬動作,也有幾個裝的是通用投法

SIGB 是什麼?打開一個就知道了

編號 SIGB0014 這個封包裡有 15 個動畫,名字是這樣的:

b_ichirotobpreswing      ← 進入預備動作
b_ichirowiggle           ← 那個著名的擺動
b_ichiroswinglos         ← 揮棒(低外角)
b_ichiroswinglis         ← 揮棒(低內角)
b_ichirotostance         ← 回到打擊姿勢

鈴木一朗。EA 給了他一整組專屬動畫 —— 從進打擊區、招牌擺動、到不同球路的揮棒軌跡。

而這樣的封包有 66 個(打擊姿勢庫)加 59 個(投球姿勢庫), 合計 125 個專屬動作庫。把這 125 個庫的動作檔名全部列出來看, 通篇掛著球員名字的是 102 個;另外 23 個裝的是通用姿勢與投法。 也就是說,這款 2005 年的遊戲裡,有 102 位球員擁有自己的動作,不是共用同一套動畫。

訂正2026-09-06:本頁原本在這裡寫的是 「125 位球員擁有自己的動作」,那是把庫的個數當成球員人數。 125 是 SIGB 66 + SIGP 59 的庫數,其中 23 個庫裡一個球員名字都沒有 —— SIGB0000SIGB0006 是共用的打擊擺動、SIGP0000SIGP0009 是投法通稱(高壓、側投、下勾這類),再加 cooperstown0103 的泛用填充打擊、投球各一組。 細節見動作封包那頁

一個設計取捨,藏在數字裡

共用庫 DEF_BANK 佔了 52%,剩下的近半分散在 125 個專屬動作庫(其中 102 個掛著球員名字) —— 這是刻意的個性化投資:絕大多數球員用共用動作,但明星球員值得單獨做。

有趣的是,同一款遊戲的臉部材質走的是完全相反的路線: 剛安裝好的原版 models.big504 個球員臉皮完全同規格 —— 504 張全部是同一種像素格式0x78 128×256)、 全部帶同一個內部標記,零例外(本站三份剛安裝好的原版都量過,三份結果一樣)。

訂正2026-09-05:本頁原本在這裡寫的是 「894 個球員臉皮,890 個用同一種像素格式、893 個帶同一個內部標記」, 還加了一句「本頁上線時寫『沒有一個例外』,那是錯的」。這兩句都要收回 —— 894 / 890 / 893 量的是本站測試機那份裝過模組的 models.big, 那 4 個與 1 個「例外」反而才是 EA 出貨時用的規格,是後來被換掉的,不是 EA 留下的 (是誰換的本站沒有查出來,見模型與臉皮那頁)。 對 EA 出貨的遊戲來說,「沒有一個例外」是成立的。

動作要有辨識度,材質要能互換 —— 同一個團隊,在不同的地方做了相反的決定。

⚠️ 那不是遊戲的最後一次建置 —— 本站 2026-08-28 訂正

這一頁原本叫「平安夜凌晨的最後一次編譯」

那個標題把讀者帶錯方向。這一頁講的是動畫檔的建置, 而它從頭到尾沒有量過遊戲本體

後來去讀執行檔自己的建置時間戳(PE 檔頭裡有一格記著編譯當下的時間):

發生了什麼時間(世界標準時間)距上一步
2,024 個動畫編譯完成2004-12-24 08:14
243 個動畫封包打包完成2004-12-24 12:204 小時
官方英文版 mvp2005.exe 編譯完成 2005-01-22 00:5028.5 天
官方繁體中文版 mvp2005.exe 編譯完成 2005-02-16 13:0425.5 天

平安夜那天結束的是動畫,不是遊戲。 遊戲本體又過了將近一個月才編譯,繁體中文版再晚了 25.5 天 —— 中文版的執行檔比英文版晚了 25.5 天(2005-01-22 00:50 → 2005-02-16 13:04)。 從平安夜那次動畫打包(12-24 12:20)起算的話是 54 天。

怎麼確定這個時間戳可信:把兩份安裝目錄裡所有的執行檔與程式庫都讀一遍, 九個檔的時間戳全部落在 2002 到 2005 之間、而且順序合理 (安裝程式最早,主程式最晚)。如果那一格是隨機或被清空的,就不會排出這種次序。 中文版的主程式也比英文版大 553 KB —— 跟 官方中文版那頁量到的字型與介面差異對得起來。

⭐ 這條錯誤的形狀值得記:頁面裡的每一個數字都是對的, 錯的是標題替那些數字加上了一個沒有量過的結論。 「最後一次」是一個全稱宣稱 —— 要成立就得證明沒有更晚的,而這一頁從來沒有去找過。

還有一個小東西:換行符號是混的

那 243 個封包檔全部在 2 分 36 秒內產出,看起來是同一支工具跑完的一批。 但打開來看換行符號:

換行符號數量意思
CRLF(歸位 + 換行)200Windows 慣例
LF(只有換行)44Unix / Mac 慣例

這張表數的是 244 個 .axt,比封包數多一個 —— 多的就是上面那個 Banklist.axt(它是 CRLF)。 只算 243 個封包自己的清單檔的話是 CRLF 199、LF 44

兩組的時間戳互相交錯(LF 那組落在 12:18:50–12:20:32, CRLF 那組 12:17:57–12:20:33),所以不是先跑一批再跑另一批

未解 為什麼同一次批次裡會混兩種換行符號,本站沒有答案。 一個沒有證據的猜想是:打包工具把來源檔的內容原樣抄過去, 而來源檔來自不同人的機器。本站沒有量到任何東西支持這個猜想,所以只寫到這裡。

這件事對改檔的人有實際意義:本站在 版面檔那頁反覆警告「.fel 全部是 CRLF, 編輯器統一成 LF 會讓檔案壞掉」。動畫封包不適用那條警告 —— 它本來就兩種都有。「這個遊戲的文字檔都用 CRLF」是錯的。

為什麼這些東西還在

這些時間戳和路徑對玩遊戲毫無用處。它們留在檔案裡, 單純因為那是打包工具的預設輸出,而沒有人特地把它清掉

二十年後,它讓我們能還原那天凌晨發生的事: 兩千多個動畫在八分半鐘內編譯完成,四小時後打包 —— 而遊戲本體的執行檔要再過 28.5 天(2005-01-22)才編譯完成。

如果你想自己看:這些資料在 data\anims\anims.big 裡的 .axt 檔。 打開方法見 BIGF 格式, 判斷檔案類型見 五秒看穿一個檔案

📌 重點整理

接下來