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 özgü talimatlar için Unity yükseltme kılavuzuna bakı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 erişmek için yer paylaşımını açıp kontrolleri seçtikten sonra yeniden eşlemek istedikleri işlemi tıklar.

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 için bildirim almak üzere 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 fazla PC cihazında kalıcı değildir.

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 yeniden eşleme oyununuz için devre dışı bırakılabilir.

Giriş yeniden eşleme deneyimini kontrol etmek istiyorsanız veya yeniden eşleme özelliği oyununuzda 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 geçin.
  • 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ı sahneleri için kontrolleri tanımlamak, yeniden eşleme etkinliklerini dinlemek üzere geri çağırma işlevleri eklemek, kullanıcının yeniden eşleyemeyeceği bir dizi ayrılmış anahtar tanımlamak ve yeniden eşleme özelliğini InputAction, InputGroup veya InputMap başına devre dışı bırakmak amacıyla InputContexts'ü kullanarak PC'de Google Play Games'in gelişmiş yeniden eşleme özelliklerinden yararlanmak için Giriş SDK'nızı 1.1.1-beta sürümüne yükseltebilirsiniz.

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. Oyununuzda Input SDK'nın önceki bir sürümü kullanılıyorsa 0.0.4'ten 1.0.0-beta sürümüne yükseltme kılavuzunu okuyabilirsiniz.

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 sahiptir ve yeniden atanabilir veya atanamaz olarak işaretlenebilir. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan bir InputAction varsayılan olarak yeniden atanabilir ve sürüm bilgisi içermez:

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

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

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 sırasında kontrollerin gezinmesi ve bulunabilirliği iyileştirilir. 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ı 1.0.0-beta'nin InputGroup.create() yönteminin desteği de sonlandırılmıştır. Oyununuzdaki InputGroup öğesini, bir sürüm tanımlayıcısıyla ve gruplarınızdaki InputAction öğelerinin yeniden atanabilir olup olmadığını belirten 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 atanabilir, 0 kimliğine sahiptir ve sürüm kimliği boş bir dizedir (""):

Input SDK 1.0.0-beta sürümünde 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
);

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

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 öğenizi 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ış anahtarları yoktur.

Input SDK 1.0.0-beta sürümünde 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ı güncellerken Tuş bağlamalarınızı tasarlamayla ilgili en iyi uygulamalar başlıklı makaleyi inceleyin ve yeniden eşleme özelliğinin kısıtlamaları ile sınırlamalarını göz önünde bulundurun.