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 ancakA + B ,Ctrl + Alt veÜst Karakter + A + Sekme geçerli değildir.İki veya daha fazla
InputAction
veyaInputGroup
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:
- Sahne kontrolü değişikliklerini tetikleme.
- Önemli eşleme etkinlikleriyle ilgili bildirim alma.
- İşlem, Grup, Bağlam veya Harita'ya göre yeniden eşleme devre dışı bırakılıyor.
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.