Vkक्वालिटी Unity इंजन प्लगिन

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 फ़ाइल का वर्शन नंबर, पैकेज के वर्शन नंबर से मेल खाता है संग्रह का नाम. प्लग इन इंस्टॉल करने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. .aar फ़ाइल को अपनी Assets/Android/Plugins डायरेक्ट्री में कॉपी करें प्रोजेक्ट. (ज़रूरी Android और Plugins सबडायरेक्ट्री बनाएं, अगर वे मौजूद नहीं है.)
ज़रूरी प्रोजेक्ट डायरेक्ट्री में Vkक्वालिटी .aar फ़ाइल.
पहली इमेज.ज़रूरी प्रोजेक्ट डायरेक्ट्री में Vkक्वालिटी .aar फ़ाइल.
  1. Unity प्रोजेक्ट की हैरारकी में VkQuality-1.x.x प्लगिन फ़ाइल चुनें ताकि इंस्पेक्टर पैनल में इसकी इंपोर्ट सेटिंग दिखें. पक्का करें कि Android प्लैटफ़ॉर्म की जांच की गई है.
दूसरी इमेज. Vk Quality प्लगिन प्लैटफ़ॉर्म की इंपोर्ट सेटिंग.
दूसरी इमेज. Vkक्वालिटी प्लगिन प्लैटफ़ॉर्म की इंपोर्ट सेटिंग.

Vkक्वालिटी को कॉल करने के लिए, पसंद के मुताबिक गतिविधि का इस्तेमाल करें

सामान्य Unity इंजन के प्लगिन के उलट, Vkक्वालिटी को Unity इंजन शुरू करने से पहले, ग्राफ़िक एपीआई का सुझाव. इसके बाद, आपको Unity प्लेयर कमांड-लाइन आर्ग्युमेंट सुविधा का इस्तेमाल करके ग्राफ़िक्स एपीआई, Vkक्वालिटी के सुझाव के आधार पर बनाया जाता है. Android पर, पास हो रहा है कमांड लाइन आर्ग्युमेंट के तौर पर, UnityPlayerActivity में पसंद के मुताबिक ऐक्टिविटी होती है.

अगर आपके गेम में पहले से ही किसी कस्टम गतिविधि का इस्तेमाल किया जा रहा है, तो किसी कस्टम गतिविधि को मौजूदा कस्टम गतिविधि सेक्शन में सेव करें. अपने गेम के लिए, अपने Unity प्रोजेक्ट में कस्टम गतिविधि जोड़ें लेख पढ़ें. इसके बाद, नीचे दिया गया तरीका अपनाएं.

अपने Unity इंजन प्रोजेक्ट में, पसंद के मुताबिक कोई गतिविधि जोड़ें

प्लग-इन में, Vkक्वालिटी का इस्तेमाल करने वाली कस्टम गतिविधि का एक उदाहरण दिया गया है Assets/Plugins/Android/VkQualityTestActivity.java में पैकेज का पता चला. फ़ाइल को अपनी पसंद के मुताबिक बनाने और अपने गेम में इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. VkQualityTestActivity.java फ़ाइल को अपने Assets/Plugins/Android डायरेक्ट्री.
  2. इसका नाम अपने गेम के हिसाब से रखें (उदाहरण के लिए, MyGameActivity.java).
  3. फ़ाइल को टेक्स्ट एडिटर में खोलें.
  4. क्लास का नाम VkQualityTestActivity से बदलकर वह नाम डालें जो आपने दिया है फ़ाइल (उदाहरण के लिए, MyGameActivity.java).
  5. पैकेज का नाम com.google.android.games.VkQualityTest से बदलकर यह करें आपकी Unity प्रोजेक्ट की सेटिंग में मौजूद पैकेज का नाम फ़ील्ड की वैल्यू से मैच करें अन्य सेटिंग में जाकर, प्लेयर कैटगरी (उदाहरण के लिए, com.mycompany.mygame).
  6. फ़ाइल सेव करें और बंद करें.

एक ऐसी कस्टम मेनिफ़ेस्ट फ़ाइल जोड़ें जो आपकी कस्टम गतिविधि का रेफ़रंस देती हो और Unity को बताएं नीचे दी गई चीज़ें करने के लिए:

  1. Assets/Plugins/Android से AndroidManifest.xml फ़ाइल कॉपी करें आपके प्रोजेक्ट के Asset/Plugins/Android में प्लगिन पैकेज की डायरेक्ट्री डायरेक्ट्री.
  2. फ़ाइल को टेक्स्ट एडिटर में खोलें.
  3. activity android:name सेटिंग की वैल्यू बदलें com.google.android.games.VkQualityTest.VkQualityTestActivity से पिछले चरणों में इस्तेमाल किए गए पैकेज और गतिविधि के नाम (उदाहरण के लिए, com.mycompany.mygame.MyGameActivity).
  4. फ़ाइल सेव करें और बंद करें.
  5. Unity सेटिंग विंडो खोलें और Player की सेटिंग चुनें. बड़ा करें पब्लिश करने की सेटिंग सेक्शन में जाएं और कस्टम मुख्य मेनिफ़ेस्ट देखें चेकबॉक्स.
तीसरी इमेज: Unity प्लेयर की सेटिंग में, कस्टम मुख्य मेनिफ़ेस्ट का विकल्प.
तीसरी इमेज. Unity Player की सेटिंग में मौजूद कस्टम मुख्य मेनिफ़ेस्ट का विकल्प.

आपका प्रोजेक्ट अब उस कस्टम गतिविधि का इस्तेमाल करने के लिए सेट अप हो गया है जो 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 में मौजूद होता है.