跳轉到內容

Q3Map2

0% developed
來自華夏公益教科書,開放世界,開放書籍

Q3Map2 現在已與GtkRadiant 專案整合。適用於 32 位和 64 位系統的 Windows、Mac 和 Linux 二進位制檔案可以從專案頁面下載。Q3Map2 原始碼現在可透過GtkRadiant GitHub 儲存庫獲取。

官方支援論壇@Splashdamage
當前穩定版本為 2.5.17

Q3Map2 是一個用於基於 id Tech 3 引擎的遊戲的 BSP 編譯器。它編譯 .map 檔案(可以使用編輯器編輯)成 .bsp 檔案(這些是遊戲的二進位制檔案,不可編輯)。它目前支援以下平臺

  • Nexuiz
  • Open Arena
  • Quake 3 Arena/Team Arena
  • Quake Live
  • 重返城堡狼堡
  • 命運戰士 2
  • 星際迷航精英部隊
  • 星球大戰絕地武士:絕地學院
  • 星球大戰絕地武士 2:絕地武士
  • Tenebrae(Quake 1 引擎修改專案)
  • 震動
  • 城市恐怖
  • War§ow
  • 狼穴:敵軍基地
  • Padman 世界
  • Xonotic

Q3Map2 被設計用來替換 QERadiant、GtkRadiant 和 GMAX Tempest 附帶的 Q3Map.exe。但是,有一些顯著的增強功能需要進行一些調整才能使用,例如更快的照明和增強的表面生成。

有趣的事實

  • Q3Map2 起初是針對 Q3Map(最初的 Quake 3 地圖編譯器)的錯誤修復。
  • 騎著腳踏車參加 AIDS LifeCycle 的奇才編碼超級英雄 ydnar 是 Q3Map2 背後的那個人。

Q3Map2 是一個命令列實用程式。通常,使用者以以下三種方式之一使用 Q3Map2

需要注意的是,GtkRadiant bsp 選單中給出的預設命令列絕不是對可用 Q3Map2 選項和開關的完整展示。您可以從 GtkRadiant 偏好設定中編輯 bsp 選單命令列,但為了完全控制您的 Q3Map2 編譯,編寫批處理檔案或使用其中一個前端可能是一個更好的主意。

Q3Map2 命令列通常遵循以下格式

"C:\path\to\Q3Map2.exe" [<general option>] [<major switch> [<minor switch> <minor switch>...]] "C:\path\to\maps\mapname.map"

通用選項

[編輯 | 編輯原始碼]
-connect <hostname/ip address>
  • 啟用將 Q3Map2 日誌輸出到遠端主機。此開關允許所有其他(非單獨)開關。
-info
  • 分析已編譯的 bsp 並將資訊輸出到螢幕或日誌。此開關是單獨的,並且之後只允許已編譯的 bsp 的路徑(注意,不是 .map)。
-game <quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion>
  • 啟用對除 Quake III: Arena 之外的遊戲支援。此開關允許所有其他(非單獨)開關。
-fs_game <mod name>
  • 啟用對除遊戲中定義的基本遊戲之外的遊戲模組的支援(在您的 -game 開關中定義)。此開關允許所有其他(非單獨)開關。
-fs_basepath <"C:\path\to\game\directory">
  • 對於 Q3Map2 要讀取除 Quake III: Arena 之外的遊戲的資產目錄,這是必需的。此開關允許所有其他(非單獨)開關。
-convert [-format <ase|map|quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion>]
  • 將已編譯的 .bsp 轉換為另一種格式。此開關是單獨的,並且之後只允許已編譯的 bsp 的路徑(注意,不是 .map)。
  • 如果沒有 -format 子開關,-convert 會將已編譯的 .bsp 轉換為 .ase 模型。Q3Map2 -convert 將 mapname.ase 輸出到“maps”目錄。
  • 其他格式可透過 -format 子開關獲得
    • map 將 .bsp “反編譯”回 .map(大多數實體丟失了,紋理對齊資訊也丟失了)。Q3Map2 -convert -format map 將 mapname_c.map 輸出到“maps”目錄。
    • quake3 將來自其他遊戲 .bsp 格式的 .bsp “交叉編譯”到 Quake III: Arena(此“其他”遊戲在 -game 開關中指定)。例如,要從 Wolfenstein: Enemy Territory 交叉編譯到 Quake III: Arena,將使用“-game et -convert -format quake3”。此功能仍處於開發階段,應暫時視為實驗性的;surfaceparm 位標誌的差異會導致交叉編譯的 .bsp 中出現奇怪現象。Q3Map2 -convert -format quake3 將 mapname_c.bsp 輸出到“maps”目錄。
    • 其他遊戲簡稱與 quake3 類似,但適用於其各自的遊戲。
