ترقية حزمة تطوير البرامج (SDK) لإدخالات Java وKotlin إلى الإصدار 1.1

يشرح هذا الدليل كيفية ترقية لعبتك من الإصدار التجريبي 1.0.0. إدخال SDK لـ Java وKotlin إلى الإصدار التجريبي 1.1.0. يمكنك الاطّلاع على دليل ترقية Unity من أجل Unity تعليمات محددة.

ملاحظات الإصدار

يتيح برنامج "ألعاب Google Play على الكمبيوتر" إعادة تخصيص عناصر التحكّم في لوحة المفاتيح على روابط المفاتيح التي توفرها لعبتك باستخدام حزمة تطوير البرامج (SDK) للإدخال.

يمكن للمستخدمين الوصول إلى هذه الميزة من خلال فتح العناصر التي تظهر على سطح الفيديو واختيار عناصر التحكّم ثم النقر على الإجراء الذي يريدون إعادة تخصيصه

يربط برنامج "ألعاب Google Play على الكمبيوتر" كل إدخالات تمت إعادة ضبطها للمستخدم على الإعدادات التلقائية في لعبتك. إدخال. بهذه الطريقة، ليس من الضروري أن تكون لعبتك على دراية بعملية إعادة تخصيص اللاعبين. في حال حذف تحتاج إلى معرفة المدخلات الجديدة لإجراء داخل اللعبة، مثل عرض عناصر تحكم لوحة المفاتيح في لعبتك، يمكنك اختياريًا تسجيل معاودة الاتصال بشكل أفضل لإعادة تخصيص الأحداث.

يخزِّن برنامج "ألعاب Google Play على الكمبيوتر" عناصر التحكّم التي تمت إعادة تخصيصها لكل مستخدم على الجهاز ليتمكّن من ثابتة عبر جلسات الألعاب. بما أن هذا يتم تخزينه محليًا، فلا التي تؤثر في تجربة الأجهزة الجوّالة ويتم حذفها عند إلغاء تثبيت تطبيق "ألعاب Google Play على الكمبيوتر". لا يتم الاحتفاظ بإعدادات عنصر التحكم عبر العديد أجهزة الكمبيوتر الشخصي.

لا تحتاج إلى ترقية "حزمة تطوير البرامج (SDK) للإدخال" لتفعيل إعادة تخصيص المفاتيح في لعبتك، ولكن يمكن إيقاف إعادة التخصيص للعبتك إذا تم رصد إعدادات غير متوافقة.

إذا أردت التحكّم في تجربة إعادة تخصيص الإدخالات، أو إذا كانت عملية إعادة تخصيص تم إيقاف الميزة في لعبتك، يُرجى اتّباع الخطوات التالية لحلّها:

  • الترقية إلى حزمة تطوير البرامج (SDK) 1.1.0-beta للإدخال
  • احرص على تحديث أي ربط مفاتيح لتجنب عمليات الضبط غير المتوافقة.
  • يجب تحديث InputMap لكي تكون ميزة إعادة التخصيص مفعَّلة.

إذا كنت تريد إيقاف ميزة إعادة تخصيص لعبتك مع الاستمرار يعرض نسخة للقراءة فقط من روابط المفاتيح، اتبع الخطوات التالية:

  • الترقية إلى حزمة تطوير البرامج (SDK) 1.1.0-beta للإدخال
  • يُرجى تعديل InputMap لضبط ميزة إعادة التخصيص على غير مفعَّلة.

يمكنك ترقية الإصدار من "حزمة تطوير البرامج (SDK) للإدخال" إلى 1.1.0-beta لتنفيذ الاستفادة من ميزات إعادة الخرائط المتقدّمة في برنامج "ألعاب Google Play على الكمبيوتر" من خلال يمكنك إضافة InputContexts لتحديد عناصر التحكّم في مشاهد مختلفة من لعبتك. عمليات الاستدعاء للاستماع إلى إعادة تخصيص الأحداث، وتحديد مجموعة من المفاتيح المحجوزة التي لا يمكن للمستخدم إعادة تخصيص ميزة إعادة التخصيص أو إيقافها لكل InputAction InputGroup أو InputMap.

يُرجى مراعاة الاستثناءات التالية عند الترقية إلى إصدار حزمة تطوير البرامج (SDK) الجديد:

الإعدادات غير المتوافقة

سيتم إيقاف إعادة تخصيص الإدخالات في حال عدم استيفاء الشروط التالية:

  • InputAction الذي يستخدم مفاتيح متعددة يجب أن يتكون من مفتاح التعديل وغير المعدّل. على سبيل المثال، يكون Shift + A صالحًا ولكن A + B وCtrl + Alt وShift + A + Tab غير مسموح بها.

  • لا يمكن أن يتشارك كائنان أو أكثر من InputAction أو InputGroup نفس العنصر. بمعرّف فريد.

