Vulkan 지원 및 미션 팩이 포함 된 공식 Quake 2 코드 v3.21입니다. 이 프로젝트의 목표는 1997 년에 우리가 알고있는 순수한 바닐라 Quake 2 경험 만 원래 게임에서 가능한 한 많은 호환성을 유지하는 것입니다. 그러나 여러 가지 이유로 줄어드는 몇 가지 주목할만한 차이점이 있습니다.
vk_postprocess Console 명령으로 토글 할 수 있습니다.hudscale Console 명령으로 재정의 할 수 있음)aimfix 콘솔 명령을 추가했습니다이 프로젝트의 사고 과정에 대한보다 자세한 설명은 블로그 게시물에서 찾을 수 있습니다. 여기서 전체 디자인, 일부 문제를 공격하는 방법 및 초기 릴리스 이후의 작업이 어떻게 발전했는지 설명 할 수 있습니다.
추가 도전을 위해 원래 ID 소프트웨어 코드를 기반으로하기로 결정했습니다. 이 때문에 외부 SDL 유사 라이브러리에 의존성이 없으며 전체 프로젝트는 대부분 자체 포함됩니다. 이것은 또한 원래 버그 중 일부가 존재할 수 있음을 의미합니다.
quake2.sln 열고 대상 아키텍처 (x86/x64)를 선택하십시오 - 추가 단계없이 빌드해야합니다. 불행히도, Quake 2의 Linux 코드는 잘 지내지 않았으며, 그 이유 때문에 현재 Vulkan 렌더러 만 사용할 수 있습니다. 빌드 단계는 우분투가 목표 분포라고 가정합니다.
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 환경 변수를 위치/사용자 정의 경로에 추가 - 다운로드 된 SDK를 가리 키십시오.macos/vkQuake2.xcworkspace 추가 단계없이 빌드해야합니다..bash_profile 수정하고 다음 항목을 추가 할 수 있습니다 (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 디렉토리를 입력하고 run make release-xcode 거나 빌드 할 변형에 따라 make debug-xcode -출력 binaries는 macos/vkQuake2 서브 디렉토리에 배치됩니다.macos 디렉토리를 입력하고 실행 make release 또는 make debug - 출력 Binaries는 각각 macos/release 및 macos/debug 하위 디렉토리에 배치됩니다. 이 프로젝트는 MoltenVK.framework 와 직접 연결하는 대신 SDK와 함께 번들 된 Vulkan 로더를 사용합니다. 이것은 유효성 검사 계층을 디버깅 할 수 있도록 수행됩니다. 빌드는 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 Apply와 동일한 빌드 지침.
비주얼 스튜디오 C ++ 재분배 가능은 응용 프로그램을 실행하려면 선택한 아키텍처에 따라 32 비트 또는 64 비트를 실행해야합니다. Visual Studio가 설치된 경우 자동으로 제공됩니다.
릴리스 패키지는 Quake 2 데모 컨텐츠와 함께 제공되어 Vulkan 기능을 보여줍니다. 전체 경험을 원하시면 소매 .pak , 모델 및 비디오 파일을 baseq2 디렉토리에 복사하고 실행 파일을 실행하십시오. 미션 팩의 경우 필요한 데이터를 rogue ( "Ground Zero"), xatrix ( "The Reckoning"), zaero ( "Quake II : Zaero") 및 smd ( "Simble Mechanical Probruction") 디렉토리에 각각 복사하십시오. 그런 다음 ./quake2 +set game rogue , ./quake2 +set game xatrix , ./quake2 +set game zaero 또는 ./quake2 +set game smd 로 게임을 시작할 수 있습니다.
이 프로젝트는 원래 게임 CD를 사용할 수없는 경우 음악 재생을 위해 MiniaUdio를 사용합니다. Standard Quake 2의 경우 Trackxx를 따라 모든 트랙을 baseq2/music 디렉토리에 복사합니다 trackXX.[ogg,flac,mp3,wav] "Ground Zero"및 "The Reckoning"의 경우 트랙을 각각 rogue/music 및 xatrix/music Directories에 복사하십시오. 재생을 추가로 제어하려면 miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] Console 명령을 사용하십시오.
Vulkan 렌더러를 사용할 때 다음 명령을 사용할 수 있습니다.
| 명령 | 행동 |
|---|---|
vk_validation | 검증 계층 토글 :0 비활성화 (릴리스 기본값)1 오류와 경고 만2 전체 유효성 검사 (디버그의 기본값)3 VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT 활성화합니다 |
vk_strings | 일부 기본 vulkan/gpu 정보를 인쇄하십시오. |
vk_mem | 동적 정점/인덱스/균일/삼각형 팬 버퍼 메모리 및 디스크립터 세트 사용 통계를 인쇄하십시오. |
vk_device | 여러 GPU가있는 시스템에서 선호하는 Vulkan 장치의 인덱스를 지정하십시오.-1 선호 첫 번째 distrete_gpu (기본값)0..n 장치 #N 사용 (전체 목록 목록은 vk_strings 명령에 의해 반환 됨) |
vk_msaa | 토글 MSAA (멀티 샘플링) :0 -Off (기본값)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 | 스카이 그래픽에 대한 MIPMAP 정보 사용을 전환하십시오. (기본값 : 0 ) |
vk_finish | 프레임 렌더링 시작 (기본값 : 0 )에서 vkDeviceWaitIdle() 호출을 삽입합니다.이것을 사용하지 마십시오. gl_finish 에 해당하는 것을 위해서만 있습니다! |
vk_point_particles | 입자 렌더링을 위해 point_list와 텍스처 트라이니글을 사용하는 것 사이를 전환합니다. (기본값 : 1 ) |
vk_particle_size | 렌더링 된 입자 크기. (기본값 : 40 ) |
vk_particle_att_a | 입자 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 | MIPMAPS에 가장 가까운 이웃 필터링을 사용하십시오. (기본값 : 0 ) |
vk_texturemode | 현재 텍스처 필터링 모드 변경 :VK_NEAREST 가장 가까운 이웃 보간, MIPMAPS 없음VK_LINEAR 선형 보간, 미트 맵 없음VK_MIPMAP_NEAREST MIPMAPS와 가장 가까운 이웃 보간VK_MIPMAP_LINEAR MIPMAPS와의 선형 보간 (기본값) |
vk_lmaptexturemode | vk_texturemode 와 동일하지만 Lightmap 텍스처에 적용됩니다. |
vk_fullscreen_exclusive | Windows 전용 : 독점 전체 화면 모드의 사용을 전환합니다 (기본값 : 1 ). 이 옵션이 활성화되면 시스템에서 독점 전체 화면을 얻을 수 있다는 보장은 없습니다. |
vk_sampleshading 활성화되면 일부 MacBook에 응용 프로그램이 매달릴 수 있습니다.