GameActivity Parte do Android Game Development Kit

A GameActivity é uma biblioteca do Jetpack criada para ajudar jogos do Android a processar comandos do ciclo de funcionamento, eventos de entrada e entradas de texto no código C/C++ do app. A GameActivity foi derivada diretamente da NativeActivity, e elas têm uma arquitetura parecida:

alt_text

Como ilustrado no diagrama acima, a GameActivity realiza estas funções:

  • Interage com o framework do Android usando o componente Java.
  • Transmite comandos do ciclo de funcionamento, eventos de entrada e entradas de texto para o lado nativo do app.
  • Modela o código-fonte C/C++ em três componentes lógicos:
    • Funções JNI da GameActivity, que oferecem suporte direto para a funcionalidade Java da GameActivity e enfileiram os eventos em native_app_glue.
    • native_app_glue, que é executado essencialmente em uma linha de execução nativa própria, diferente da linha de execução principal do app. Esse componente executa tarefas com o looper.
    • O código do jogo do app, que consulta e processa os eventos na fila em native_app_glue e executa o código do jogo na linha de execução native_app_glue.

Com a GameActivity, você pode se concentrar em desenvolver os principais elementos do seu jogo e não desperdiçar tempo lidando com o código JNI.

Se você já conhece a NativeActivity, as principais diferenças entre a GameActivity e a NativeActivity são estas:

  • A GameActivity é renderizada em uma SurfaceView, o que permite que os jogos interajam com outros componentes da IU com mais facilidade.
  • Para eventos de entrada por toque e pressionamento de tecla, a GameActivity tem uma implementação totalmente nova com a interface android_input_buffer, que é separada da InputQueue usada pela NativeActivity.
  • A GameActivity é uma classe derivada da AppCompatActivity, que permite usar outros componentes do Jetpack facilmente. Os componentes ActionBar, Fragment e outros estão disponíveis.
  • A GameActivity integra a biblioteca GameTextInput e, assim, inclui a função de entrada de texto.
  • Os apps derivados da GameActivity precisam criar as três partes do código C/C++ em uma biblioteca. Por outro lado, as funções JNI da NativeActivity fazem parte do framework e sempre são carregadas pelo SO. Somente a native_app_glue e o código C/C++ do app precisam ser criados em uma biblioteca.
  • A NativeActivity faz parte do framework do Android e segue o ciclo de lançamento do Android, que geralmente é anual. Já a GameActivity faz parte da biblioteca do Jetpack, que tem um ciclo de lançamento muito mais frequente, geralmente quinzenal. Dessa forma, novos recursos e correções de bugs podem ser disponibilizados muito mais rapidamente.

Locais de lançamento

A biblioteca GameActivity está disponível nos seguintes canais:

O código C/C++ é fornecido como código-fonte em todos os canais de lançamento, usando o formato Prefab. A GameActivity versão 1.2.2 adiciona uma biblioteca estática à distribuição. A partir dessa versão, recomendamos usar a biblioteca estática em vez do código-fonte.

Conteúdo da biblioteca do Jetpack e do pacote ZIP do AGDK

Com a biblioteca do Jetpack e os canais do pacote ZIP do AGDK, a GameActivity é lançada com um AAR. Esse AAR contém os seguintes componentes principais:

  • Um arquivo JAR para o código Java.
  • A biblioteca C/C++ estática game-activity_static está incluída na GameActivity versão 1.2.2 e mais recentes.
  • Código-fonte C/C++ (na pasta /prefab).

Os links para instruções de integração nesta página presumem que você pode usar o Prefab no seu sistema de build. Se não puder, copie o código-fonte incluído na pasta prefab/modules/game-activity/include para seu sistema de build e execute as etapas de integração necessárias. Há uma estrutura de arquivos parecida para as versões no androidx para a biblioteca do Android Jetpack. Por padrão, o Gradle descompacta arquivos AAR no diretório de cache (~/.gradle/caches/...). Para encontrar o código-fonte C/C++, pesquise prefab/modules/game-activity/include e selecione o local na versão de lançamento pretendida.

Para ver instruções sobre como integrar usando a biblioteca Jetpack, consulte Introdução à GameActivity.

No caso do pacote ZIP da biblioteca AGDK, siga estas etapas para acessar o código C/C++:

  1. Descompacte o pacote que você transferiu por download.
  2. Nesse pacote, descompacte o arquivo GameActivity-release.aar.
  3. Encontre e copie todo o código-fonte C/C++ em prefab/modules/game-activity/include, incluindo o seguinte:
    • game-activity para o código C/C++ relacionado à GameActivity
    • game-text-input para o código C/C++ relacionado à GameTextInput

Conteúdo do código-fonte do AOSP

O AOSP sempre contém o código-fonte mais recente. Siga as instruções de build para criar versões próprias ou integrar diretamente a origem ao ambiente de build. O código-fonte C/C++ é salvo em uma estrutura de arquivos parecida com a da biblioteca Jetpack e do pacote ZIP do AGDK.

Guias de integração

Para integrar a GameActivity ao app, siga as instruções destes guias:

Outros recursos

Para saber mais sobre GameActivity, consulte:

Feedback

Para informar bugs ou solicitar novos recursos, use o Issue Tracker da GameActivity.