-scale <N.N>
  • 按規定的係數縮放已編譯的 .bsp。例如,Q3Map2 -scale 0.25 將輸出一個新的 .bsp,其大小為原始 .bsp 的 25%,而 Q3Map2 -scale 2.0 將輸出一個新的 .bsp,其大小為原始 .bsp 的兩倍。Q3Map2 -scale 將 mapname_s.bsp 輸出到“maps”目錄。此開關是單獨的,並且之後只允許已編譯的 bsp 的路徑(注意,不是 .map)。
-export
  • 將已編譯的 .bsp 中的內部光照貼圖匯出到外部 .tga 影像。此開關是單獨的,並且之後只允許已編譯的 bsp 的路徑(注意,不是 .map)。
-import
  • 將外部 .tga 光照貼圖匯入回已編譯的 .bsp。匯入的光照貼圖僅適用於它們從中匯出的未修改的 BSP。此開關是單獨的,並且之後只允許已編譯的 bsp 的路徑(注意,不是 .map)。
-exportents
  • 將現有 BSP 中的實體匯出到 .ent 檔案。示例用法:q3map2 -game quakelive -exportents -v mymap.bsp
-onlyents 
  • 僅使用 .ent 檔案更改 .bsp 中的實體。例如:q3map2.exe -game quakelive -fs_basepath "D:\Program Files (x86)\Steam\steamapps\common\Quake Live" -onlyents "D:\ql stuff\pak00\maps\hellsgate.ent"。將輸出具有更新實體的 hellsgate.bsp(原始 hellsgate.bsp 也應該在包含 .ent 檔案的資料夾中)。
-threads <number of threads Q3Map2 should use>
  • 指定編譯期間要使用的執行緒數。在 Windows 上,Q3Map2 會自動檢測到存在的 CPU 數量,並相應地設定執行緒數。-threads 開關可用於覆蓋此行為。
  • Linux 使用者需要手動設定 -threads 才能在 Q3Map2 中啟用 SMP 支援。
-v
  • 啟用詳細模式。這通常是一個好主意。


-rename
  • 用於修復 SOF2 中 misc_model 實體的問題。如果您的 misc_models 顯示為未照亮且完全為黑色,請使用 -rename 開關。

主要開關

[編輯 | 編輯原始碼]
-bsp
  • 將 .map 檔案編譯成二進位制空間分割 (BSP) 檔案,以供 Quake III: Arena 引擎使用。還會寫入 .prt(門戶資訊)檔案和 .srf(表面)檔案。無需在命令列中新增 -bsp;它是預設開關。
-vis
  • 根據門戶檔案建立可見性集。
-light
  • 計算光照資料。如果未啟用 -light 子開關,則會產生不理想的輸出。

次要開關

[編輯 | 編輯原始碼]

三個主要開關(-bsp、-vis 和 -light)都有許多選項,可以透過它們各自的次要開關訪問。次要開關很多,為了可讀性,次要開關列表已在 Q3Map2 wiki 的單獨頁面上組織。

Q3Map2 BSP 階段次要開關有它們自己的頁面Q3Map2/BSP

Q3Map2 VIS 階段次要開關有它們自己的頁面Q3Map2/VIS

Q3Map2 光照階段次要開關有它們自己的頁面Q3Map2/Light

Q3Map2 特定實體

[編輯 | 編輯原始碼]
  • 指定要投影的貼花。應包含一個或多個貼花網格並以 info_null 實體為目標。在_decal 實體的中心和目標 info_null 之間繪製的目標線是投影的軸線和距離。將_decal 網格視為光膠,info_null 是聚光燈的目標,您正在將此貼花“照射”到地圖幾何體上,這會有所幫助。
  • _skybox 實體是真正的奇蹟:它指定了天空盒的起源(地圖的完全包含的獨立區域),類似於某些遊戲的傳送門天空。當與 Q3Map2 編譯時,天空盒表面將從任何可以正常看到天空的地方可見。它將在地圖的正常部分投下陰影,並且可以與雲層和其他效果一起使用。有關用法資訊,請參見_skybox 教程

Q3Map2 特定實體鍵在Q3Map2/Entity keys頁面上有自己的頁面。

專業教程

[編輯 | 編輯原始碼]

好的“最終”編譯

[編輯 | 編輯原始碼]

當您想要生成地圖的“最終”編譯時,此命令列是構建的良好編譯。它絕不是每個地圖的完美選擇,但根據您自己地圖的特性開始調整的好地方。

"C:\path\to\q3map2.exe" -meta -v "C:\path\to\mapname.map"
"C:\path\to\q3map2.exe" -vis -v "C:\path\to\mapname.map"
"C:\path\to\q3map2.exe" -light -fast -patchshadows -samples 3 -bounce 8 -gamma 2 -compensate 4 -dirty -v "C:\path\to\mapname.map"

預設情況下啟用了 r_overbrightbits 值的遊戲(即 Quake III Arena)可能想要使用-gamma-compensate開關。否則,請從上面的編譯設定中刪除。

從刷子建立 .ase 模型

