這是官方的地震2代碼v3.21,其中包括Vulkan支持和任務包。該項目的目的是保持與原始遊戲盡可能多的兼容性 - 只是我們在1997年所知道的純淨,香草地震2的經驗。但是,由於各種原因,有一些顯著的差異削減了:
vk_postprocess CONSOLE命令將游戲的原始,深色外觀切換hudscale Console命令覆蓋)aimfix控制台命令,該命令從Berserker@Quake2備份可以在我的博客文章中找到對該項目背後的思維過程的更詳細的描述,我在其中解釋了總體設計,如何攻擊一些問題,以及在初始版本後的發展方式。
對於額外的挑戰,我決定將VKQuake2基於原始ID軟件代碼。因此,對外部SDL樣庫沒有依賴性,整個項目大部分都是獨立的。這也意味著可能存在一些原始錯誤。
quake2.sln並選擇目標體系結構(x86/x64) - 它應該構建無需任何其他步驟不幸的是,Quake 2的Linux代碼還沒有很好地老化,因此,此時只有Vulkan Renderer可以使用。構建步驟假設Ubuntu是目標分佈:
sudo apt install make gcc g++ mesa-common-dev libglu1-mesa-dev libxxf86dga-dev libxxf86vm-dev libasound2-dev libx11-dev libxcb1-dev
.bashrc文件(替換與系統相對應的sdk版本和位置)來確保設置了適當的環境變量: export VULKAN_SDK=/home/user/VulkanSDK/1.3.224.1/x86_64
export PATH=$VULKAN_SDK/bin:$PATH
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
export VK_LAYER_PATH=$VULKAN_SDK/etc/explicit_layer.d
vulkaninfo進行驗證) - 如果沒有,則可以將它們與: sudo apt install mesa-vulkan-drivers
linux目錄並根據要構建的變體make release或make debug - 輸出二進製文件將分別放置在linux/releasex64和linux/debugx64子目錄中VULKAN_SDK環境變量添加到位置/自定義路徑 - 使其指向下載的SDKmacos/vkQuake2.xcworkspace它應該在沒有任何其他步驟的情況下構建.bash_profile並添加以下條目(用與您的系統相對應的sdk版本和位置替換SDK版本和位置): export VULKAN_SDK=/home/user/VulkanSDK/1.3.224.1
export VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
export VK_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d
macos目錄並運行make release-xcode或根據要構建的變make debug-xcode - 輸出二進製文件將放置在macos/vkQuake2 subdirectory中macos目錄並運行make release或make debug - 輸出二進製文件將分別放置在macos/release和macos/debug Subdirectories中該項目使用與SDK捆綁在一起的VULKAN加載器,而不是直接鏈接到熔融MoltenVK.framework 。這樣做是為了使驗證層可用於調試。使用MacOS 10.14.2對構建進行了測試。
pkg install vulkan-tools vulkan-validation-layers
vulkaninfo進行驗證) - 如果沒有,則應更新它們或找到最適合您的硬件配置的軟件包linux目錄並根據要構建的變體make release或make debug - 輸出二進製文件將分別放置在linux/releasex64和linux/debugx64子目錄中得益於Igalia及其V3DV驅動程序的努力,可以在Raspberry Pi 4上編譯和運行VKQuake2。與Linux應用相同的構建說明。
運行該應用程序需要視覺工作室C ++重新分配:根據所選的體系結構,32位或64位。如果您安裝了Visual Studio,則會自動提供這些。
發行軟件包僅帶有Quake 2演示內容,以展示Vulkan功能。要獲得完整的經驗,請將零售.pak ,模型和視頻文件複製到baseq2目錄中並運行可執行文件。對於任務包,請將必要的數據複製到rogue (“地面零”), xatrix (“ Reckoning”), zaero (“ Quake II:Zaero”)和smd (“輕微機械破壞”)目錄。然後,您可以使用./quake2 +set game rogue ,. ./quake2 +set game xatrix ,. ./quake2 +set game zaero或./quake2 +set game smd 。
如果原始遊戲CD不可用,該項目將使用Miniaudio進行音樂播放。對於標準地震2,將所有軌道複製到trackxx之後的baseq2/music目錄中trackXX.[ogg,flac,mp3,wav]命名方案(so track02.ogg,track03.ogg ... for Ogg文件等)。對於“地面零”和“算”,分別將曲目複製到rogue/music和xatrix/music目錄。要對播放進行進一步的控制,請使用miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] console命令。
使用Vulkan渲染器時可用以下命令:
| 命令 | 行動 |
|---|---|
vk_validation | 切換驗證層:0禁用(默認版本)1僅發生錯誤和警告2完整驗證(debug中的默認值)3啟用VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT |
vk_strings | 打印一些基本的Vulkan/GPU信息。 |
vk_mem | 打印動態頂點/索引/統一/三角形風扇緩衝器內存和描述符設置用法統計信息。 |
vk_device | 在具有多個GPU的系統上指定首選Vulkan設備的索引:-1更喜歡first indeTe_gpu(默認)0..n使用設備#N(設備的完整列表由vk_strings命令返回) |
vk_msaa | toggle msaa(多樣採樣):0關(默認)1 MSAAX22 -MSAAX43 MSAAX84 MSAAX16 |
vk_sampleshading | 為MSAA切換樣品陰影(超級採樣)。 (默認: 0 ) |
vk_mode | Vulkan視頻模式(默認值: 11 )。將其設置為-1使用由r_customwidth定義的自定義屏幕分辨率(默認值: 1024 )和r_customheight (默認值: 768 )控制台變量。 |
vk_flashblend | 將燈的混合物切換到環境上。 (默認: 0 ) |
vk_polyblend | 混合全屏效果:血液,動力等(默認: 1 ) |
vk_skymip | 為Sky Graphics切換MIPMAP信息的使用。 (默認: 0 ) |
vk_finish | 插入vkDeviceWaitIdle()在框架渲染啟動(默認: 0 )上調用。不要使用它,它只是為了擁有 gl_finish等效的目的! |
vk_point_particles | 在使用point_list和紋理三角形進行粒子渲染之間切換。 (默認: 1 ) |
vk_particle_size | 渲染粒徑。 (默認: 40 ) |
vk_particle_att_a | 粒子屬性的強度。 (默認: 0.01 ) |
vk_particle_att_b | 粒子B屬性的強度。 (默認: 0 ) |
vk_particle_att_c | 粒子C屬性的強度。 (默認: 0.01 ) |
vk_particle_min_size | 渲染粒子的最小尺寸。 (默認: 2 ) |
vk_particle_max_size | 渲染粒子的最大尺寸。 (默認: 40 ) |
vk_lockpvs | 鎖定電流PVS表。 (默認: 0 ) |
vk_clear | 清除每個幀的顏色緩衝區。 (默認: 0 ) |
vk_modulate | 紋理亮度修飾符。 (默認: 1 ) |
vk_shadows | 繪製實驗實體陰影。 (默認: 0 ) |
vk_picmip | 紋理的收縮因子。 (默認: 0 ) |
vk_round_down | 切換紋理大小的圓形。 (默認: 1 ) |
vk_log | 日誌框架驗證數據要文件。 (默認: 0 ) |
vk_dynamic | 使用動態照明。 (默認: 1 ) |
vk_showtris | 顯示網狀三角形。 (默認: 0 ) |
vk_lightmap | 顯示燈圖。 (默認: 0 ) |
vk_aniso | 切換各向異性過濾。 (默認: 1 ) |
vk_vsync | 切換垂直同步。 (默認: 0 ) |
vk_postprocess | 切換其他顏色/伽馬校正。 (默認: 1 ) |
vk_underwater | 在水下時切換玩家視覺翹曲。 (默認: 1 ) |
vk_restart | 重新創建整個Vulkan子系統。 |
vk_mip_nearfilter | 使用最近的鄰居過濾進行ipmaps。 (默認: 0 ) |
vk_texturemode | 更改當前紋理過濾模式:VK_NEAREST最近的鄰居插值,無映射VK_LINEAR線性插值,沒有mipmapsVK_MIPMAP_NEAREST最近鄰居插值與mipmapsVK_MIPMAP_LINEAR使用MIPMAP的線性插值(默認) |
vk_lmaptexturemode | 與vk_texturemode相同,但應用於燈圖紋理。 |
vk_fullscreen_exclusive | 僅Windows:切換使用全屏模式的使用(默認值: 1 )。請注意,當啟用此選項時,不能保證可以在系統上獲取獨家全屏。 |
vk_sampleshading ,則該應用程序可能會掛在某些MacBook上