Это официальный код Quake 2 v3.21 с вульковской поддержкой и пакетами миссий. Цель этого проекта состоит в том, чтобы поддерживать как можно больше совместимости с оригинальной игрой - просто чистый опыт ванильного Quake 2, как мы знали его еще в 1997 году. Однако есть несколько заметных различий, которые сделали сокращение по разным причинам:
vk_postprocesshudscale Console)aimfix Console, обратная от Berserker@Quake2Более подробное описание мыслительного процесса, стоящего за этим проектом, можно найти в моем блоге, где я объясняю общий дизайн, как я атаковал некоторые проблемы, а также то, как все было разработано после первоначального выпуска.
Для дополнительной задачи я решил основать vkquake2 на исходном программном коде идентификации. Из-за этого нет никаких зависимостей от внешних библиотек, подобных SDL, и весь проект в основном является автономным. Это также подразумевает, что некоторые из исходных ошибок могут присутствовать.
quake2.sln и выберите целевую архитектуру (x86/x64) - он должен построить без каких -либо дополнительных шагов К сожалению, код Linux для Quake 2 плохо выдержал, и по этой причине только 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 на те, которые соответствуют вашей системе): 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/vkQuake2macos/debug возможно построить игру с помощью инструментов разработчика командной строки macos/release если они их установлены: введите каталог macos и запустить make release или make debug - В этом проекте используется Vulkan Loader, связанный с SDK, а не напрямую связывается с 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, можно скомпилировать и запустить vkquake2 на Raspberry Pi 4. Те же инструкции по сборке, что и для Linux.
Visual Studio C ++ перераспределяется для запуска приложения: 32-битный или 64-битный в зависимости от выбранной архитектуры. Они предоставляются автоматически, если у вас установлен Visual Studio.
Пакет релизов поставляется только с демонстрационным контентом Quake 2 для демонстрации функциональности Vulkan. Для полного опыта скопируйте розничную торговлю .pak , модель и видеофайлы в каталог baseq2 и запустите исполняемый файл. Для пакетов миссий скопируют необходимые данные в rogue («Ground Zero»), xatrix («расчет»), zaero («Quake II: Zaero») и smd («Небольшое механическое разрушение») соответственно. ./quake2 +set game smd вы можете запустить игру ./quake2 +set game zaero ./quake2 +set game rogue ./quake2 +set game xatrix
Этот проект использует Miniaudio для воспроизведения музыки, если оригинальный игровой компакт -диск недоступен. Для стандартного Quake 2 скопируйте все треки в каталог baseq2/music после trackXX.[ogg,flac,mp3,wav] Схема именования (SO SO TRACK02.ogg, Track03.ogg ... для файлов OGG и т. Д.). Для «Ground Zero» и «The Reckoning» скопируйте треки в rogue/music и xatrix/music Directory соответственно. Для получения дополнительного контроля над воспроизведением используйте miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] Console Command.
Следующие команды доступны при использовании рендеринга Vulkan:
| Командование | Действие |
|---|---|
vk_validation | Переключатели слои проверки:0 - Отключено (по умолчанию в релизе)1 - только ошибки и предупреждения2 - Полная проверка (по умолчанию в отладке)3 - enables VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT |
vk_strings | Распечатайте некоторую базовую информацию о Vulkan/GPU. |
vk_mem | Распечатать динамическую вершину/индекс/униформу/треугольный вентилятор память и дескриптор устанавливает статистику использования. |
vk_device | Укажите индекс предпочтительного вулканского устройства в системах с несколькими графическими процессорами:-1 - предпочитаю первый discrete_gpu (по умолчанию)0..n - Использование устройства #N (полный список устройств возвращается командой vk_strings ) |
vk_msaa | Переверните MSAA (MultiSampling):0 - OFF (по умолчанию)1 - MSAAX22 - MSAAX43 - MSAAX84 - MSAAX16 |
vk_sampleshading | Переключение образца затенения (SuperSampling) для MSAA. (по умолчанию: 0 ) |
vk_mode | Вульканский видео режим (по умолчанию: 11 ). Установка этого на -1 использует пользовательское разрешение экрана, определяемое r_customwidth (по умолчанию: 1024 ) и r_customheight (по умолчанию: 768 ) консольные переменные. |
vk_flashblend | Переключите смешивание огней в окружающую среду. (по умолчанию: 0 ) |
vk_polyblend | Смешайте полноэкранные эффекты: кровь, Powerups и т. Д. (По умолчанию: 1 ) |
vk_skymip | Переключайте использование информации о MIPMAP для Sky Graphics. (по умолчанию: 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 | Отображение Lightmaps. (по умолчанию: 0 ) |
vk_aniso | Переключить анизотропную фильтрацию. (По умолчанию: 1 ) |
vk_vsync | Переверните вертикальную синхронизацию. (по умолчанию: 0 ) |
vk_postprocess | Переключить дополнительный цвет/гамма -коррекция. (По умолчанию: 1 ) |
vk_underwater | Переверните видение игрока, когда под водой. (По умолчанию: 1 ) |
vk_restart | Воссоздать всю подсистему Вулкана. |
vk_mip_nearfilter | Используйте фильтрацию ближайшего соседа для MIPMAP. (по умолчанию: 0 ) |
vk_texturemode | Измените текущую режим фильтрации текстуры:VK_NEAREST - интерполяция ближайшего соседа, без MIPMAPSVK_LINEAR - Линейная интерполяция, без MIPMAPSVK_MIPMAP_NEAREST - Интерполяция ближайшего соседа с MIPMAPSVK_MIPMAP_LINEAR - Линейная интерполяция с MIPMAPS (по умолчанию) |
vk_lmaptexturemode | То же, что и vk_texturemode , но применяется к текстурам LightMap. |
vk_fullscreen_exclusive | Только Windows: переключение использования эксклюзивного полноэкранного режима (по умолчанию: 1 ). Обратите внимание, что когда эта опция включена, нет никакой гарантии, что эксклюзивный полноэкранный может быть приобретен в вашей системе. |
vk_sampleshading включено из -за потенциальной ошибки в драйвере металла, вызывая тупик во время шейдера