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.0 beta sürümüne nasıl yükselteceğiniz açıklanmaktadır. Unity'ye özel talimatlar için Unity yükseltme kılavuzuna bakın.

Sürüm Notları

PC Üzerinde Google Play Games, oyununuzun Giriş SDK'sı kullanarak sağladığı tuş bağlamalarına bağlı olarak klavye denetimlerinin yeniden eşlenmesini 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şirler.

PC Üzerinde Google Play Games, kullanıcı tarafından yeniden eşlenen her girişi oyununuzun varsayılan girişine eşler. Bu şekilde, oyununuzun oyuncunun yeniden eşlendiğinden haberdar olması gerekmez. Oyun içi bir işlem için yeni girişi bilmeniz gerekiyorsa (ör. oyununuzdaki klavye kontrollerini görüntülemek), etkinlikleri yeniden eşlediğimizde bildirim almak üzere isteğe bağlı bir geri çağırma kaydı yapabilirsiniz.

PC Üzerinde Google Play Games her kullanıcının yeniden eşlenen kontrollerini yerel olarak depolar. Böylece bu kontroller oyun oturumlarında kalıcı olur. Bu dosya yerel olarak saklandığından, mobil deneyimi etkilemez ve PC Üzerinde Google Play Games kaldırıldıktan sonra silinir. Kontrol ayarları birden fazla PC cihazında kalıcı değildir.

Oyununuzda anahtar yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yeni sürüme geçirmeniz gerekmez ancak desteklenmeyen bir yapılandırma algılanırsa oyununuzda yeniden eşleme devre dışı bırakılabilir.

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

  • Giriş SDK'sı 1.1.0-beta sürümüne geçin.
  • Desteklenmeyen yapılandırmalardan kaçınmak için tüm tuş bağlamalarını güncelleyin.
  • Yeniden eşleme özelliğini etkin hale getirmek için InputMap öğenizi güncelleyin.

Anahtar bağlamalarınızın salt okunur sürümünü 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.0-beta sürümüne geçin.
  • Yeniden eşleme özelliğini devre dışı olarak ayarlamak için InputMap cihazınızı güncelleyin.

PC Üzerinde Google Play Games'deki gelişmiş yeniden eşleme özelliklerinden yararlanmak için Giriş SDK'sı sürümünüzü 1.1.0-beta sürümüne yükseltebilirsiniz. Bunun için, oyununuzun farklı sahnelerine yönelik kontroller 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ış anahtar tanımlamak ve InputAction, InputGroup veya InputMap uyarınca yeniden eşleme özelliğini devre dışı bırakmak üzere InputContexts uygulamasını kullanabilirsiniz.

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 tuş kullanan InputAction, değiştirici ve değiştirici olmayan bir tuştan 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 veya InputGroup nesnesi aynı benzersiz kimliği paylaşamaz.

Yeni sürüme geç

Giriş SDK'sı 1.1.0-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 desteklemektedir. Oyununuz, Giriş SDK'sının daha eski bir sürümünü kullanıyorsa 0.0.4'ten 1.0.0-beta'ya yükseltme kılavuzunu okumayı düşünebilirsiniz.

1.1.0-beta sürümüne geçerek aşağıdakilerin dahil olduğu yeni özellikleri etkinleştirebilirsiniz:

Bağımlılığın yeni sürüme geçirilmesi

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

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

Statik alanları tanımlama

1.1.0-beta sürümünde InputAction, InputGroup, InputContext ve InputMap nesnelerinizi InputMappingProvider sınıfınızın statik alanları olarak tanımlamak iyi bir uygulamadır. Çünkü şu alanlara uygulamanızın diğer bölümlerinden erişilebilmektedir:

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

Giriş İşlemlerinizi güncelleme

1.0.0-beta giriş SDK'sının InputAction.create() yöntemi kullanımdan kaldırıldı. InputAction artık bir sürüm tanımlayıcısına sahiptir ve yeniden eşlenebilir veya işaretlenmez olarak işaretlenebilir. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan InputAction, varsayılan olarak yeniden eşlenebilir ve sürüm oluşturma bilgileri içermez:

Giriş SDK'sı 1.0.0-beta sürümündeki 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.0-beta sürümündeki 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
);

Giriş SDK'sı 1.1.0-beta sürümündeki InputAction (sürüm dizesiyle)

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

Anahtar bağlamalarınızın sürümünü belirleme hakkında daha fazla bilgi için İzleme anahtarı kimlikleri bölümüne bakın.

Giriş Gruplarınızı güncelleme

Giriş SDK'sı 1.1.0-beta'nde her bir InputGroup öğesini benzersiz şekilde tanımlamanız gerekir. Her InputAction, ilgili işlemlerden oluşan bir InputGroup koleksiyonuna aittir. Bu, oyun sırasında gezinmeyi ve kontrollerin keşfedilmesini iyileştirir. InputAction öğesinin tek bir InputContext içindeki tüm işlemler arasında benzersiz bir tanımlayıcıya sahip olması gibi, InputGroup de mevcut gruplar arasında benzersiz bir kimliğe sahip olmalıdır.

Bu bölümdeki örneklerde, bir oyunda ana menüyü ve oynanabilirliği temsil eden iki InputContext nesnesi bulunur. Bu bağlamlarda her InputGroup için uygun kimlikler aşağıdaki numaralandırma kullanılarak 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 InputGroup.create() yöntemi 1.0.0-beta kullanımdan kaldırılmıştır. Oyununuzda InputGroup öğenizi, gruplarınızdaki InputAction nesnelerinin yeniden eşlenebilir olup olmadığını belirten bir sürüm tanımlayıcısı ve boole ile güncellemeniz gerekir. Kullanımdan kaldırılan Giriş SDK'sı 1.0.0-beta create() yöntemi ile oluşturulan gruplar yeniden eşlenebilir durumdadır, kimliği 0'dır ve sürüm kimliği boş bir dizedir (""):

Giriş SDK'sı 1.0.0-beta içindeki 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.0-beta sürümündeki 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.0-beta'daki InputGroup (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
);

Anahtar bağlamalarınızın sürümünü belirleme hakkında daha fazla bilgi için İzleme anahtarı kimlikleri bölümüne bakın.

Harf Çevirme Aracınızı güncelleme

1.0.0-beta giriş SDK'sının InputMap.create() yöntemi kullanımdan kaldırıldı. 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şlemek için kullanılmasını istemediğiniz ayrılmış anahtarların listesini atamak amacıyla InputMap cihazını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ış anahtarı yoktur.

Giriş SDK'sı 1.0.0-beta içindeki 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)
);

Giriş SDK'sı 1.1.0-beta içindeki 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 ile farklı sahneler için farklı kontroller atayarak veya InputRemappingListeners etkinliklerini yeniden eşlemeyle ilgili bildirim alarak oyununuzun kullanıcı arayüzünü güncelleyerek 1.1.0 Beta sürümüne yükseltme işlemine devam edin.

Tuş bağlamalarınızı güncellerken anahtar bağlamalarınızı tasarlamayla ilgili en iyi uygulamalara göz atın ve yeniden eşleme özelliğinin kısıtlamalarını ve sınırlamalarını göz önünde bulundurun.