Unity इंजन के लिए Vkक्वालिटी प्लगिन, लॉन्च के समय से जुड़े सुझाव देता है आपके गेम के लिए खास तौर पर आपके गेम के लिए इस्तेमाल किया जा सकता है. डिवाइस.
Vkक्वालिटी, Unity के मुकाबले ज़्यादा पाबंदी वाले डिवाइसों पर Vulkan का सुझाव देती है इंजन की डिफ़ॉल्ट अनुमति वाली सूची. Vkक्वालिटी का इस्तेमाल करके साथ ही, Vulkan का इस्तेमाल नए ग्राफ़िक वाले नए डिवाइसों तक ही किया जा सकता है ड्राइवर समस्याओं की वजह से आपके गेम में ड्राइवर की समस्याएं कम हो सकती हैं. सिर्फ़ Vkक्वालिटी क्वालिटी के लिए सुझाव देता है, न कि गारंटी देता है, क्योंकि अब भी सुझाए गए डिवाइसों पर ड्राइवर से जुड़ी समस्याएं हो सकती हैं. Vkक्वालिटी, पसंद के मुताबिक सूचियों का इस्तेमाल करती है, जिससे आपको अपने लिए डिवाइस के सुझाव जोड़ने या हटाने की सुविधा मिलती है गेम.
अपने Unity इंजन गेम में Vulkan को चालू करें
Vkक्वालिटी के लिए आपके गेम में OpenGL ES और Vulkan रेंडरर, दोनों होने चाहिए Unity प्रोजेक्ट की सेटिंग में चालू किया गया है. अपने-आप सेट होने की सुविधा का इस्तेमाल करके रेंडरर चालू करें Graphics API विकल्प का इस्तेमाल करने या ग्राफ़िक एपीआई को मैन्युअल तरीके से सेट करने.
Unity इंजन के लिए Vkक्वालिटी प्लगिन पाएं
GitHub से Vkक्वालिटी प्लगिन डाउनलोड करें. यह प्लगिन है Unity 2021 और इसके बाद के वर्शन के साथ काम करता है. चालू करने के लिए, Unity 2021 एलटीएस या इसके बाद के वर्शन का इस्तेमाल करें Android पर Vulkan. प्लग इन पैकेज में एक बेसिक सैंपल प्रोजेक्ट शामिल होता है, जो स्टार्टअप पर ग्राफ़िक्स API सेट करने के लिए प्लगिन और फिर सेट की गई स्ट्रिंग को डिवाइस का ऐक्टिव ग्राफ़िक्स एपीआई.
Vkक्वालिटी Vulkan के सुझावों की सूची मैनेज करना
Vkक्वालिटी में, सुझाए गए उन डिवाइसों की सूची शामिल होती है जिन पर यह सुविधा काम करती है. इसके लिए करने के बारे में जानकारी देखने के लिए, किसी कस्टम सुझाव का उपयोग करें सुझावों की सूची सेक्शन में देखें.
सुझाव सूची में तीन कैटगरी होती हैं:
- Vulkan डिवाइस के लिए अनुमति वाली सूची
- जीपीयू से जुड़े सुझाव की अनुमति वाली सूची
- जीपीयू से जुड़े सुझाव की अस्वीकार करने की सूची
डिवाइस को अनुमति वाली सूची से मिलान करें
Vkक्वालिटी पहले यह जांच करती है कि चालू डिवाइस, डिवाइस को अनुमति देने वाले डिवाइस में शामिल है या नहीं
सूची में शामिल हैं और क्या वह Android का कम से कम वर्शन और Vulkan ड्राइवर चला रहा है
वर्शन का इस्तेमाल करें. अगर ये शर्तें पूरी होती हैं,
Vkक्वालिटी, Vulkan का सुझाव देती है कि
RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH
ईनम मान.
अगर डिवाइस अनुमति वाली सूची में है, लेकिन उस पर Android वर्शन या ड्राइवर का इस्तेमाल किया जा रहा है
वर्शन, जो अनुमति वाली सूची में, Vkक्वालिटी के लिए तय किए गए कम से कम लेवल से कम है
RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER
को लौटाकर OpenGL ES का सुझाव देता है.
जीपीयू के सुझाव का मिलान
अगर डिवाइस को अनुमति वाली सूची में किसी डिवाइस से मिलता-जुलता कोई डिवाइस नहीं मिलता है, तो Vkक्वालिटी
जीपीयू से जुड़े सुझाव के लिए, जीपीयू मॉडल और ड्राइवर वर्शन को अनुमति दें और अनुमति न दें
सूचियां. अगर जीपीयू मॉडल और ड्राइवर का वर्शन, जीपीयू में दी गई एंट्री से मेल खाता है
सुझाव की अनुमति वाली सूची देखें. Vkक्वालिटी, Vulkan को
RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH
ईनम कॉन्सटेंट.
अगर जीपीयू का मॉडल और ड्राइवर का वर्शन, जीपीयू में दी गई एंट्री से मेल खाता है
सुझाव की अस्वीकार करने की सूची, Vkक्वालिटी, नियम के तौर पर OpenGL ES का सुझाव देती है
RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH
.
बिना मिलते-जुलते वीडियो के सुझाव
अगर कोई मिलान नहीं मिलता है, तो Vkक्वालिटी, Vulkan का सुझाव देती है, अगर Android एपीआई लेवल
मौजूदा डिवाइस,
सुझाव सूची. सुझाव की डिफ़ॉल्ट सूची में, भविष्य के लिए एपीआई लेवल
36. इसका मतलब है कि एपीआई लेवल 36 या उसके बाद के लेवल वाले ऐसे डिवाइस जो ऐप्लिकेशन से मेल नहीं खाते हैं, Vk Quality
RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID
enum स्थिरांक देता है.
अगर डिवाइस को अनुमति वाली सूची या जीपीयू से जुड़े सुझाव की सूचियों से मिलता-जुलता कोई विकल्प नहीं मिलता है,
और डिवाइस का एपीआई लेवल, Future API लेवल, Vk Quality से कम है
RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH
को लौटाकर OpenGL ES का सुझाव देता है.
अपने प्रोजेक्ट में Vkक्वालिटी की संग्रह वाली फ़ाइल जोड़ें
Vkक्वालिटी प्लगिन वह VkQuality-1.x.x.aar
फ़ाइल है जो
डाउनलोड किए गए पैकेज संग्रह की Assets/Android/Plugins
डायरेक्ट्री. असल
.aar फ़ाइल का वर्शन नंबर, पैकेज के वर्शन नंबर से मेल खाता है
संग्रह का नाम. प्लग इन इंस्टॉल करने के लिए, नीचे दिया गया तरीका अपनाएं:
- .aar फ़ाइल को अपनी
Assets/Android/Plugins
डायरेक्ट्री में कॉपी करें प्रोजेक्ट. (ज़रूरीAndroid
औरPlugins
सबडायरेक्ट्री बनाएं, अगर वे मौजूद नहीं है.)
![ज़रूरी प्रोजेक्ट डायरेक्ट्री में Vkक्वालिटी .aar फ़ाइल.](https://developer.android.google.cn/static/images/games/engines/unity/unity-vkquality-unityassets.png?authuser=9&hl=hi)
- Unity प्रोजेक्ट की हैरारकी में
VkQuality-1.x.x
प्लगिन फ़ाइल चुनें ताकि इंस्पेक्टर पैनल में इसकी इंपोर्ट सेटिंग दिखें. पक्का करें कि Android प्लैटफ़ॉर्म की जांच की गई है.
![दूसरी इमेज. Vk Quality प्लगिन प्लैटफ़ॉर्म की इंपोर्ट सेटिंग.](https://developer.android.google.cn/static/images/games/engines/unity/unity-vkquality-unityplugin.png?authuser=9&hl=hi)
Vkक्वालिटी को कॉल करने के लिए, पसंद के मुताबिक गतिविधि का इस्तेमाल करें
सामान्य Unity इंजन के प्लगिन के उलट, Vkक्वालिटी को Unity इंजन शुरू करने से पहले, ग्राफ़िक एपीआई का सुझाव. इसके बाद, आपको Unity प्लेयर कमांड-लाइन आर्ग्युमेंट सुविधा का इस्तेमाल करके ग्राफ़िक्स एपीआई, Vkक्वालिटी के सुझाव के आधार पर बनाया जाता है. Android पर, पास हो रहा है कमांड लाइन आर्ग्युमेंट के तौर पर, UnityPlayerActivity में पसंद के मुताबिक ऐक्टिविटी होती है.
अगर आपके गेम में पहले से ही किसी कस्टम गतिविधि का इस्तेमाल किया जा रहा है, तो किसी कस्टम गतिविधि को मौजूदा कस्टम गतिविधि सेक्शन में सेव करें. अपने गेम के लिए, अपने Unity प्रोजेक्ट में कस्टम गतिविधि जोड़ें लेख पढ़ें. इसके बाद, नीचे दिया गया तरीका अपनाएं.
अपने Unity इंजन प्रोजेक्ट में, पसंद के मुताबिक कोई गतिविधि जोड़ें
प्लग-इन में, Vkक्वालिटी का इस्तेमाल करने वाली कस्टम गतिविधि का एक उदाहरण दिया गया है
Assets/Plugins/Android/VkQualityTestActivity.java
में पैकेज का पता चला.
फ़ाइल को अपनी पसंद के मुताबिक बनाने और अपने गेम में इस्तेमाल करने के लिए, यह तरीका अपनाएं:
VkQualityTestActivity.java
फ़ाइल को अपनेAssets/Plugins/Android
डायरेक्ट्री.- इसका नाम अपने गेम के हिसाब से रखें (उदाहरण के लिए,
MyGameActivity.java
). - फ़ाइल को टेक्स्ट एडिटर में खोलें.
- क्लास का नाम
VkQualityTestActivity
से बदलकर वह नाम डालें जो आपने दिया है फ़ाइल (उदाहरण के लिए,MyGameActivity.java
). - पैकेज का नाम
com.google.android.games.VkQualityTest
से बदलकर यह करें आपकी Unity प्रोजेक्ट की सेटिंग में मौजूद पैकेज का नाम फ़ील्ड की वैल्यू से मैच करें अन्य सेटिंग में जाकर, प्लेयर कैटगरी (उदाहरण के लिए,com.mycompany.mygame
). - फ़ाइल सेव करें और बंद करें.
एक ऐसी कस्टम मेनिफ़ेस्ट फ़ाइल जोड़ें जो आपकी कस्टम गतिविधि का रेफ़रंस देती हो और Unity को बताएं नीचे दी गई चीज़ें करने के लिए:
Assets/Plugins/Android
सेAndroidManifest.xml
फ़ाइल कॉपी करें आपके प्रोजेक्ट केAsset/Plugins/Android
में प्लगिन पैकेज की डायरेक्ट्री डायरेक्ट्री.- फ़ाइल को टेक्स्ट एडिटर में खोलें.
activity android:name
सेटिंग की वैल्यू बदलेंcom.google.android.games.VkQualityTest.VkQualityTestActivity
से पिछले चरणों में इस्तेमाल किए गए पैकेज और गतिविधि के नाम (उदाहरण के लिए,com.mycompany.mygame.MyGameActivity
).- फ़ाइल सेव करें और बंद करें.
- Unity सेटिंग विंडो खोलें और Player की सेटिंग चुनें. बड़ा करें पब्लिश करने की सेटिंग सेक्शन में जाएं और कस्टम मुख्य मेनिफ़ेस्ट देखें चेकबॉक्स.
![तीसरी इमेज: Unity प्लेयर की सेटिंग में, कस्टम मुख्य मेनिफ़ेस्ट का विकल्प.](https://developer.android.google.cn/static/images/games/engines/unity/unity-vkquality-unitymanifest.png?authuser=9&hl=hi)
आपका प्रोजेक्ट अब उस कस्टम गतिविधि का इस्तेमाल करने के लिए सेट अप हो गया है जो Vkक्वालिटी को इस नंबर पर कॉल करती है शुरू करता है और Vkक्वालिटी के सुझाव के आधार पर Vulkan या OpenGL ES को चुनता है.
पसंद के मुताबिक बनाई गई मौजूदा गतिविधि में Vkक्वालिटी जोड़ना
अगर आपके गेम में पहले से ही कोई ऐसी कस्टम गतिविधि मौजूद है जो डिफ़ॉल्ट सेटिंग को बदल रही है
UnityPlayerActivity
, Vkक्वालिटी के सुझावों को इंटिग्रेट करने के लिए,
यह कोड डालें:
सबसे पहले, सबसे ऊपर दिए गए इंपोर्ट की सूची में Vkक्वालिटी के इंपोर्ट स्टेटमेंट को जोड़ें. कस्टम गतिविधि फ़ाइल:
Kotlin
import com.google.android.games.vkquality.VKQuality;
Java
import com.google.android.games.vkquality.VKQuality;
इसके बाद, अपने Activity
क्लास के मुख्य भाग में,
ग्राफ़िक्स API विकल्प:
Kotlin
companion object { private const val OVERRIDE_NONE = 0 private const val OVERRIDE_GLES = 1 private const val OVERRIDE_VULKAN = 2
Java
private static final int OVERRIDE_NONE = 0; private static final int OVERRIDE_GLES = 1; private static final int OVERRIDE_VULKAN = 2;
एपीआई चुनने के विकल्प को ट्रैक करने के लिए, वैरिएबल बनाएं:
Kotlin
private var apiOverride = OVERRIDE_NONE
Java
private int apiOverride = OVERRIDE_NONE;
अपनी Activity
क्लास में यह फ़ंक्शन जोड़ें:
Kotlin
private fun CheckVkQuality() { val vkQuality = VKQuality(this) val startResult = vkQuality.StartVkQuality("") if (startResult == VKQuality.INIT_SUCCESS) { // In the current release, we can assume GetVkQuality is // ready as soon as StartVkQuality has returned success. val getResult = vkQuality.GetVkQuality() LogVkQualityResult(getResult) apiOverride = when (getResult) { VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH, VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH, VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID -> OVERRIDE_VULKAN VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE, VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER, VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH, VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH -> OVERRIDE_GLES else -> OVERRIDE_GLES } vkQuality.StopVkQuality() } else { Log.e("VKQUALITY", "VkQuality start failed with result: $startResult") } }
Java
private void CheckVkQuality() { VKQuality vkQuality = new VKQuality(this); // An empty string specifies use of the default // built-in device list file. int startResult = vkQuality.StartVkQuality(""); if (startResult == VKQuality.INIT_SUCCESS) { // In the current release, we can assume GetVkQuality is // ready as soon as StartVkQuality has returned success. int getResult = vkQuality.GetVkQuality(); switch (getResult) { case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH: case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH: case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID: apiOverride = OVERRIDE_VULKAN; break; case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE: case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER: case VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH: case VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH: default: apiOverride = OVERRIDE_GLES; break; } vkQuality.StopVkQuality(); } else { Log.e("VKQUALITY", "VkQuality start failed with result: " + startResult); } }
onCreate()
ओवरराइड के ऊपर से CheckVkQuality
फ़ंक्शन को कॉल करें
बुनियादी क्लास इंप्लीमेंटेशन को कॉल करने से पहले फ़ंक्शन:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { CheckVkQuality() super.onCreate(savedInstanceState) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { CheckVkQuality(); super.onCreate(savedInstanceState); }
आखिर में, updateUnityCommandLineArguments()
फ़ंक्शन में बदलाव जोड़ें
जो apiOverride
की वैल्यू का इस्तेमाल
यूनिटी इंजन यह बताता है कि किस ग्राफ़िक्स एपीआई का इस्तेमाल करना है:
Kotlin
override fun updateUnityCommandLineArguments(cmdLine: String): String { if (apiOverride == OVERRIDE_VULKAN) { Log.i("VKQUALITY", "Passing -force-vulkan") return appendCommandLineArgument(cmdLine, "-force-vulkan") } else if (apiOverride == OVERRIDE_GLES) { Log.i("VKQUALITY", "Passing -force-gles") return appendCommandLineArgument(cmdLine, "-force-gles") } Log.i("VKQUALITY", "No override passed") // let Unity pick the Graphics API based on PlayerSettings return cmdLine } private fun appendCommandLineArgument(cmdLine: String, arg: String?): String { return if (arg == null || arg.isEmpty()) cmdLine else if (cmdLine == null || cmdLine.isEmpty()) arg else "$cmdLine $arg" }
Java
@Override protected String updateUnityCommandLineArguments(String cmdLine) { if (apiOverride == OVERRIDE_VULKAN) { Log.i("VKQUALITY", "Passing -force-vulkan"); return appendCommandLineArgument(cmdLine, "-force-vulkan"); } else if (apiOverride == OVERRIDE_GLES) { Log.i("VKQUALITY", "Passing -force-gles"); return appendCommandLineArgument(cmdLine, "-force-gles"); } Log.i("VKQUALITY", "No override passed"); // let Unity pick the Graphics API based on PlayerSettings return cmdLine; } private String appendCommandLineArgument(String cmdLine, String arg) { if (arg == null || arg.isEmpty()) return cmdLine; else if (cmdLine == null || cmdLine.isEmpty()) return arg; else return cmdLine + " " + arg; }
आपकी पसंद के मुताबिक बनाई गई गतिविधि, अब Vkक्वालिटी को स्टार्टअप पर कॉल करती है और Vulkan या OpenGL को चुनती है Vkक्वालिटी के सुझाव के मुताबिक ES.
पसंद के मुताबिक सुझाव की सूची का इस्तेमाल करना
फ़ाइल का नाम पास करके, कस्टम सुझाव की सूची वाली फ़ाइल तय करें
इसमें खाली स्ट्रिंग पास करने के बजाय, StartVkQuality()
में सूची शामिल है:
Kotlin
val startResult = vkQuality.StartVkQuality("CUSTOM_FILE_NAME.vkq")
Java
int startResult = vkQuality.StartVkQuality("CUSTOM_FILE_NAME.vkq");
Vkक्वालिटी सबसे पहले आपके ऐप्लिकेशन के मोबाइल स्टोरेज में फ़ाइल ढूंढती है
डायरेक्ट्री. अगर फ़ाइल डिवाइस के स्टोरेज में नहीं है, तो Vkक्वालिटी
फ़ाइल होती है. अगर फ़ाइल किसी भी जगह पर मौजूद नहीं है,
Vkक्वालिटी, ERROR_MISSING_DATA_FILE
ईनम की वैल्यू दिखाता है.
पसंद के मुताबिक सुझाव की सूची की फ़ाइल बनाने के लिए, Vkक्वालिटी लिस्ट एडिटर का इस्तेमाल करें टूल मौजूद है, जो GitHub रिपॉज़िटरी में मौजूद है. यह टूल इसके README में मौजूद होता है.