Como criamos o SPACE INVADERS: World Defense, um jogo de RA com tecnologia ARCore

SET 05, 2023
Dereck Bridie Developer Relations Engineer ARCore
Bradford Lee Product Marketing Manager Augmented Reality

Para comemorar o 45º aniversário do "SPACE INVADERS", colaboramos com a TAITO, desenvolvedora japonesa do jogo arcade original, e a UNIT9 para lançar o "SPACE INVADERS: World Defense", um jogo imersivo que aproveita a mais avançada tecnologia de RA baseada em localização. Jogadores do mundo todo podem sair para explorar a vizinhança local, defender a Terra contra invasores espaciais virtuais que surgem de estruturas próximas e marcar pontos destruindo-os, tudo com a realidade aumentada.

O jogo conta com nossa novíssima tecnologia ARCore: API Geospatial, API Streetscape Geometry e Geospatial Creator. Estamos ansiosos para mostrar os bastidores de desenvolvimento do jogo e como usamos nossos recursos e ferramentas mais recentes para criar a primeira jogabilidade por RA global processual.

API Geospatial: transforme o mundo em um playground

A API Geospatial permite que você anexe conteúdo remotamente a qualquer área mapeada pelo Google Street View e crie experiências imersivas mais ricas e sólidas vinculadas a locais do mundo real em escala global. O SPACE INVADERS: World Defense está disponível em mais de 100 países nas áreas com alta cobertura de serviço de posicionamento visual (VPS, na sigla em inglês) no Street View, adaptando a jogabilidade a ambientes urbanos movimentados, bem como a cidades e vilas menores.

Para jogadores que residem em áreas sem cobertura VPS, atualizamos recentemente o jogo para incluir o novo modo chamado Indoor Mode, que permite defender a Terra dos invasores espaciais em qualquer ambiente ou localização, internos ou externos.

O novo Indoor Mode no Space Invaders leva a jogabilidade imersiva para qualquer ambiente interno

Criação do fluxo de usuários inicial

A API Geoespatial ARCore usa imagens da câmera do dispositivo do usuário para digitalizar pontos de destaque e os compara com imagens do Google Street View, a fim de posicionar com precisão o dispositivo no espaço da realidade.

A API Geospatial é baseada no VPS com dezenas de bilhões de imagens no Street View para permitir que os desenvolvedores criem experiências ancoradas no mundo de modo remoto em mais de 100 países

Isso exige que o usuário segure o telefone e percorra a área para que dados suficientes sejam coletados de modo a posicioná-lo precisamente. Para fazer isso, empregamos uma técnica inteligente para fazer com que os usuários digitalizem a área ao exigir que eles rastreiem a nave espacial no campo de visão da câmera.

Para começar, siga a nave espacial para digitalizar os arredores locais

Com o uso desse fluxo de usuários, verificamos continuamente se a API Geospatial reuniu dados suficientes para uma experiência de alta qualidade:

if (earthManager.EarthTrackingState == TrackingState.Tracking)
{
        var yawAcc = earthManager.CameraGeospatialPose.OrientationYawAccuracy;
        var horiAcc = earthManager.CameraGeospatialPose.HorizontalAccuracy;
 
        bool yawIsAccurate = yawAcc <= 5;
        bool horizontalIsAccurate = horiAcc <= 10;
 
	return yawIsAccurate && horizontalIsAccurate;
}

Transformação do ambiente em playground

Depois da digitalização dos arredores, o jogo usa dados de malha da API Streetscape Geometry para, de modo algorítmico, criar uma experiência única de jogo em diferentes locais. Cada local do mundo real tem sua própria topografia e layout de cidade, o que afeta a jogabilidade de uma maneira única.

A jogabilidade varia de acordo com a localização, de cidades na República Tcheca (à esquerda) a cidades de Nova York (à direita)

Uma vez que, no jogo, os invasores espaciais podem surgir em edifícios, construímos casos de teste usando a geometria de edifícios obtida de diferentes partes do mundo. Isso garante que o jogo tenha um desempenho ideal em diversos ambientes, desde vilarejos locais a cidades movimentadas.

