يشرح هذا الدليل كيفية ترقية لعبتك من الإصدار التجريبي 1.0.0. إدخال SDK لـ Java وKotlin إلى الإصدار التجريبي 1.1.0. يمكنك الاطّلاع على دليل ترقية Unity من أجل Unity تعليمات محددة.
ملاحظات الإصدار
يتيح برنامج "ألعاب Google Play على الكمبيوتر" إعادة تخصيص عناصر التحكّم في لوحة المفاتيح على روابط المفاتيح التي توفرها لعبتك باستخدام حزمة تطوير البرامج (SDK) للإدخال.
يمكن للمستخدمين الوصول إلى هذه الميزة من خلال فتح العناصر التي تظهر على سطح الفيديو واختيار عناصر التحكّم ثم النقر على الإجراء الذي يريدون إعادة تخصيصه
يربط برنامج "ألعاب Google Play على الكمبيوتر" كل إدخالات تمت إعادة ضبطها للمستخدم على الإعدادات التلقائية في لعبتك. إدخال. بهذه الطريقة، ليس من الضروري أن تكون لعبتك على دراية بعملية إعادة تخصيص اللاعبين. في حال حذف تحتاج إلى معرفة المدخلات الجديدة لإجراء داخل اللعبة، مثل عرض عناصر تحكم لوحة المفاتيح في لعبتك، يمكنك اختياريًا تسجيل معاودة الاتصال بشكل أفضل لإعادة تخصيص الأحداث.
يخزِّن برنامج "ألعاب Google Play على الكمبيوتر" عناصر التحكّم التي تمت إعادة تخصيصها لكل مستخدم على الجهاز ليتمكّن من ثابتة عبر جلسات الألعاب. بما أن هذا يتم تخزينه محليًا، فلا التي تؤثر في تجربة الأجهزة الجوّالة ويتم حذفها عند إلغاء تثبيت تطبيق "ألعاب Google Play على الكمبيوتر". لا يتم الاحتفاظ بإعدادات عنصر التحكم عبر العديد أجهزة الكمبيوتر الشخصي.
لا تحتاج إلى ترقية "حزمة تطوير البرامج (SDK) للإدخال" لتفعيل إعادة تخصيص المفاتيح في لعبتك، ولكن يمكن إيقاف إعادة التخصيص للعبتك إذا تم رصد إعدادات غير متوافقة.
إذا أردت التحكّم في تجربة إعادة تخصيص الإدخالات، أو إذا كانت عملية إعادة تخصيص تم إيقاف الميزة في لعبتك، يُرجى اتّباع الخطوات التالية لحلّها:
- الترقية إلى حزمة تطوير البرامج (SDK)
1.1.0-beta
للإدخال - احرص على تحديث أي ربط مفاتيح لتجنب عمليات الضبط غير المتوافقة.
- يجب تحديث
InputMap
لكي تكون ميزة إعادة التخصيص مفعَّلة.
إذا كنت تريد إيقاف ميزة إعادة تخصيص لعبتك مع الاستمرار يعرض نسخة للقراءة فقط من روابط المفاتيح، اتبع الخطوات التالية:
- الترقية إلى حزمة تطوير البرامج (SDK)
1.1.0-beta
للإدخال - يُرجى تعديل
InputMap
لضبط ميزة إعادة التخصيص على غير مفعَّلة.
يمكنك ترقية الإصدار من "حزمة تطوير البرامج (SDK) للإدخال" إلى 1.1.0-beta
لتنفيذ
الاستفادة من ميزات إعادة الخرائط المتقدّمة في برنامج "ألعاب Google Play على الكمبيوتر" من خلال
يمكنك إضافة 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 إلى تفعيل ميزات جديدة تشمل:
- تشغيل تغييرات عناصر التحكّم في المشهد:
- تلقّي إشعارات لأحداث الربط الرئيسية
- إيقاف إعادة التخصيص لكل إجراء أو مجموعة أو سياق أو خريطة
تبعية الترقية
إذا كنت تستخدم Gradle لاستيراد حزمة تطوير البرامج (SDK) للإدخال، يُرجى الترقية إلى أحدث إصدار:
// 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;
}
}
تحديث إجراءات الإدخال
أسلوب InputAction.create()
لإدخال SDK 1.0.0-beta
هو
نهائيًا. أصبح لـ InputAction
الآن معرّف إصدار ويمكن وضع علامة عليه باعتباره
قابل للإعادة أم لا. تم تحديد InputAction
باستخدام حزمة تطوير البرامج (SDK) للإدخال.
طريقة create()
في 1.0.0-beta
قابلة لإعادة الضبط تلقائيًا وتفتقر إلى إنشاء النُسخ
المعلومات:
EnterAction في الإصدار 1.0.0-beta من حزمة تطوير البرامج (SDK) للإدخال
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()
)
);
EnterAction في الإصدار 1.1.0-beta من حزمة SDK للإدخال
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
);
إدخال Action في الإصدار 1.1.0-beta للإدخال (مع سلسلة الإصدار)
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
);
لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع
تحديث enterGroups
في 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
، أسلوب InputGroup.create()
الخاص بحزمة تطوير البرامج (SDK) للإدخال
تم إيقاف 1.0.0-beta
نهائيًا. يجب تحديث "InputGroup
" في لعبتك.
بمعرّف الإصدار والقيمة المنطقية التي تشير إلى ما إذا كان InputAction
الكائنات في مجموعاتك قابلة لإعادة الربط. المجموعات التي تم إنشاؤها باستخدام أسلوب الإدخال SDK 1.0.0-beta
create()
المتوقّفة قابلة لإعادة الربط، ويكون لها رقم التعريف 0.
ورقم تعريف الإصدار هو سلسلة فارغة (""
):
EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال
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
)
);
EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال 1.1.0
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
);
الإدخالGroup في الإصدار 1.1.0-beta من حزمة تطوير البرامج (SDK) للإدخال (مع سلسلة الإصدار)
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
);
لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع
تحديث خريطة الإدخال
طريقة InputMap.create()
لإدخال حزمة تطوير البرامج (SDK) 1.0.0-beta
هي
نهائيًا. يجب تعديل InputMap
لتحديد معرّف الإصدار. يمكنك إيقاف هذا الإعداد.
تمامًا من ميزة إعادة التخصيص أو تعيين قائمة بالمفاتيح المحجوزة
اللعبة التي لا تريد أن يتم استخدامها لإعادة تخصيصها من قِبل المستخدم. كل InputMap
باستخدام أسلوب create()
للإدخال SDK للإدخال 1.0.0-beta
قابل لإعادة الضبط تلقائيًا، ويتم تحديده بالمعرّف 0
، ولا يحتوي على
المفاتيح المحجوزة.
خريطة الإدخال في الإصدار 1.0.0 من حزمة تطوير البرامج (SDK) للإدخال
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)
);
خريطة الإدخال في الإصدار 1.1.0 من حزمة تطوير البرامج (SDK) للإدخال
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
عند تحديث عمليات ربط المفاتيح، يمكنك إلقاء نظرة على أفضل الممارسات لتصميم روابط المفاتيح وفكِّر في القيود القيود المفروضة على ميزة إعادة التخصيص