这是官方的地震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上