Java ve Kotlin için Giriş SDK'sını 1.1 sürümüne yükseltin

Bu kılavuzda, oyununuzu Java ve Kotlin için 1.0.0-beta Giriş SDK'sından 1.1.1-beta sürümüne nasıl yükselteceğiniz açıklanmaktadır. Unity'ye özel talimatlar için Unity yükseltme kılavuzuna göz atın.

Sürüm Notları

PC Üzerinde Google Play Games, oyununuzun Giriş SDK'sını kullanarak sağladığı tuş bağlamalarına göre klavye kontrollerinin yeniden haritalanmasını destekler.

Kullanıcılar bu özelliğe yer paylaşımını açıp kontrolleri seçerek ve ardından yeniden eşlemek istedikleri işlemi tıklayarak erişebilir.

PC Üzerinde Google Play Games, kullanıcı tarafından yeniden eşlenen her girişi oyununuzun varsayılan girişiyle eşler. Bu sayede oyununuzun, oyuncunun yeniden eşlemesini bilmesi gerekmez. Oyun içi bir işlem için yeni girişi bilmeniz gerekiyorsa (ör. oyununuzda klavye kontrollerini görüntüleme) isteğe bağlı olarak yeniden eşleme etkinlikleri hakkında bildirim almak için geri çağırma işlevi kaydedebilirsiniz.

PC Üzerinde Google Play Games, her kullanıcının yeniden eşlenen kontrollerini yerel olarak depolar. Böylece, oyun oturumlarında bu kontrolleri kullanmaya devam edebilirsiniz. Bu veri yerel olarak depolandığından mobil deneyimi etkilemez ve PC'de Google Play Games'in kaldırılmasıyla silinir. Kontrol ayarları, birden çok PC cihazında kalıcı olmaz.

Oyununuzda tuş yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yükseltmeniz gerekmez ancak desteklenmeyen bir yapılandırma algılanırsa oyununuz için yeniden eşleme devre dışı bırakılabilir.

Giriş yeniden eşleme deneyimini kontrol etmek istiyorsanız veya oyununuz için yeniden eşleme özelliği devre dışıysa sorunu çözmek için aşağıdaki adımları uygulayın:

  • Giriş SDK'sı 1.1.1-beta sürümüne yükseltin.
  • Desteklenmeyen yapılandırmaları önlemek için tuş bağlamalarını güncelleyin.
  • Yeniden eşleme özelliğini etkin olarak ayarlamak için InputMap cihazınızı güncelleyin.

Tuş bağlamalarınız için salt okunur sürümü göstermeye devam ederken oyununuzda yeniden eşleme özelliğini devre dışı bırakmak istiyorsanız aşağıdaki adımları uygulayın:

  • Giriş SDK'sı 1.1.1-beta sürümüne geçin.
  • Yeniden eşleme özelliğini devre dışı olarak ayarlamak için InputMap cihazınızı güncelleyin.

Oyununuzun farklı sahnelerine yönelik kontrolleri tanımlamak, yeniden eşleme etkinliklerini dinlemek için geri çağırmalar eklemek, kullanıcının yeniden eşleyemeyeceği bir dizi ayrılmış tuş tanımlamak ve InputAction, InputGroup ya da InputMap uyarınca yeniden eşleme özelliğini devre dışı bırakmak için PC Üzerinde Google Play Games'de gelişmiş yeniden eşleme özelliklerinden yararlanmak üzere giriş SDK'nızın sürümünü 1.1.1-beta sürümüne yükseltebilirsiniz.InputContexts

Yeni SDK sürümüne geçerken aşağıdaki istisnaları göz önünde bulundurun:

Desteklenmeyen yapılandırmalar

Aşağıdaki koşullar karşılanmazsa giriş yeniden eşleme devre dışı bırakılır:

  • Birden fazla anahtar kullanan bir InputAction, bir değiştirici ve değiştirici olmayan anahtardan oluşmalıdır. Örneğin, Üst Karakter + A geçerlidir ancak A + B, Ctrl + Alt ve Üst Karakter + A + Sekme geçerli değildir.

  • İki veya daha fazla InputAction ya da InputGroup nesnesi aynı benzersiz kimliği paylaşamaz.

Yükselt

Giriş SDK'sı 1.1.1-beta, Giriş SDK'sı 1.0.0-beta ile geriye dönük uyumludur. Giriş SDK'sının önceki uygulamalarını kullanan oyunlar, desteklenmeyen bir yapılandırma kullanmadıkları sürece temel yeniden eşlemeyi desteklemeye devam eder. Oyununuz Giriş SDK'sının önceki bir sürümünü kullanıyorsa 0.0.4'ten 1.0.0-beta'ya kadar olan yükseltme kılavuzunu okumanızı öneririz.