ترقية

الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال 1.1.0 متوافق مع الأنظمة القديمة مع حزمة تطوير البرامج (SDK) للإدخال. 1.0.0 تجريبي. الألعاب التي تستخدم عمليات تنفيذ سابقة لحزمة تطوير البرامج (SDK) للإدخال لا تزال تدعم إعادة التخصيص الأساسية، ما لم تستخدم الإعدادات غير المتوافقة. إذا كانت لعبتك تستخدم أقدم من SDK للإدخال، فكّر في قراءة دليل الترقية من الإصدار 0.0.4 إلى الإصدار 1.0.0 التجريبي.

تؤدي الترقية إلى الإصدار 1.1.0 إلى تفعيل ميزات جديدة تشمل:

تبعية الترقية

إذا كنت تستخدم Gradle لاستيراد حزمة تطوير البرامج (SDK) للإدخال، يُرجى الترقية إلى أحدث إصدار:

// build.gradle
dependencies {
   ...
   implementation 'com.google.android.libraries.play.games:inputmapping:1.1.0-beta'
   ...
}

تحديد الحقول الثابتة

بالنسبة إلى الإصدار 1.1.0-beta، من الممارسات الجيدة تحديد InputAction، الكائنات InputGroup وInputContext وInputMap كحقول ثابتة في InputMappingProvider نظرًا لأنه يمكن الوصول إلى هذه الحقول من أجزاء أخرى لتطبيقك:

Kotlin

class InputSDKProvider : InputMappingProvider {
    override fun onProvideInputMap(): InputMap { return gameInputMap }

    companion object {
        const val INPUTMAP_VERSION = "1.0.0"

        private val moveUpInputAction = InputAction.create(...)
        private val movementInputGroup = InputGroup.create(...)
        val menuContext = InputContext.create(...)
        val gameInputMap = InputMap.create(...)
    }
}

Java

public class MyInputMappingProvider implements InputMappingProvider {
    private static final String INPUTMAP_VERSION = "1.0.0";

    private static final InputAction moveUpInputAction =
        InputAction.create(...);
    private static final InputGroup movementInputGroup = InputGroup.create(...);
    public static final InputContext menuContext = InputContext.create(...);
    public static final InputMap gameInputMap = InputMap.create(...);

    @Override
    public InputMap onProvideInputMap() {
        return gameInputMap;
    }
}

تحديث إجراءات الإدخال

أسلوب InputAction.create() لإدخال SDK 1.0.0-beta هو نهائيًا. أصبح لـ InputAction الآن معرّف إصدار ويمكن وضع علامة عليه باعتباره قابل للإعادة أم لا. تم تحديد InputAction باستخدام حزمة تطوير البرامج (SDK) للإدخال. طريقة create() في 1.0.0-beta قابلة لإعادة الضبط تلقائيًا وتفتقر إلى إنشاء النُسخ المعلومات:

EnterAction في الإصدار 1.0.0-beta من حزمة تطوير البرامج (SDK) للإدخال

Kotlin

val jumpInputAction = InputAction.create(
    "Jump",
    InputEventIds.JUMP.id,
    InputControls.create(
        listOf(KeyEvent.KEYCODE_SPACE),
        emptyList()
    )
)

Java

InputAction moveUpInputAction = InputAction.create(
    "Move Up",
    InputEventIds.MOVE_UP.ordinal(),
    InputControls.create(
        Collections.singletonList(KeyEvent.KEYCODE_W),
        Collections.emptyList()
    )
);

EnterAction في الإصدار 1.1.0-beta من حزمة SDK للإدخال

Kotlin

companion object {
  private val moveUpInputAction = InputAction.create(
    "Move Up",
    InputActionsIds.DRIVE.ordinal.toLong(),
    InputControls.create(listOf(KeyEvent.KEYCODE_W), emptyList()),
    InputEnums.REMAP_OPTION_ENABLED) // This action is remappable
}

Java

private static final InputAction moveUpInputAction = InputAction.create(
    "Move Up",
    InputEventIds.MOVE_UP.ordinal(),
    InputControls.create(
            Collections.singletonList(KeyEvent.KEYCODE_W),
            Collections.emptyList()),
    InputEnums.REMAP_OPTION_ENABLED // this action is remappable
);

إدخال Action في الإصدار 1.1.0-beta للإدخال (مع سلسلة الإصدار)

Kotlin

