هذا هو الزلزال الرسمي 2 كود V3.21 مع دعم فولكان وحزم المهمة. الهدف من هذا المشروع هو الحفاظ على أكبر قدر ممكن من التوافق مع اللعبة الأصلية - مجرد تجربة Vanilla Quake 2 كما عرفناها في عام 1997. ومع ذلك ، هناك بعض الاختلافات البارزة التي جعلت القطع لأسباب مختلفة:
vk_postprocess Commandhudscale Console)aimfix Console ، الذي تم التراجع عنه من Berserker@Quake2يمكن العثور على وصف أكثر تفصيلاً لعملية التفكير وراء هذا المشروع في منشور مدونتي ، حيث أشرح التصميم العام ، وكيف هاجمت بعض المشكلات وأيضًا كيف تطورت الأشياء بعد الإصدار الأولي.
للحصول على تحدي إضافي ، قررت بناء vkquake2 على رمز برنامج المعرف الأصلي. لهذا السبب ، لا توجد تبعيات على مكتبات شبيهة SDL الخارجية والمشروع بأكمله في الغالب. هذا يعني أيضًا أن بعض الأخطاء الأصلية يمكن أن تكون موجودة.
quake2.sln واختر بنية الهدف (x86/x64) - يجب أن تبني دون أي خطوات إضافية لسوء الحظ ، لم يتمكن Linux Code for Quake 2 من العمر جيدًا ولهذا السبب يتوفر عارض Vulkan فقط للاستخدام في هذا الوقت. Build Build ، افترض أن 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 إلى المواقع/المسارات المخصصة - اجعله يشير إلى 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 وقم بتشغيل make release-xcode أو make debug-xcode اعتمادًا على المتغير الذي تريد إنشاءه-سيتم وضع ثنائيات الإخراج في دليل macos/vkQuake2macos وقم بتشغيل make release أو make debug - سيتم وضع ثنائيات الإخراج في macos/release و macos/debug يستخدم هذا المشروع محمل Vulkan المغطى بـ 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 ("The Reckoning") و zaero ("Quake II: Zaero") و smd ("تدمير ميكانيكي بسيط") على التوالي. يمكنك بعد ذلك بدء اللعبة باستخدام ./quake2 +set game rogue ./quake2 +set game xatrix ./quake2 +set game zaero ./quake2 +set game smd .
يستخدم هذا المشروع Miniaudio لتشغيل الموسيقى إذا لم يكن قرص اللعبة الأصلي متاحًا. بالنسبة إلى Standard Quake 2 ، انسخ جميع المسارات في دليل baseq2/music بعد trackXX.[ogg,flac,mp3,wav] مخطط التسمية (لذلك Track02.ogg ، Track03.ogg ... لملفات OGG وما إلى ذلك). بالنسبة إلى "Ground Zero" و "The Reckoning" ، انسخ المسارات إلى دلائل rogue/music و xatrix/music على التوالي. للتحكم الإضافي في التشغيل ، استخدم miniaudio [on,off,play [X],loop [X],stop,pause,resume,info] .
تتوفر الأوامر التالية عند استخدام عارض Vulkan:
| يأمر | فعل |
|---|---|
vk_validation | تبديل طبقات التحقق من الصحة:0 - معطل (افتراضي في الإصدار)1 - فقط الأخطاء والتحذيرات2 - التحقق الكامل (الافتراضي في التصحيح)3 - يتيح VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT |
vk_strings | طباعة بعض معلومات Vulkan/GPU الأساسية. |
vk_mem | طباعة VERTEX/index/onform/triangle مروحة العازلة وذاكرة واصف تعيين إحصائيات الاستخدام. |
vk_device | حدد فهرس جهاز Vulkan المفضل على الأنظمة ذات وحدات معالجة الرسومات المتعددة:-1 - تفضل أولا arcerte_gpu (افتراضي)0..n - استخدام الجهاز #N (يتم إرجاع قائمة الأجهزة الكاملة بواسطة أمر vk_strings ) |
vk_msaa | تبديل MSAA (Multisampling):0 - OFF (افتراضي)1 - MSAAX22 - MSAAX43 - MSAAX84 - MSAAX16 |
vk_sampleshading | تبديل التظليل عينة (supersampling) ل MSAA. (افتراضي: 0 ) |
vk_mode | وضع Vulkan Video Mode (افتراضي: 11 ). يستخدم تعيين هذا إلى -1 دقة شاشة مخصصة محددة بواسطة r_customwidth (افتراضي: 1024 ) و r_customheight (افتراضي: 768 ) متغيرات وحدة التحكم. |
vk_flashblend | تبديل مزج الأضواء على البيئة. (افتراضي: 0 ) |
vk_polyblend | مزيج التأثيرات ملء الشاشة: الدم ، powerups وما إلى ذلك (الافتراضي: 1 ) |
vk_skymip | تبديل استخدام معلومات 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 | عرض Lightmaps. (افتراضي: 0 ) |
vk_aniso | تبديل التصفية متباين الخواص. (افتراضي: 1 ) |
vk_vsync | تبديل المزامنة الرأسية. (افتراضي: 0 ) |
vk_postprocess | تبديل ألوان إضافية/تصحيح جاما. (افتراضي: 1 ) |
vk_underwater | تبديل رؤية اللاعب تشوه عندما يكون تحت الماء. (افتراضي: 1 ) |
vk_restart | إعادة إنشاء نظام فرعي فولكان بأكمله. |
vk_mip_nearfilter | استخدم تصفية الجوار القريب لـ MIPMaps. (افتراضي: 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 بسبب وجود خطأ محتمل في برنامج التشغيل المعدني مما تسبب في حدوث طريق مسدود أثناء تجميع التظليل