Java और Kotlin के लिए इनपुट SDK टूल को वर्शन 1.1 पर अपग्रेड करें

इस गाइड में, 1.0.0-बीटा वर्शन वाले गेम को अपग्रेड करने का तरीका बताया गया है Java और Kotlin के लिए इनपुट SDK टूल, 1.1.0-बीटा के लिए. ज़्यादा जानकारी के लिए, Unity के लिए Unity को अपग्रेड करने से जुड़ी गाइड खास निर्देश देखें.

रिलीज़ नोट

Google Play Games on PC के कीबोर्ड कंट्रोल को फिर से मैप किया जा सकता है आपके गेम से मिलने वाली की बाइंडिंग के आधार पर, इनपुट SDK टूल का इस्तेमाल किया जाता है.

उपयोगकर्ता इस सुविधा को ओवरले पर जाकर, कंट्रोल चुनकर, और उस कार्रवाई पर क्लिक करें, जिसे वे रीमैप करना चाहते हैं.

Google Play Games on PC, उपयोगकर्ता के रीमैप किए गए हर इनपुट को आपके गेम के डिफ़ॉल्ट इनपुट के साथ मैप करता है इनपुट. इस तरह आपके गेम को खिलाड़ी के रीमैपिंग के बारे में पता नहीं होना चाहिए. अगर आपने आपको इन-गेम ऐक्शन के लिए नया इनपुट पता होना चाहिए. उदाहरण के लिए, कीबोर्ड कंट्रोल का इस्तेमाल करते हैं, तो वैकल्पिक तौर पर कॉलबैक को रजिस्टर किया जा सकता है: इवेंट को रीमैप करने के लिए सूचना दी गई.

Google Play Games on PC हर उपयोगकर्ता के रीमैप किए गए कंट्रोल को स्थानीय तौर पर सेव करता है, ताकि वे यह प्रोसेस, गेमिंग सेशन के दौरान लगातार बनी रहती है. इसे डिवाइस पर सेव किया जाता है, इसलिए यह नहीं होता ऐप्लिकेशन इस्तेमाल करने के अनुभव पर असर पड़ता है. साथ ही, Google Play Games on PC अनइंस्टॉल करने पर, यह मिट जाता है. कंट्रोल सेटिंग, एक से ज़्यादा ब्राउज़र पर लागू नहीं होती हैं पीसी डिवाइस.

कुंजी को फिर से मैप करने की सुविधा चालू करने के लिए, आपको इनपुट SDK टूल को अपग्रेड करने की ज़रूरत नहीं है आपके गेम के लिए रीमैपिंग बंद हो सकती है, लेकिन काम न करने वाले कॉन्फ़िगरेशन का पता चला है.

अगर आपको इनपुट को रीमैप करने के अनुभव को कंट्रोल करना है या रीमैपिंग आपके गेम के लिए यह सुविधा बंद कर दी गई है. इसे हल करने के लिए यह तरीका अपनाएं:

अगर आपको गेम खेलने के दौरान ही, अपने गेम के लिए रीमैप करने की सुविधा से ऑप्ट-आउट करना है, तो की बाइंडिंग का रीड-ओनली वर्शन दिखा रहे हों, तो यह तरीका अपनाएं:

  • इनपुट SDK टूल 1.1.0-beta में अपग्रेड करें.
  • रीमैप करने की सुविधा को बंद है पर सेट करने के लिए, अपने InputMap को अपडेट करें.

अपने इनपुट SDK टूल के वर्शन को 1.1.0-beta में अपग्रेड किया जा सकता है. Google Play Games on PC में, रीमैप करने की ऐडवांस सुविधाओं का इस्तेमाल करें. अपने गेम के अलग-अलग सीन के लिए कंट्रोल तय करने के लिए, 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-बीटा वर्शन में अपग्रेड करने से नई सुविधाएं चालू हो जाती हैं. जैसे:

अपग्रेड डिपेंडेंसी

अगर इनपुट SDK टूल इंपोर्ट करने के लिए, Gradle का इस्तेमाल किया जा रहा है, तो सबसे नए वर्शन पर अपग्रेड करें:

// 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;
    }
}

अपने Input Actions अपडेट करें

इनपुट SDK टूल 1.0.0-beta का InputAction.create() तरीका यह है बंद कर दिया गया है. InputAction में अब एक वर्शन आइडेंटिफ़ायर मौजूद है और इसे इस तौर पर मार्क किया जा सकता है जिसे फिर से मैप किया जा सकता है या नहीं. इनपुट SDK टूल का इस्तेमाल करके तय किया गया InputAction 1.0.0-beta create() तरीके को डिफ़ॉल्ट रूप से फिर से मैप किया जा सकता है. साथ ही, इसमें वर्शन नहीं है जानकारी:

इनपुट SDK 1.0.0-बीटा में InputAction

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()
    )
);

इनपुट SDK 1.1.0-बीटा में InputAction

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
);

इनपुट SDK 1.1.0-बीटा (वर्शन स्ट्रिंग के साथ) में InputAction

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
);

की बाइंडिंग का वर्शन तय करने के बारे में ज़्यादा जानकारी के लिए, यहां देखें ट्रैकिंग कुंजी के आईडी.

अपने InputGroups अपडेट करें

इनपुट 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 की तरह, इनपुट SDK का InputGroup.create() तरीका 1.0.0-beta के इस्तेमाल पर रोक लगा दी गई है. आपको गेम में अपना InputGroup अपडेट करना होगा जिसमें वर्शन आइडेंटिफ़ायर और बूलियन शामिल है. इससे पता चलता है कि InputAction आपके ग्रुप में मौजूद ऑब्जेक्ट को फिर से मैप किया जा सकता है. इनपुट SDK टूल 1.0.0-beta create() तरीके का इस्तेमाल करके बनाए गए ग्रुप, फिर से मैप किए जा सकते हैं. इनका आईडी 0 है, और वर्शन आईडी एक खाली स्ट्रिंग ("") है:

इनपुट SDK 1.0.0-बीटा में InputGroup

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
    )
);

इनपुट SDK 1.1.0-बीटा में InputGroup

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
);

इनपुट SDK 1.1.0-बीटा (वर्शन स्ट्रिंग के साथ) में InputGroup

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
);

की बाइंडिंग का वर्शन तय करने के बारे में ज़्यादा जानकारी के लिए, यहां देखें ट्रैकिंग कुंजी के आईडी.

अपना इनपुट मैप अपडेट करें

इनपुट SDK टूल 1.0.0-beta का InputMap.create() तरीका यह है बंद कर दिया गया है. वर्शन आइडेंटिफ़ायर असाइन करने के लिए, अपने InputMap को अपडेट करें, ऑप्ट आउट करें रीमैपिंग सुविधा से पूरी तरह से या अपने जिसे आप उपयोगकर्ता को रीमैप करने के लिए इस्तेमाल नहीं करना चाहते. हर InputMap पर इनपुट SDK टूल 1.0.0-beta create() तरीके का इस्तेमाल करके तय किया गया है इसे डिफ़ॉल्ट रूप से फिर से मैप किया जा सकता है. इसे 0 आईडी से पहचाना जाता है और इसमें कोई सुरक्षित रखा जाता है.

इनपुट SDK 1.0.0-बीटा में InputMap

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)
);

इनपुट SDK 1.1.0-बीटा में InputMap

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.

अपनी की-बाइंडिंग अपडेट करते समय, की बाइंडिंग डिज़ाइन करने के सबसे सही तरीके पाबंदियों और रीमैपिंग सुविधा की सीमाएं.