[編輯 | 編輯原始碼]
  1. 首先,為您的模型建立幾何體。
  2. 將此檔案另存為 model.map(或任何其他名稱)。
  3. 在 bsp 階段使用 -v -meta -patchmeta 編譯 model.map(如果您的曲線看起來太“低保真”,請將“-subdivisions 0”新增到編譯行。如果您想要更復雜,請遞增“ -subdivisions”值)。無需執行 -vis 或 -light。您現在應該在“maps”目錄中擁有 model.bsp。
  4. 使用 -convert 編譯 model.bsp(不是 model.map,請注意)。您現在應該在“maps”目錄中擁有 model.ase。
  5. 建立一個新的 .map 並放置一個 misc_model 實體。為這個 misc_model 實體提供鍵值對“model”/“maps/model.ase”。

以下是一個執行 bsp 和轉換編譯的批處理檔案的示例。

"C:\path\to\q3map2.exe" -bsp -meta -patchmeta -game [game abbreviation] "C:\path\to\model.map"
"C:\path\to\q3map2.exe" -convert ase -game [game abbreviation] "C:\path\to\model.bsp"     

瞧!您現在擁有一個從刷子建立的 misc_model。使用“modelscale”和“angles”實體鍵進行玩耍,並瞭解為什麼 Q3Map2 .ase 轉換是完全棒極了。

-subdivisions
-subdivisions #
  • 指定要在幾何體中進行的細分數量。較大的值會增加三角剖分,因此會降低效能。


為了獲得更多力量,將 model.map 匯入到您的新地圖中作為預製件。選擇“model”刷子,並使用 clip 對其進行紋理化。將這些新的 clip 刷子旋轉到位,覆蓋您的 misc_model;這些 clip 刷子的刷子頂點會有些混亂,但由於玩家無法看到 clip,因此您在遊戲中實際上看不出區別。它很漂亮,並且沒有 Q3Map2 自動剪下的任何不良影響。

_skybox 教程

[編輯 | 編輯原始碼]

_skybox 實體透過正常的實體泛洪演算法“抓取”它能“看到”的所有地圖幾何體,並將它們合併到傳送門天空堆中。這是一個需要理解的重要概念;如果您的“主”地圖與為 _skybox 指定的獨立區域之間存在任何洩漏,您的編譯將永遠持續,只會生成一個非常損壞的 .bsp。話雖如此……

  1. 像往常一樣構建您的地圖,使用您喜歡的任何天空著色器對您的天空刷子進行紋理化。
  2. 將您的地圖與虛空隔離開來(當然)。
  3. 在您“主”地圖稍微遠處的位置建立一個天空刷子的小方塊。您可能可以繪製一個 128x128x128 的天空著色器立方體,然後使用 CSG 的“空心”按鈕。
  4. 在此小天空盒中放置更多幾何體,但注意不要使其過於複雜。此外:除非您使用 -patchmeta 編譯,否則貼花網格不應進入 _skybox 區域……您每次都會得到 MAX_PATCH_PLANES。
  5. 在您的微型天空盒中放置一個 _skybox 實體。_skybox 實體相對於其餘天空盒幾何體的定位決定了傳送門天空的起源相對於您地圖其餘部分的位置……一點點實驗會向您展示它的工作原理。
  6. 編譯,就是這樣。您在 Quake III: Arena 中擁有了一個傳送門天空!

注意

  • “_scale”鍵定義 _skybox 縮放因子。根據您要使用的傳送門天空型別,64-256 之間的值似乎相當不錯。選擇 2 的冪以將 _skybox 幾何體頂點保持在網格上可能是一個好主意。
  • “angles”鍵可用於使您的 _skybox 幾何體傾斜,並使玩家感到暈船。
  • 可以在 _skybox 幾何體上使用 Deformvertexes 著色器,但您使用的值必須按分配給 _scale 的相同值進行縮放,否則看起來不對。
  • 您還必須縮小 _skybox 幾何體上的紋理座標,否則您使用的紋理將顯得極度拉伸。

作者:請參見頁面歷史記錄

反編譯為 .map

[編輯 | 編輯原始碼]

Q3Map2 可以將 .bsp 反編譯為 .map。此過程絕不完美,您永遠不應在許可不允許的情況下從他人的地圖中獲取任何內容,但反編譯地圖對於“瞭解它是如何完成的”很有用。

  1. 將您要反編譯的 .bsp 放置到與 q3map2.exe 相同的目錄中。
  2. 開啟命令提示符並瀏覽到包含 .bsp 和 q3map2.exe 的資料夾。
  3. 鍵入
q3map2 -game [game abbreviation] -convert -format map [name of the bsp file].bsp

因此,如果 .bsp 的名稱為 testmap.bsp,並且您使用的是 Jedi Academy,則使用以下命令

q3map2 -game ja -convert -format map testmap.bsp

然後,您應該在與 q3map2.exe 和 .bsp 相同的資料夾中找到一個 .map。

華夏公益教科書