SDK do Godot

Um addon em GDScript para Godot 4.2+ com os mesmos serviços do SDK do Unity.

Comentários de código e nomes da API ficam em inglês para corresponder aos SDKs.

Nesta página

Requisitos#

  • Godot 4.2 ou mais recente, GDScript. Exportações para desktop, mobile e web.
  • Sem dependências: apenas HTTPRequest, Crypto e FileAccess do Godot.

Instalação#

  1. Baixe o .zip do SDK do Godot na página do seu projeto ou na página de downloads.
  2. Descompacte-o no seu projeto de forma que a pasta seja res://addons/majacloud (mantenha o nome).
  3. Project ▸ Project Settings ▸ Plugins: ative Majacloud. O plugin adiciona o autoload Majacloud.

Configurações do projeto#

O plugin adiciona estas entradas em Project Settings ▸ General ▸ Majacloud:

ConfiguraçãoPadrãoSignificado
connection/base_urlO endereço desta instalação.
connection/project_idPainel ▸ Chaves de API.
connection/client_keyA chave pública pk_live_….
connection/config_public_keyPreenchida por Test connection; fixa a verificação da configuração remota.
advanced/timeout_seconds15Segundos até uma requisição falhar com timeout.
advanced/max_retries2Novas tentativas para requisições seguras em erros de rede e do servidor.
advanced/fetch_config_on_starttrueBusca a configuração remota quando o jogo inicia.
advanced/log_requestsfalseExibe cada requisição na saída.

Testar a conexão#

Project ▸ Tools ▸ Majacloud: Test connection chama a API com suas configurações, mostra o nome do projeto e o plano e salva a chave pública da configuração remota em majacloud/connection/config_public_key.

Configuração por código#

Chame configure() para trocar de ambiente pelo código. Ele substitui as configurações pelo resto da sessão:

GDScript
# Switch environments from code; the last argument pins the Remote Config key (PEM)
Majacloud.configure("https://staging.yourstudio.com", "<project id>", "pk_live_…", public_key_pem)

MajacloudResult#

Toda chamada é aguardada com await e retorna um MajacloudResult. Ela nunca quebra em erros de rede ou do servidor.

CampoSignificado
oktrue quando a chamada deu certo.
valueA resposta REST como Dictionary (veja a referência REST); números inteiros chegam como int.
errorVazio em caso de sucesso; caso contrário, um código estável como conflict ou network (veja erros).
messageUma explicação legível.
statusStatus HTTP; 0 quando o servidor não foi alcançado.
request_idBusque-o na página Logs.
detailsDados extras do servidor, ex.: next_claim_at.
is_retryable() e is_not_found().

Sinais#

Conecte-se a estes sinais para atualizar sua UI:

GDScript
func _ready() -> void:
	Majacloud.auth.player_changed.connect(_on_player_changed)
	Majacloud.auth.session_expired.connect(func(): show_sign_in_screen())
	Majacloud.remote_config.updated.connect(func(): apply_balance())

func _on_player_changed(player: Dictionary) -> void:
	$NameLabel.text = player.get("display_name", "")

Armazenamento no dispositivo#

A sessão de convidado é armazenada criptografada em user://majacloud/<project id>.session e restaurada na próxima abertura do jogo. A configuração remota verificada fica em cache ao lado dela para jogar offline, e user://majacloud/device.id guarda um ID de instalação aleatório (não baseado em hardware).

Exportações para web#

  • Sirva a exportação via HTTPS; a API envia os cabeçalhos CORS de que os navegadores precisam.
  • user:// fica no armazenamento do navegador, então as sessões sobrevivem a recarregamentos da página.
  • Chame link_account() a partir de um evento de entrada (por exemplo, o clique em um botão) para que o navegador permita a nova aba.

Busca em títulos de páginas, seções e texto.

↑↓ para navegar ↵ para abrir Esc para fechar