GameActivity Часть комплекта разработки игр для Android .

GameActivity — это библиотека Jetpack, предназначенная для помощи играм Android в обработке команд цикла приложений, событий ввода и ввода текста в коде C/C++ приложения. GameActivity является прямым потомком NativeActivity и имеет аналогичную архитектуру:

alt_text

Как показано на диаграмме выше, GameActivity выполняет следующие функции:

  • Взаимодействие с платформой Android через компонент Java.
  • Передача команд цикла приложения, событий ввода и ввода текста на собственную сторону.
  • Моделирование исходного кода C/C++ на три логических компонента:
    • Функции JNI GameActivity, которые напрямую поддерживают функциональность Java GameActivity и ставят события в очередь в native_app_glue .
    • native_app_glue , который работает в основном в собственном потоке (отличном от основного потока приложения) и выполняет задачи с помощью своего циклизатора.
    • Код игры приложения, который опрашивает и обрабатывает события, находящиеся в очереди внутри native_app_glue , и выполняет код игры в потоке native_app_glue .

С помощью GameActivity вы можете сосредоточиться на разработке основной игры и не тратить слишком много времени на работу с кодом JNI.

Если вы уже знакомы с NativeActivity , основные различия между GameActivity и NativeActivity заключаются в следующем:

  • GameActivity преобразуется в SurfaceView , что значительно упрощает взаимодействие игр с другими компонентами пользовательского интерфейса.
  • Для событий сенсорного ввода и ввода клавиш GameActivity имеет совершенно новую реализацию с интерфейсом android_input_buffer , отдельную от InputQueue , который использует NativeActivity .
  • GameActivity — это производный класс AppCompatActivity , который позволяет беспрепятственно использовать другие компоненты Jetpack. Доступны ActionBar , Fragment и другие.
  • GameActivity добавляет функциональность ввода текста за счет интеграции библиотеки GameTextInput .
  • Ожидается, что приложения, производные от GameActivity объединят все три части кода C/C++ в одну библиотеку. С другой стороны, функции JNI NativeActivity являются частью платформы (всегда загружаются ОС). Следовательно, ожидается, что только код native_app_glue и C/C++ приложения будут встроены в одну библиотеку.
  • NativeActivity является частью платформы Android и следует циклу выпуска (обычно ежегодно). GameActivity является частью библиотеки Jetpack, цикл выпуска которой гораздо более частый (обычно раз в две недели); новые функции и исправления ошибок могут появиться гораздо быстрее.

Места выпуска

Библиотека GameActivity доступна в следующих каналах:

Код C/C++ предоставляется в качестве исходного кода во всех каналах выпуска в формате Prefab . GameActivity версии 1.2.2 добавляет в дистрибутив статическую библиотеку. Начиная с этой версии и более поздних, мы рекомендуем использовать статическую библиотеку вместо исходного кода.

Содержимое библиотеки Jetpack и zip-пакета AGDK.

GameActivity с библиотекой Jetpack и каналами zip-пакетов AGDK выпускается с AAR. Этот AAR содержит следующие основные компоненты:

  • JAR-файл для кода Java
  • Статическая библиотека C/C++ game-activity_static включена в GameActivity версии 1.2.2 и более поздних версий.
  • Исходный код C/C++ (в папке /prefab )

Инструкции по интеграции, ссылки на которые приведены на этой странице, предполагают, что вы можете использовать Prefab в своей системе сборки; в противном случае вы можете скопировать исходный код, упакованный в папку prefab/modules/game-activity/include в вашу систему сборки и выполнить необходимые шаги интеграции. Аналогичная файловая структура существует для выпусков под androidx для библиотеки Android Jetpack; по умолчанию gradle распаковывает AAR в свой каталог кеша (~/.gradle/caches/...). Вы можете найти исходный код C/C++, выполнив поиск по запросу prefab/modules/game-activity/include и выбрав местоположение под предполагаемой версией выпуска.

Инструкции по интеграции с использованием библиотеки Jetpack см. в разделе Начало работы с GameActivity .

Для ZIP-пакета библиотеки AGDK выполните следующие действия, чтобы получить код C/C++:

  1. Разархивируйте скачанный пакет.
  2. В разархивированном пакете разархивируйте GameActivity-release.aar.
  3. Найдите и скопируйте весь исходный код C/C++ в prefab/modules/game-activity/include , включая следующее:
    • game-activity для кода C/C++, связанного с GameActivity
    • game-text-input для кода C/C++, связанного с GameTextInput

Содержимое исходного кода AOSP

AOSP всегда содержит самый последний исходный код. Следуйте инструкциям по сборке , чтобы создавать собственные выпуски или напрямую интегрировать исходный код в свою среду сборки. Исходный код C/C++ сохраняется в файловой структуре, аналогичной структуре библиотеки Jetpack и zip-пакета AGDK.

Руководства по интеграции

Следуйте этим руководствам, чтобы интегрировать GameActivity в свои приложения:

Дополнительные ресурсы

Чтобы узнать больше о GameActivity , см. следующее:

Обратная связь

Чтобы сообщить об ошибках или запросить новые функции в GameActivity, используйте систему отслеживания проблем GameActivity .

,

