Il s'agit du Code officiel du Quake 2 V3.21 avec le support Vulkan et les packs de mission inclus. L'objectif de ce projet est de maintenir autant de compatibilité que possible avec le jeu original - juste une expérience pure, Vanilla Quake 2 comme nous le connaissions en 1997. Il existe cependant quelques différences notables qui ont fait la coupe pour diverses raisons:
vk_postprocesshudscale Console)aimfix Console, recouverte de Berserker @ Quake2Une description plus détaillée du processus de réflexion derrière ce projet peut être trouvée dans mon article de blog, où j'explique la conception globale, comment j'ai attaqué certains des problèmes et aussi comment les choses se sont développées après la version initiale.
Pour plus de défi, j'ai décidé de baser VKQuake2 sur le code logiciel ID d'origine. Pour cette raison, il n'y a pas de dépendances sur les bibliothèques externes de type SDL et l'ensemble du projet est principalement autonome. Cela implique également que certains des bogues d'origine pourraient être présents.
quake2.sln et choisissez l'architecture cible (x86 / x64) - il devrait construire sans étapes supplémentaires Malheureusement, le code Linux pour Quake 2 n'a pas bien vieilli et pour cette raison, seul le rendu Vulkan est disponible pour une utilisation pour le moment. Les étapes de construction supposent que Ubuntu est la distribution cible:
sudo apt install make gcc g++ mesa-common-dev libglu1-mesa-dev libxxf86dga-dev libxxf86vm-dev libasound2-dev libx11-dev libxcb1-dev
.bashrc (remplacez la version SDK et l'emplacement par celles correspondant à votre système): 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 pour vérifier) - sinon, vous pouvez les obtenir avec: sudo apt install mesa-vulkan-drivers
linux et Type make release ou make debug en fonction de la variante que vous souhaitez construire - les binaires de sortie seront placés respectivement dans linux/releasex64 et linux/debugx64 VULKAN_SDK aux emplacements / chemins personnalisés - faites-le souligner le SDK téléchargémacos/vkQuake2.xcworkspace - il devrait construire sans aucune étape supplémentaire.bash_profile et ajouter les entrées suivantes (remplacer la version et l'emplacement du SDK par ceux correspondant à votre système): 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 et exécutez make release-xcode ou make debug-xcode en fonction de la variante que vous souhaitez construire - les binaires de sortie seront placés dans le sous-répertoire macos/vkQuake2macos et exécutez make release ou make debug - les binaires de sortie seront placés respectivement dans macos/release et macos/debug Sous-répertoires Ce projet utilise le chargeur Vulkan groupé avec le SDK, plutôt que de lier directement à MoltenVK.framework . Cela est fait pour que les couches de validation soient disponibles pour le débogage. Les builds ont été testés à l'aide de macOS 10.14.2.
pkg install vulkan-tools vulkan-validation-layers
vulkaninfo pour vérifier) - sinon, vous devez les mettre à jour ou trouver un package qui convient le mieux à votre configuration matériellelinux et Type make release ou make debug en fonction de la variante que vous souhaitez construire - les binaires de sortie seront placés respectivement dans linux/releasex64 et linux/debugx64 Grâce à l'effort d'Igalia et de leur pilote V3DV, il est possible de compiler et d'exécuter VKQuake2 sur Raspberry Pi 4. Même instructions de construction que pour Linux s'appliquer.
Le Visual Studio C ++ redistribuable est nécessaire pour exécuter l'application: 32 bits ou 64 bits selon l'architecture choisie. Ceux-ci sont fournis automatiquement si Visual Studio est installé.
Le package de version est livré uniquement avec le contenu de démonstration Quake 2 pour présenter les fonctionnalités Vulkan. Pour une expérience complète, copiez le commerce de détail .pak , le modèle et les fichiers vidéo dans le répertoire baseq2 et exécutez l'exécutable. Pour les packs de mission, copiez les données nécessaires à rogue ("Ground Zero"), xatrix ("The Reckoning"), zaero ("Quake II: Zaero") et smd ("légère destruction mécanique") respectivement. Vous pouvez ensuite démarrer le jeu avec soit ./quake2 +set game rogue , ./quake2 +set game xatrix , ./quake2 +set game zaero ou ./quake2 +set game smd .
Ce projet utilise MiniIdio pour la lecture musicale si le CD de jeu original n'est pas disponible. Pour Standard Quake 2, copiez toutes les pistes dans le répertoire baseq2/music suivant le schéma de dénomination trackXX.[ogg,flac,mp3,wav] Pour "Ground Zero" et "The Reckoning", copiez respectivement les pistes des répertoires rogue/music et xatrix/music . Pour un contrôle supplémentaire sur la lecture, utilisez la commande miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] Console.
Les commandes suivantes sont disponibles lors de l'utilisation du rendu Vulkan:
| Commande | Action |
|---|---|
vk_validation | Basculer les couches de validation:0 - Désactivé (par défaut en version)1 - Seules les erreurs et les avertissements2 - Validation complète (défaut par défaut)3 - Active VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT |
vk_strings | Imprimez des informations de base Vulkan / GPU. |
vk_mem | Imprimer Dynamic Vertex / index / Uniform / Triangle Fan Buffer Memory and Descriptor Set Utilising Statistics. |
vk_device | Spécifiez l'index du périphérique Vulkan préféré sur les systèmes avec plusieurs GPU:-1 - Préférez d'abord Discret_GPU (par défaut)0..n - Utilisez le périphérique #N (la liste complète des périphériques est renvoyée par la commande vk_strings ) |
vk_msaa | Togle MSAA (multi-échantillonnage):0 - OFF (par défaut)1 - msaax22 - MSAAX43 - MSAAX84 - MSAAX16 |
vk_sampleshading | Basculer l'ombrage de l'échantillon (supersampling) pour MSAA. (par défaut: 0 ) |
vk_mode | Mode vidéo Vulkan (par défaut: 11 ). Le réglage sur -1 utilise une résolution d'écran personnalisée définie par r_customwidth (par défaut: 1024 ) et r_customheight (par défaut: 768 ) Variables de console. |
vk_flashblend | Basculez le mélange des lumières sur l'environnement. (par défaut: 0 ) |
vk_polyblend | Mélanger les effets en plein écran: sang, powerups, etc. (par défaut: 1 ) |
vk_skymip | Basculez l'utilisation des informations MIPMAP pour les graphiques du ciel. (par défaut: 0 ) |
vk_finish | Insère un appel vkDeviceWaitIdle() au début du rendu de trame (par défaut: 0 ).N'utilisez pas cela, c'est là juste pour avoir un équivalent gl_finish ! |
vk_point_particles | Basculez entre l'utilisation de Point_list et des triangles texturés pour le rendu des particules. (par défaut: 1 ) |
vk_particle_size | Taille des particules rendues. (par défaut: 40 ) |
vk_particle_att_a | Intensité de la particule A attribut. (par défaut: 0.01 ) |
vk_particle_att_b | Intensité de l'attribut de particule B. (par défaut: 0 ) |
vk_particle_att_c | Intensité de l'attribut de particule C. (par défaut: 0.01 ) |
vk_particle_min_size | La taille minimale d'une particule rendue. (par défaut: 2 ) |
vk_particle_max_size | La taille maximale d'une particule rendue. (par défaut: 40 ) |
vk_lockpvs | Verrouiller la table PVS actuelle. (par défaut: 0 ) |
vk_clear | Effacer le tampon de couleur à chaque cadre. (par défaut: 0 ) |
vk_modulate | Modificateur de luminosité de texture. (par défaut: 1 ) |
vk_shadows | Dessinez des ombres entités expérimentales. (par défaut: 0 ) |
vk_picmip | Facteur de rétrécissement pour les textures. (par défaut: 0 ) |
vk_round_down | Basculez l'arrondi des tailles de texture. (par défaut: 1 ) |
vk_log | Données de validation du trame de journal en fichier. (par défaut: 0 ) |
vk_dynamic | Utilisez un éclairage dynamique. (par défaut: 1 ) |
vk_showtris | Afficher les triangles en maille. (par défaut: 0 ) |
vk_lightmap | Afficher les LightMaps. (par défaut: 0 ) |
vk_aniso | Basculer le filtrage anisotrope. (par défaut: 1 ) |
vk_vsync | Basculer la synchronisation verticale. (par défaut: 0 ) |
vk_postprocess | Basculez la correction de couleur / gamma supplémentaire. (par défaut: 1 ) |
vk_underwater | Basculer la vision des joueurs lorsqu'il est sous l'eau. (par défaut: 1 ) |
vk_restart | Recréer un sous-système Vulkan entier. |
vk_mip_nearfilter | Utilisez le filtrage de NEIGHBOR le plus proche pour les MIPMAP. (par défaut: 0 ) |
vk_texturemode | Modifier le mode de filtrage de texture actuel:VK_NEAREST - Interpolation du plus proche de l'Eightbor, pas de mipmapsVK_LINEAR - Interpolation linéaire, pas de mipmapsVK_MIPMAP_NEAREST - Interpolation la plus proche de Neighbor avec MIPMAPSVK_MIPMAP_LINEAR - Interpolation linéaire avec MIPMAP (par défaut) |
vk_lmaptexturemode | Identique à vk_texturemode mais appliqué aux textures LightMap. |
vk_fullscreen_exclusive | Windows uniquement: basculez l'utilisation du mode plein écran exclusif (par défaut: 1 ). Notez que lorsque cette option est activée, il n'y a aucune garantie que l'écran complet exclusif peut être acquis sur votre système. |
vk_sampleshading est activé en raison d'un bug potentiel dans le pilote métallique provoquant une impasse pendant la compilation de shader