1.1.1-beta sürümüne yükseltme yaptığınızda aşağıdakiler gibi yeni özelliklerden yararlanabilirsiniz:

Bağımlılığı yükseltme

Giriş SDK'sını içe aktarmak için Gradle kullanıyorsanız en yeni sürüme yükseltin:

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

Statik alanları tanımlama

1.1.1-beta sürümü için InputAction, InputGroup, InputContext ve InputMap nesnelerinizi InputMappingProvider sınıfınızın statik alanları olarak tanımlamak iyi bir uygulamadır. Bu alanlara uygulamanızın diğer bölümlerinden erişilebilir:

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

InputActions öğelerinizi güncelleme

Giriş SDK'sı 1.0.0-beta'nın InputAction.create() yöntemi için destek sonlandırıldı. InputAction artık bir sürüm tanımlayıcısına sahip ve yeniden eşlenebilir veya değil olarak işaretlenebilir. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan bir InputAction, varsayılan olarak yeniden eşlenebilir ve sürüm oluşturma bilgisine sahip değildir:

Input SDK 1.0.0-beta'da 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()
    )
);

Giriş SDK'sı 1.1.1-beta'da Giriş İşlemi

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

Input SDK 1.1.1-beta'da InputAction (sürüm dizesi ile)

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

Tuş bağlamalarınızı sürümlendirme hakkında daha fazla bilgi için Anahtar kimliklerini izleme başlıklı makaleyi inceleyin.

InputGroups'ınızı güncelleme

Giriş SDK'sında 1.1.1-beta, her InputGroup'ı benzersiz şekilde tanımlamanız gerekir. Her InputAction, ilgili işlemlerin bir koleksiyonu olan bir InputGroup'a aittir. Bu sayede, oyun esnasında kontrollerde gezinmeyi ve keşfedilebilirliği iyileştirebilirsiniz. InputAction'ün tek bir InputContext'daki tüm işlemler arasında benzersiz bir tanımlayıcıya sahip olması gerektiği gibi, InputGroup'ün de mevcut gruplar arasında benzersiz bir kimliği olmalıdır.

Bu bölümdeki örneklerde, bir oyunda ana menüyü ve oynanabilirliği temsil eden iki InputContext nesnesi vardır. Aşağıdaki listeleme kullanılarak bu bağlamlarda her InputGroup için uygun kimlikler izlenir:

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 gibi, Giriş SDK'sının 1.0.0-beta InputGroup.create() yöntemi de kullanımdan kaldırılmıştır. Oyununuzdaki InputGroup öğenizi bir sürüm tanımlayıcısı ve gruplarınızdaki InputAction nesnelerinin yeniden eşlenebilir olup olmadığını gösteren bir boole değeriyle güncellemeniz gerekir. Desteği sonlandırılan Giriş SDK'sı 1.0.0-beta create() yöntemiyle oluşturulan gruplar yeniden eşleştirilebilir. Bu gruplar kimliği 0'dır ve sürüm kimliği boş bir dizedir (""):

Input SDK 1.0.0-beta'da 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
    )
);

Giriş SDK'sı 1.1.1-beta sürümünde 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
);

Giriş SDK'sı 1.1.1-beta'da Giriş Grubu (sürüm dizesiyle)

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

Tuş bağlamalarınızı sürümlendirme hakkında daha fazla bilgi için Anahtar kimliklerini izleme başlıklı makaleyi inceleyin.

InputMap'inizi güncelleme

Input SDK 1.0.0-beta'nın InputMap.create() yönteminin desteği sonlandırıldı. Bir sürüm tanımlayıcısı atamak, yeniden eşleme özelliğini tamamen devre dışı bırakmak veya oyununuz için kullanıcı tarafından yeniden eşleme için kullanılmasını istemediğiniz ayrılmış anahtarların listesini atamak üzere InputMap dosyanızı güncelleyin. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan her InputMap varsayılan olarak yeniden eşlenebilir, 0 kimliğiyle tanımlanır ve ayrılmış anahtara sahip değildir.

Input SDK 1.0.0-beta'da 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)
);

Input SDK 1.1.1-beta'da 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()
                )
        )
);

Sırada ne var?

InputContexts kullanarak farklı sahneler için farklı kontroller atayın veya InputRemappingListeners kullanarak yeniden eşleme etkinlikleri hakkında bildirim alın ve oyununuzun kullanıcı arayüzünü güncelleyin.

Tuş bağlamalarınızı güncellerken Anahtar bağlamalarınızı tasarlamayla ilgili en iyi uygulamalar bölümüne göz atın ve yeniden eşleme özelliğinin kısıtlamalarını ve sınırlamalarını göz önünde bulundurun.