Uma visualização de como o algoritmo colocaria portais no mundo real

Entrada na dimensão do invasor

Nos estudos de pesquisa, descobrimos que pode ser cansativo para os usuários manter as mãos erguidas por um período prolongado para ter uma experiência de realidade aumentada. Esse conhecimento influenciou o desenvolvimento de jogabilidade – criamos a dimensão do Invasor para dar aos jogadores a chance de relaxar o braço que segura o telefone e melhorar o conforto do usuário.

O momento mais fantástico que realmente mostra a potência da API Geospatial é a transição entre a RA do mundo real e as dimensões 3D geradas virtualmente.

Transição da jogabilidade, da RA realista para a dimensão 3D

Esse efeito é obtido pela combinação da alimentação da câmera com o sombreador do ambiente virtual que renderiza os edifícios e o terreno em estilo wireframe distinto.

A dimensão do invasor aparece ao redor do jogador no Unity Editor, fazendo a transição perfeita entre os dois modos

Depois que o jogador entra na dimensão do Invasor, a nave espacial do jogador voa pela vizinhança local por um caminho gerado por algoritmos. Isso é feito com a criação de uma imagem de profundidade do ambiente do usuário a partir de uma câmera aérea. Nessa imagem, o canal vermelho representa edifícios e o canal azul representa o espaço que pode ser potencialmente usado para a rota de voo. Essa imagem é então usada para gerar uma grade com pontos que o caminho deve seguir, e um algoritmo de pesquisa A* é usado para resolver um caminho que segue todos os pontos.

Por fim, o caminho A-Star gerado é pós-processado para suavização de quaisquer possíveis instabilidades, curvas acentuadas e colisões.

Para suavizar o trajeto da nave espacial, a instabilidade é removida por amostragem do caminho ao longo de um intervalo definido de nós. Em seguida, determinamos se há curvas acentuadas analisando os ângulos ao longo do caminho. No caso de haver uma curva acentuada, introduzimos dois pontos adicionais para arredondá-la. Por fim, verificamos se esse caminho suavizado colide com algum obstáculo e o ajustamos para voar sobre ele, se algum for detectado.

8a-Depth-Composite-8B-3D-Path.png
Uma visualização do mapa de profundidade e um exemplo de caminho gerado na dimensão do invasor

Criação de uma experiência de jogo global

Uma das principais lições aprendidas com a construção do jogo foi a complexidade da geração contextual que exigiu testes no mundo todo. Com o Unity, trouxemos vários ambientes para os casos de teste, o que nos permitiu iterar e validar rapidamente as alterações nesses algoritmos. Isso nos deu confiança para implantar o jogo globalmente.

Visualização do SPACE INVADERS usando o Geospatial Creator

Usamos o Geospatial Creator, desenvolvido pela ARCore, e os blocos 3D fotorrealistas da Plataforma Google Maps para validar como o conteúdo virtual, como os invasores espaciais, apareceria ao lado de pontos de referência específicos de Tóquio no Unity.

Com os blocos 3D fotorrealistas, conseguimos visualizar invasores em locais específicos, inclusive na Torre de Tóquio, no Japão

Atualizações e lançamentos futuros

Desde o lançamento do jogo, temos analisado o feedback dos jogadores e estamos atualizando e melhorando ativamente a experiência de jogabilidade.

  • Incluímos um novo modo de jogabilidade, o Indoor Mode, que permite que todos os jogadores sem cobertura VPS ou jogadores que não querem usar o modo RA experimentem o jogo.
  • Para incentivar os usuários a jogar em RA, as pontuações foram reequilibradas para recompensar mais os jogadores que jogam externamente do que os jogadores que jogam internamente.

Faça o download do jogo no Android ou iOS hoje mesmo e reforce a barreira de uma força de elite de defesa da Terra para competir em sua vizinhança pela maior pontuação. Fique por dentro das últimas atualizações, seguindo-nos no Twitter (@GoogleARVR) para saber como estamos melhorando o jogo. Além disso, visite nossos sites da ARCore e do Geospatial Creator para saber como começar a criar com a tecnologia de RA do Google.