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.
Requisitos#
- Godot 4.2 ou mais recente, GDScript. Exportações para desktop, mobile e web.
- Sem dependências: apenas
HTTPRequest,CryptoeFileAccessdo Godot.
Instalação#
- Baixe o
.zipdo SDK do Godot na página do seu projeto ou na página de downloads. - Descompacte-o no seu projeto de forma que a pasta seja
res://addons/majacloud(mantenha o nome). - 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ção | Padrão | Significado |
|---|---|---|
connection/base_url | O endereço desta instalação. | |
connection/project_id | Painel ▸ Chaves de API. | |
connection/client_key | A chave pública pk_live_…. | |
connection/config_public_key | Preenchida por Test connection; fixa a verificação da configuração remota. | |
advanced/timeout_seconds | 15 | Segundos até uma requisição falhar com timeout. |
advanced/max_retries | 2 | Novas tentativas para requisições seguras em erros de rede e do servidor. |
advanced/fetch_config_on_start | true | Busca a configuração remota quando o jogo inicia. |
advanced/log_requests | false | Exibe 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:
# 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.
| Campo | Significado |
|---|---|
ok | true quando a chamada deu certo. |
value | A resposta REST como Dictionary (veja a referência REST); números inteiros chegam como int. |
error | Vazio em caso de sucesso; caso contrário, um código estável como conflict ou network (veja erros). |
message | Uma explicação legível. |
status | Status HTTP; 0 quando o servidor não foi alcançado. |
request_id | Busque-o na página Logs. |
details | Dados extras do servidor, ex.: next_claim_at. |
is_retryable() e is_not_found(). |
Sinais#
Conecte-se a estes sinais para atualizar sua UI:
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.