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:
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çãonative_app_glue
.
- Funções JNI da GameActivity, que oferecem suporte direto para a funcionalidade Java
da GameActivity e enfileiram os eventos em
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 umaSurfaceView
, 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 interfaceandroid_input_buffer
, que é separada daInputQueue
usada pelaNativeActivity
. - A
GameActivity
é uma classe derivada daAppCompatActivity
, que permite usar outros componentes do Jetpack facilmente. Os componentesActionBar
,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 daNativeActivity
fazem parte do framework e sempre são carregadas pelo SO. Somente anative_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á aGameActivity
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:
- Como parte da biblioteca do Android Jetpack (recomendado)
- Como um pacote ZIP disponível na página de downloads do AGDK
- Como código-fonte do AOSP.
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++:
- Descompacte o pacote que você transferiu por download.
- Nesse pacote, descompacte o arquivo GameActivity-release.aar.
- 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:
- Notas da versão da GameActivity e do AGDK.
- Usar GameTextInput em GameActivity
- Guia de migração da NativeActivity
- Documentação de referência da GameActivity
- Implementação da GameActivity
Feedback
Para informar bugs ou solicitar novos recursos, use o Issue Tracker da GameActivity.