Dies ist der offizielle Quake 2 -Code v3.21, in dem Vulkan -Unterstützung und Missionspakete enthalten sind. Das Ziel dieses Projekts ist es, mit dem ursprünglichen Spiel so viel Kompatibilität wie möglich aufrechtzuerhalten - nur reine Vanille -Quake -2 -Erfahrung, wie wir es 1997 kannten. Es gibt jedoch einige bemerkenswerte Unterschiede, die den Schnitt aus verschiedenen Gründen gemacht haben:
vk_postprocess console umgeschaltet werdenhudscale console überschrieben werden)aimfix -Konsole wurde von Berserker@quake2 zurückgesetztEine detailliertere Beschreibung des Denkprozesses hinter diesem Projekt finden Sie in meinem Blog -Beitrag, in dem ich das Gesamtdesign erkläre, wie ich einige der Probleme angegriffen habe und wie sich die Dinge nach der ersten Veröffentlichung entwickelt habe.
Für die zusätzliche Herausforderung habe ich mich entschlossen, VKQUAKE2 auf den ursprünglichen ID -Softwarecode zu stützen. Aus diesem Grund gibt es keine Abhängigkeiten von externen SDL-ähnlichen Bibliotheken und das gesamte Projekt ist größtenteils in sich geschlossen. Dies impliziert auch, dass einige der ursprünglichen Fehler vorhanden sein könnten.
quake2.sln und wählen Sie die Zielarchitektur (x86/x64) - sie sollte ohne zusätzliche Schritte erstellen Leider ist der Linux -Code für Quake 2 nicht gut gealtert, und aus diesem Grund kann der Vulkan -Renderer zu diesem Zeitpunkt nur der Vulkan -Renderer zur Verfügung stehen. Bauschritte gehen davon aus, dass Ubuntu die Zielverteilung ist:
sudo apt install make gcc g++ mesa-common-dev libglu1-mesa-dev libxxf86dga-dev libxxf86vm-dev libasound2-dev libx11-dev libxcb1-dev
.bashrc -Datei hinzufügen (Ersetzen Sie die SDK -Version und den Speicherort durch die Ihrem System entsprechenden): 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 reiten Sie dies zu überprüfen) - wenn nicht, können Sie sie mit: sudo apt install mesa-vulkan-drivers
linux -Verzeichnis ein und type type make release oder make debug je nachdem, welche Variante Sie erstellen möchten - Ausgabe -Binärdateien werden in linux/releasex64 bzw. linux/debugx64 -Subdirektorien platziert VULKAN_SDKmacos/vkQuake2.xcworkspace - es sollte ohne zusätzliche Schritte erstellen.bash_profile und fügen Sie die folgenden Einträge hinzu (ersetzen Sie die SDK -Version und der Speicherort durch die, die Ihrem System entsprechen): 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/vkQuake2 das macos -Verzeichnis ein make debug-xcode make release-xcodemake debug das Spiel mit Befehlsleitungsentwickler -Tools zu erstellen macos/debug wenn Sie es installiert haben: Geben macos/release das macos -Verzeichnis ein und make release Dieses Projekt verwendet den mit dem SDK gebündelten Vulkan -Lader, anstatt sich direkt gegen MoltenVK.framework zu verknüpfen. Dies geschieht, damit Validierungsschichten für das Debuggen verfügbar sind. Builds wurden mit macOS 10.14.2 getestet.
pkg install vulkan-tools vulkan-validation-layers
vulkaninfolinux -Verzeichnis ein und type type make release oder make debug je nachdem, welche Variante Sie erstellen möchten - Ausgabe -Binärdateien werden in linux/releasex64 bzw. linux/debugx64 -Subdirektorien platziert Dank der Bemühungen von Igalia und ihrem V3DV -Treiber ist es möglich, VKQUAKE2 auf Raspberry Pi zu kompilieren und zu betreiben. Gleiche Build -Anweisungen wie für Linux -Bewerben.
Der Umverteilungsabteil von Visual Studio C ++ ist erforderlich, um die Anwendung auszuführen: 32-Bit oder 64-Bit, abhängig von der gewählten Architektur. Diese werden automatisch bereitgestellt, wenn Sie Visual Studio installiert haben.
Das Release -Paket ist nur mit dem Inhalt von Quake 2 Demo ausgestattet, um Vulkan -Funktionen zu präsentieren. Für die vollständige Erfahrung kopieren Sie den Einzelhandel .pak Pak-, Modell- und Videodateien in das baseq2 -Verzeichnis und führen Sie die ausführbare Datei aus. Für Missionspakete, kopieren Sie die erforderlichen Daten in rogue ("Ground Zero"), xatrix ("The Reckoning"), zaero ("Quake II: Zaero") bzw. smd ("leichte mechanische Zerstörung"). Sie können das Spiel dann mit beiden starten ./quake2 +set game rogue ./quake2 +set game xatrix ./quake2 +set game zaero ./quake2 +set game smd
Dieses Projekt verwendet Miniaudio für die Musik -Wiedergabe, wenn die Original -Spiel -CD nicht verfügbar ist. Für Standard -Quake 2 kopieren Sie alle Tracks nach dem Verzeichnis baseq2/music nach dem trackXX.[ogg,flac,mp3,wav] Kopieren Sie für "Ground Zero" und "The Reckoning" die Tracks in rogue/music und xatrix/music -Verzeichnisse. Für zusätzliche Kontrolle über die Wiedergabe verwenden Sie das miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] Konsolenbefehl.
Die folgenden Befehle sind verfügbar, wenn der Vulkan -Renderer verwendet wird:
| Befehl | Aktion |
|---|---|
vk_validation | Validierungsschichten umschalten:0 - deaktiviert (Standard in der Veröffentlichung)1 - Nur Fehler und Warnungen2 - Vollständige Validierung (Standard im Debug)3 - Aktiviert VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT |
vk_strings | Drucken Sie einige grundlegende Vulkan/GPU -Informationen. |
vk_mem | Dynamische Vertex/Index/Uniform/Dreieck -Lüfterpufferspeicher und Deskriptor -Nutzungsstatistik drucken. |
vk_device | Geben Sie den Index des bevorzugten Vulkan -Geräts auf Systemen mit mehreren GPUs an:-1 - Bevorzugen Sie First Discrete_gpu (Standard)0..n - Verwenden Sie Geräte #N (Die vollständige Liste der Geräte wird vom Befehl vk_strings zurückgegeben) |
vk_msaa | MSAA umschalten (MultiSamping):0 - Aus (Standard)1 - msaax22 - msaax43 - msaax84 - MSAAX16 |
vk_sampleshading | Schalter Sie die Probenschattierung (SuperAmpling) für MSAA. (Standard: 0 ) |
vk_mode | Vulkan Video -Modus (Standard: 11 ). Wenn Sie dies auf -1 einstellen, wird eine benutzerdefinierte Bildschirmauflösung verwendet, die von r_customwidth (Standard: 1024 ) und r_customheight (Standard: 768 ) Konsolenvariablen definiert ist. |
vk_flashblend | Schalten Sie die Lichtermischung in die Umgebung. (Standard: 0 ) |
vk_polyblend | Vollbild -Effekte mischen: Blut, Powerups usw. (Standard: 1 ) |
vk_skymip | Schalten Sie die Verwendung von MIPMAP -Informationen für die Sky -Grafik um. (Standard: 0 ) |
vk_finish | Fügt einen vkDeviceWaitIdle() -Anruf beim Frame Render Start (Standard: 0 ) ein.Verwenden Sie dies nicht, es gibt nur ein gl_finish -Äquivalent! |
vk_point_particles | Wechseln Sie zwischen Point_List und strukturierten Dreiecken für die Partikelwiedergabe. (Standard: 1 ) |
vk_particle_size | Partikelgröße rendern. (Standard: 40 ) |
vk_particle_att_a | Intensität des Teilchens ein Attribut. (Standard: 0.01 ) |
vk_particle_att_b | Intensität des Teilchen -B -Attributs. (Standard: 0 ) |
vk_particle_att_c | Intensität des Teilchen -C -Attributs. (Standard: 0.01 ) |
vk_particle_min_size | Die Mindestgröße eines gerenderten Partikels. (Standard: 2 ) |
vk_particle_max_size | Die maximale Größe eines gerenderten Partikels. (Standard: 40 ) |
vk_lockpvs | Sperrströmungssperrungstabelle. (Standard: 0 ) |
vk_clear | Löschen Sie jeden Rahmen den Farbpuffer. (Standard: 0 ) |
vk_modulate | Texturhelligkeitsmodifikator. (Standard: 1 ) |
vk_shadows | Zeichnen Sie experimentelle Entitätsschatten. (Standard: 0 ) |
vk_picmip | Schrumpffaktor für die Texturen. (Standard: 0 ) |
vk_round_down | Schalten Sie die Rundung der Texturgrößen um. (Standard: 1 ) |
vk_log | Log -Rahmen -Validierungsdaten zur Datei. (Standard: 0 ) |
vk_dynamic | Verwenden Sie dynamische Beleuchtung. (Standard: 1 ) |
vk_showtris | Mesh -Dreiecke anzeigen. (Standard: 0 ) |
vk_lightmap | Lightmaps anzeigen. (Standard: 0 ) |
vk_aniso | Anisotrope Filterung umschalten. (Standard: 1 ) |
vk_vsync | Vertikale Synchronisierung umschalten. (Standard: 0 ) |
vk_postprocess | Schalten Sie die zusätzliche Farb-/Gamma -Korrektur um. (Standard: 1 ) |
vk_underwater | Wickeln Sie den Spieler Vision im Unterwasser. (Standard: 1 ) |
vk_restart | Erstellen Sie das gesamte Vulkan -Subsystem. |
vk_mip_nearfilter | Verwenden Sie die Filterung des nächsten Nachbarn für MIPMaps. (Standard: 0 ) |
vk_texturemode | Ändern Sie den aktuellen Texturfiltermodus:VK_NEAREST - Interpolation der nächsten Nachbarung, keine MIPMapsVK_LINEAR - Lineare Interpolation, keine MIPMapsVK_MIPMAP_NEAREST - Nächste -Nachbarung mit MIPMapsVK_MIPMAP_LINEAR - Lineare Interpolation mit MIPMaps (Standard) |
vk_lmaptexturemode | Gleich wie vk_texturemode , aber auf Lightmap -Texturen angewendet. |
vk_fullscreen_exclusive | Nur Windows: Verwenden Sie die Verwendung des exklusiven Vollbildmodus (Standard: 1 ). Beachten Sie, dass es bei der Aktivierung dieser Option keine Garantie dafür gibt, dass exklusive Vollbildmodus in Ihrem System erfasst werden kann. |
vk_sampleshading aufgrund eines potenziellen Fehlers im Metalltreiber aktiviert ist, der während der Shader -Kompilierung einen Deadlock verursacht