GameActivity Часть комплекта разработки игр для Android .

GameActivity — это библиотека Jetpack, предназначенная для помощи играм Android в обработке команд цикла приложений, событий ввода и ввода текста в коде C/C++ приложения. GameActivity является прямым потомком NativeActivity и имеет аналогичную архитектуру:

alt_text

Как показано на диаграмме выше, GameActivity выполняет следующие функции:

  • Взаимодействие с платформой Android через компонент Java.
  • Передача команд цикла приложения, событий ввода и ввода текста на собственную сторону.
  • Моделирование исходного кода C/C++ на три логических компонента:
    • Функции JNI GameActivity, которые напрямую поддерживают функциональность Java GameActivity и ставят события в очередь в native_app_glue .
    • native_app_glue , который работает в основном в собственном потоке (отличном от основного потока приложения) и выполняет задачи с помощью своего циклизатора.
    • Код игры приложения, который опрашивает и обрабатывает события, находящиеся в очереди внутри native_app_glue , и выполняет код игры в потоке native_app_glue .

С помощью GameActivity вы можете сосредоточиться на разработке основной игры и не тратить слишком много времени на работу с кодом JNI.

Если вы уже знакомы с NativeActivity , основные различия между GameActivity и NativeActivity заключаются в следующем:

  • GameActivity преобразуется в SurfaceView , что значительно упрощает взаимодействие игр с другими компонентами пользовательского интерфейса.
  • Для событий сенсорного ввода и ввода клавиш GameActivity имеет совершенно новую реализацию с интерфейсом android_input_buffer , отдельную от InputQueue , который использует NativeActivity .
  • GameActivity — это производный класс AppCompatActivity , который позволяет беспрепятственно использовать другие компоненты Jetpack. Доступны ActionBar , Fragment и другие.
  • GameActivity добавляет функциональность ввода текста за счет интеграции библиотеки GameTextInput .
  • Ожидается, что приложения, производные от GameActivity объединят все три части кода C/C++ в одну библиотеку. С другой стороны, функции JNI NativeActivity являются частью платформы (всегда загружаются ОС). Следовательно, ожидается, что только native_app_glue и код приложения C/C++ будут встроены в одну библиотеку.
  • NativeActivity является частью платформы Android и следует циклу выпуска (обычно ежегодно). GameActivity является частью библиотеки Jetpack, цикл выпуска которой гораздо более частый (обычно раз в две недели); новые функции и исправления ошибок могут появиться гораздо быстрее.

Места выпуска

Библиотека GameActivity доступна в следующих каналах:

Код C/C++ предоставляется в качестве исходного кода во всех каналах выпуска в формате Prefab . GameActivity версии 1.2.2 добавляет в дистрибутив статическую библиотеку. Начиная с этой версии и более поздних, мы рекомендуем использовать статическую библиотеку вместо исходного кода.

Содержимое библиотеки Jetpack и zip-пакета AGDK.

GameActivity выпускается с библиотекой Jetpack и каналами zip-пакетов AGDK с AAR. Этот AAR содержит следующие основные компоненты:

  • JAR-файл для кода Java
  • Статическая библиотека C/C++ game-activity_static включена в GameActivity версии 1.2.2 и более поздних версий.
  • Исходный код C/C++ (в папке /prefab )

Инструкции по интеграции, ссылки на которые приведены на этой странице, предполагают, что вы можете использовать Prefab в своей системе сборки; в противном случае вы можете скопировать исходный код, упакованный в папку prefab/modules/game-activity/include в вашу систему сборки и выполнить необходимые шаги интеграции. Аналогичная файловая структура существует для выпусков под androidx для библиотеки Android Jetpack; по умолчанию gradle распаковывает AAR в свой каталог кеша (~/.gradle/caches/...). Вы можете найти исходный код C/C++, выполнив поиск по запросу prefab/modules/game-activity/include и выбрав местоположение под предполагаемой версией выпуска.

Инструкции по интеграции с использованием библиотеки Jetpack см. в разделе Начало работы с GameActivity .

Для ZIP-пакета библиотеки AGDK выполните следующие действия, чтобы получить код C/C++:

  1. Разархивируйте скачанный пакет.
  2. В разархивированном пакете разархивируйте GameActivity-release.aar.
  3. Найдите и скопируйте весь исходный код C/C++ в prefab/modules/game-activity/include , включая следующее:
    • game-activity для кода C/C++, связанного с GameActivity
    • game-text-input для кода C/C++, связанного с GameTextInput

Содержимое исходного кода AOSP

AOSP всегда содержит самый последний исходный код. Следуйте инструкциям по сборке , чтобы создавать свои собственные выпуски или напрямую интегрировать исходный код в свою среду сборки. Исходный код C/C++ сохраняется в файловой структуре, аналогичной структуре библиотеки Jetpack и zip-пакета AGDK.

Руководства по интеграции

Следуйте этим руководствам, чтобы интегрировать GameActivity в свои приложения:

Дополнительные ресурсы

Чтобы узнать больше о GameActivity , см. следующее:

Обратная связь

Чтобы сообщить об ошибках или запросить новые функции в GameActivity, используйте систему отслеживания проблем GameActivity .