Arcade
Leve um jogo web que você hospeda aos jogadores do uloggd, dentro do uloggd, com uma identidade verificada para cada jogador que aceitar.
O Arcade roda jogos web no uloggd.com. Você hospeda o jogo na sua própria origem HTTPS; o uloggd lista o jogo, abre essa URL num frame, numa página feita só para ele, e, quando o jogador aceita, entrega ao jogo uma identidade de curta duração assinada pelo uloggd. O uloggd nunca hospeda, intermedeia nem serve os arquivos de um jogo.
O Arcade está numa prévia só para convidados. Publicar está aberto às contas da lista da prévia. A documentação e o SDK são abertos a todos, então dá para construir e testar um jogo no simulador antes de receber o convite (veja Status da prévia).
Como as peças se encaixam
- O jogo é o seu site, na própria origem: um subdomínio por jogo. Ele roda
num frame com sandbox em
https://uloggd.com/{lang}/arcade/{slug}/play, de outro site em relação ao uloggd. - O SDK,
@uloggd/arcade-sdk, conversa com a página do uloggd em volta do frame. Ele recebe o contexto, pede o consentimento do jogador, obtém tokens de identidade, entra em tela cheia e fica sabendo quando o jogo vai fechar. - O seu servidor verifica os tokens de identidade offline, com as chaves públicas do uloggd, e recebe eventos de dados quando um jogador revoga, esquece o jogo, troca o apelido ou exclui a conta.
- O portal, na seção Arcade do seu aplicativo, tem cinco páginas: Visão geral, onde você ativa o Arcade, Página da loja, Lançamentos, Dados dos jogadores e URL de desenvolvimento, onde você abre o jogo no uloggd a partir da sua própria máquina. Toda mudança na página da loja e toda URL nova passa pela revisão de um moderador nomeado antes de chegar aos jogadores.
O que os jogadores veem, e o que você recebe
- Só joga quem está conectado. Durante a prévia, um jogador do Arcade tem pelo menos 16 anos, e todo jogo tem uma autoclassificação ClassInd de L a 16, aplicada na hora de abrir o jogo.
- O jogo recebe um id por jogo (
sub), diferente em cada jogo, e um apelido que o jogador escolhe. Nunca o e-mail, a conta do uloggd, a idade ou a data de nascimento. - Os seus servidores veem o endereço IP e o navegador do jogador, como qualquer site vê. A página da loja e o aviso do primeiro jogo contam isso ao jogador.
- Não há monetização na v1: nem compras, nem anúncios.
Quem pode publicar
O banco confere cada condição quando você ativa o Arcade num aplicativo:
- a conta está na lista da prévia;
- a verificação em duas etapas está ligada, e esta sessão entrou com ela;
- o e-mail está verificado, e a conta tem pelo menos 30 dias;
- você tem 18 anos ou mais;
- você aceitou os termos de desenvolvedor do Arcade atuais;
- a conta não está banida do site, e a equipe não a bloqueou para publicar.
Um aplicativo do Arcade é um dos seus aplicativos de desenvolvedor, então conta para o limite de 10 aplicativos por conta. Ativar o Arcade reserva o slug do aplicativo, o endereço da página da loja.
Quando os termos mudam. O uloggd registra a versão dos termos de
desenvolvedor do Arcade que você aceitou, com um resumo do texto. Quando sai
uma versão nova, a Visão geral pede que você a leia e aceite. Até lá, você
continua podendo editar rascunhos, verificar URLs, usar a URL de
desenvolvimento, retirar um envio e remover um jogo, e os jogos que já estão
no ar continuam no ar; mas enviar um lançamento ou a página da loja, e tornar
um lançamento ao vivo, respondem 403 forbidden com reason
terms_required.
Bloqueio para publicar. A equipe pode bloquear uma conta para publicar.
Uma conta bloqueada não ativa o Arcade, não edita, verifica, envia nem torna
ao vivo nada e não salva uma URL de desenvolvimento: essas ações respondem
403 forbidden com reason publisher_blocked. Ela continua podendo retirar
um envio e remover um jogo. Para pedir que um bloqueio seja revisto, escreva
para o contato da página Sobre nós.
Status da prévia
- Durante a prévia, publicar é só para convidados: o Arcade só é ativado nos
aplicativos de uma conta da lista da prévia, e uma conta fora dela recebe
not_allowlisted. - Para pedir um convite, escreva para o contato da página Sobre nós.
- A chave de identidade em uso é
arc-2026-10(veja Chaves públicas atuais). - O SDK está na versão 0.2.0: módulos ES, CommonJS e um build para uma tag script comum (veja SDK).
Começo rápido
- Crie um projeto Vite com
npm create vite@latest, e instale o SDK, que está no npm:npm install @uloggd/arcade-sdk. Crie o cliente como no exemplo abaixo. - Rode
npm run dev. Aberto direto emlocalhost, o SDK roda no simulador, offline: um jogador falso, tokens falsos, todo comando respondido. Veja Testes. - Prepare o aplicativo no portal. Em Aplicativos, abra o aplicativo e, na seção Arcade, ative o Arcade em Visão geral. Use Salvar rascunho na Página da loja e, em Lançamentos, crie um Novo lançamento com a URL que o jogo vai ter depois de publicado. Por enquanto, um rascunho basta.
- Teste dentro do uloggd com a URL de desenvolvimento. Em
URL de desenvolvimento, defina
http://localhost:5173/com esse rascunho como lançamento base e depois Abrir no uloggd: o jogo roda no player do próprio uloggd enquanto ainda está na sua máquina (veja URL de desenvolvimento). - Prepare a hospedagem. Acrescente
public/.well-known/uloggd-arcade.jsoncom o id do aplicativo que o portal mostra (veja O arquivo de prova) e envie o cabeçalhoContent-Security-Policy: frame-ancestors https://uloggd.com 'self'(veja Deixe o uloggd abrir o jogo num frame). Publique em qualquer hospedagem HTTPS, uma origem por jogo. - No seu servidor, copie os trechos de Identidade, que verifica os tokens de identidade, e de Eventos de dados, que recebe os eventos de dados.
- De volta ao portal, no lançamento, Verificar URL, Testar e Enviar para revisão, e envie também a página da loja para revisão.
- Depois da aprovação, Tornar ao vivo. Os jogadores encontram o jogo quando a página da loja está aprovada e um lançamento está ao vivo.
import { createArcadeSDK } from "@uloggd/arcade-sdk";
const arcade = createArcadeSDK({
appId: "ID_DO_SEU_APLICATIVO",
mockWhenStandalone: true,
});
const { context } = await arcade.ready();
console.log(context.mode, context.locale);Sem bundler? O SDK também vem como um arquivo único para uma tag script comum: veja SDK.
A página da loja e os lançamentos
- A página da loja tem o nome, a frase de apresentação, a descrição, as imagens, as tags, a classificação e quem responde pelos dados dos jogadores. Existe um rascunho por vez, e os jogadores continuam vendo a versão aprovada até um moderador aprovar a próxima. Só uma classificação mais alta vale assim que você envia.
- Os lançamentos são o que um moderador revisa: a URL de entrada, as capacidades, os escopos, a orientação e as plataformas, os terceiros que o jogo carrega e para quê, a URL de eventos de dados e notas para quem revisa. Um lançamento em rascunho pode ser editado; um enviado nunca muda. URL, escopo, capacidade, terceiro ou URL de eventos de dados novos são um lançamento novo, e o lançamento ao vivo continua no ar enquanto isso. Retirar tira da fila um lançamento enviado.
- Tornar ao vivo coloca um lançamento aprovado na frente dos jogadores. Antes, verifica a URL de novo, e recusa quando o provedor de hospedagem mudou desde a aprovação ou a aprovação tem mais de 90 dias. Para desfazer uma troca, torne ao vivo de novo o lançamento que estava ao vivo antes; qualquer um mais antigo passa de novo pela revisão, com Reenviar como novo lançamento.
- Remover do Arcade, em Visão geral, encerra a página para sempre. O
slug e a origem nunca vão para outra pessoa, e as evidências ficam guardadas
por 180 dias. Um aplicativo de desenvolvedor com um aplicativo do Arcade só
pode ser excluído depois de removido do Arcade, mesmo em rascunho: até lá,
excluí-lo é recusado com
409 conflictereasonremove_from_arcade_first.
Enviar um lançamento, tornar um ao vivo, enviar a página da loja e remover o
aplicativo exigem uma sessão que entrou há pouco, com a verificação em duas
etapas, e cada um manda um e-mail para você. Uma sessão mais antiga recebe
403 forbidden com reason reauthentication_required: entre de novo.
A API por trás do portal
O portal lê e escreve pelas rotas de /api/v1 documentadas em
Recursos: Arcade. Toda rota que mexe nos
seus aplicativos ou nos jogos de um jogador é só para sessão, e recusa uma
chave com 403 forbidden. O diretório, as páginas da loja e as chaves de
identidade são públicos.
Para onde ir agora
- Hospedagem: a origem, as regras da URL, o arquivo de prova e a verificação.
- O frame: o sandbox, as permissões, o armazenamento e os parâmetros de abertura.
- SDK: cada comando, evento, erro e código de fechamento, e o simulador.
- Identidade: o token, como verificá-lo e as chaves públicas.
- Verificação em outras linguagens: as mesmas conferências para servidores que não rodam JavaScript, e os códigos de recusa.
- Eventos de dados: o que o seu servidor recebe quando um jogador revoga, esquece o jogo, troca o apelido ou exclui a conta.
- Testes: o simulador, o modo de teste e a URL de desenvolvimento, antes de enviar.
- Política de revisão: o que quem revisa confere e os motivos de recusa.
- Deveres de privacidade: os campos de controlador e o que os termos pedem.
- Engines: sem bundler, Vite, Phaser, Construct 3, Godot 4 e Unity.