private val enterMenuInputAction = InputAction.create(
    "Enter menu",
    InputControls.create(listOf(KeyEvent.KEYCODE_ENTER), emptyList()),
    InputIdentifier.create(
    INPUTMAP_VERSION, InputActionsIds.ENTER_MENU.ordinal.toLong()),
    InputEnums.REMAP_OPTION_ENABLED
)

Java

private static final InputAction moveUpInputAction = InputAction.create(
    "Move Up",
    InputControls.create(
            Collections.singletonList(KeyEvent.KEYCODE_W),
            Collections.emptyList()),
    InputIdentifier.create(
            INPUTMAP_VERSION,
            InputEventIds.MOVE_UP.ordinal()),
    InputEnums.REMAP_OPTION_ENABLED // this action is remappable
);

لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع

تحديث enterGroups

في SDK للإدخال 1.1.0-beta، تحتاج إلى تحديد كل منها بشكل فريد InputGroup ينتمي كل InputAction إلى InputGroup -- وهي مجموعة من الإجراءات ذات الصلة. يساعد هذا الإجراء في تحسين إمكانية التنقّل في عناصر التحكّم وقابلية اكتشافها. أثناء اللعب. وبالطريقة نفسها التي يجب أن يكون لدى InputAction معرّف فريد من بين جميع الإجراءات في InputContext واحد، يجب أن يتضمّن InputGroup معرّف فريد على مستوى المجموعات الحالية.

في ما يتعلّق بالأمثلة الواردة في هذا القسم، تتضمّن اللعبة كائنَين "InputContext" تمثل القائمة الرئيسية وأسلوب اللعب. يتم تتبع الأرقام التعريفية المناسبة لكل منها InputGroup في هذه السياقات باستخدام التعداد التالي:

Kotlin

enum class InputGroupsIds {
    // Main menu scene
    BASIC_NAVIGATION, // WASD, Enter, Backspace
    MENU_ACTIONS, // C: chat, Space: quick game, S: store
    // Gameplay scene
    BASIC_MOVEMENT, // WASD, space: jump, Shift: run
    MOUSE_ACTIONS, // Left click: shoot, Right click: aim
    EMOJIS, // Emojis with keys 1,2,3,4 and 5
    GAME_ACTIONS, // M: map, P: pause, R: reload
}

Java

public enum InputGroupsIds {
    // Main menu scene
    BASIC_NAVIGATION, // WASD, Enter, Backspace
    MENU_ACTIONS, // C: chat, Space: quick game, S: store
    // Gameplay scene
    BASIC_MOVEMENT, // WASD, space: jump, Shift: run
    MOUSE_ACTIONS, // Left click: shoot, Right click: aim
    EMOJIS, // Emojis with keys 1,2,3,4 and 5
    GAME_ACTIONS, // M: map, P: pause, R: reload
}

مثل InputAction، أسلوب InputGroup.create() الخاص بحزمة تطوير البرامج (SDK) للإدخال تم إيقاف 1.0.0-beta نهائيًا. يجب تحديث "InputGroup" في لعبتك. بمعرّف الإصدار والقيمة المنطقية التي تشير إلى ما إذا كان InputAction الكائنات في مجموعاتك قابلة لإعادة الربط. المجموعات التي تم إنشاؤها باستخدام أسلوب الإدخال SDK 1.0.0-beta create() المتوقّفة قابلة لإعادة الربط، ويكون لها رقم التعريف 0. ورقم تعريف الإصدار هو سلسلة فارغة (""):

EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال

Kotlin

val movementInputGroup = InputGroup.create(
    "Basic Movement",
    listOf(
        moveUpInputAction,
        moveLeftInputAction,
        moveDownInputAction,
        moveRightInputAction,
        jumpInputAction,
        runInputAction)
)

Java

InputGroup movementInputGroup = InputGroup.create(
    "Basic movement",
    Arrays.asList(
        moveUpInputAction,
        moveLeftInputAction,
        moveDownInputAction,
        moveRightInputAction,
        jumpInputAction,
        runInputAction
    )
);

EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال 1.1.0

Kotlin

companion object {
    private val movementInputGroup = InputGroup.create(
        "Basic movement",
        listOf(
            moveUpInputAction,
            moveLeftInputAction,
            moveDownInputAction,
            moveRightInputAction,
            jumpInputAction,
            runInputAction),
        InputGroupsIds.BASIC_MOVEMENT.ordinal.toLong(),
        // All the actions in this groups can't be remapped
        InputEnums.REMAP_OPTION_DISABLED
    )
}

Java

private static final InputGroup movementInputGroup = InputGroup.create(
    "Basic movement",
    Arrays.asList(
            moveUpInputAction,
            moveLeftInputAction,
            moveDownInputAction,
            moveRightInputAction,
            jumpInputAction,
            runInputAction
    ),
    InputGroupsIds.BASIC_MOVEMENT.ordinal(),
    // All the actions in this groups can't be remapped
    InputEnums.REMAP_OPTION_DISABLED
);

الإدخالGroup في الإصدار 1.1.0-beta من حزمة تطوير البرامج (SDK) للإدخال (مع سلسلة الإصدار)

Kotlin

companion object {
    private val movementInputGroup  = InputGroup.create(
        "Basic movement",
        listOf(
            moveUpInputAction,
            moveLeftInputAction,
            moveDownInputAction,
            moveRightInputAction,
            jumpInputAction,
            runInputAction),
        InputIdentifier.create(
            INPUTMAP_VERSION, InputGroupsIds.BASIC_MOVEMENT.ordinal.toLong()),
        // All the actions in this groups can't be remapped
        InputEnums.REMAP_OPTION_DISABLED
    )
}

Java

private static final InputGroup movementInputGroup = InputGroup.create(
    "Basic movement",
    Arrays.asList(
            moveUpInputAction,
            moveLeftInputAction,
            moveDownInputAction,
            moveRightInputAction,
            jumpInputAction,
            runInputAction
    ),
    InputIdentifier.create(
            INPUTMAP_VERSION,
            InputGroupsIds.BASIC_MOVEMENT.ordinal()),
    // All the actions in this groups can't be remapped
    InputEnums.REMAP_OPTION_DISABLED
);

لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع

تحديث خريطة الإدخال

طريقة InputMap.create() لإدخال حزمة تطوير البرامج (SDK) 1.0.0-beta هي نهائيًا. يجب تعديل InputMap لتحديد معرّف الإصدار. يمكنك إيقاف هذا الإعداد. تمامًا من ميزة إعادة التخصيص أو تعيين قائمة بالمفاتيح المحجوزة اللعبة التي لا تريد أن يتم استخدامها لإعادة تخصيصها من قِبل المستخدم. كل InputMap باستخدام أسلوب create() للإدخال SDK للإدخال 1.0.0-beta قابل لإعادة الضبط تلقائيًا، ويتم تحديده بالمعرّف 0، ولا يحتوي على المفاتيح المحجوزة.

خريطة الإدخال في الإصدار 1.0.0 من حزمة تطوير البرامج (SDK) للإدخال

Kotlin

val gameInputMap = InputMap.create(
    listOf(movementInputGroup, mouseMovementInputGroup),
    MouseSettings.create(true, false)
)

Java

InputMap gameInputMap = InputMap.create(
    Arrays.asList(movementInputGroup, mouseMovementInputGroup),
    MouseSettings.create(true, false)
);

خريطة الإدخال في الإصدار 1.1.0 من حزمة تطوير البرامج (SDK) للإدخال

Kotlin

companion object {

  const val INPUTMAP_VERSION = "1.0.0"
  const val INPUT_MAP_ID = 0

  val gameInputMap = InputMap.create(
    listOf(movementInputGroup, mouseMovementInputGroup),
    MouseSettings.create(true, false),
    InputIdentifier.create(INPUTMAP_VERSION, INPUT_MAP_ID.toLong()),
    InputEnums.REMAP_OPTION_ENABLED,
    // Use ESCAPE as reserved key
    listof(InputControls.create(listOf(KeyEvent.KEYCODE_ESCAPE), emptyList()))
  )
}

Java


public static final String INPUT_MAP_VERSION = "1.0.0-beta";
public static final long INPUT_MAP_ID = 0;

public static final InputMap gameInputMap = InputMap.create(
        Arrays.asList(movementInputGroup, mouseMovementInputGroup),
        MouseSettings.create(true, false),
        InputIdentifier.create(INPUTMAP_VERSION, INPUT_MAP_ID),
        InputEnums.REMAP_OPTION_ENABLED,
        // Use ESC key as reserved key
        Arrays.asList(
                InputControls.create(
                        Collections.singletonList(KeyEvent.KEYCODE_ESCAPE),
                        Collections.emptyList()
                )
        )
);

الخطوات التالية

مواصلة الترقية إلى الإصدار 1.1.0 - بحلول تخصيص عناصر تحكّم مختلفة لمشاهد مختلفة استخدام InputContexts أو تحديث واجهة المستخدم للعبتك من خلال تلقّي إشعارات بشأن إعادة تخصيص الأحداث باستخدام InputRemappingListeners

عند تحديث عمليات ربط المفاتيح، يمكنك إلقاء نظرة على أفضل الممارسات لتصميم روابط المفاتيح وفكِّر في القيود القيود المفروضة على ميزة إعادة التخصيص