Engines
O que funciona como está, o que precisa de um ajuste e o que a v1 não suporta.
Qualquer engine que exporte um build web de página única, sem threads, funciona. As restrições vêm do frame: um documento do começo ao fim, nenhum isolamento de origem cruzada e a tela cheia pelo SDK.
| Engine | Na v1 |
|---|---|
| Phaser | Funciona como está. |
| Construct 3 | Funciona como está. |
| HTML e JavaScript puros, Vite | Funciona como está. |
| Godot 4.3 ou mais novo | Exportado sem threads. |
| Unity | WebGL de uma thread só, com a tela cheia pelo SDK. |
| Builds com threads (SharedArrayBuffer) | Não suportados. |
| Jogos de várias páginas | Não suportados. |
Sem um bundler
Copie dist/uloggd-arcade.min.js do pacote para junto da página HTML da
engine, sirva-o com o jogo (veja
Sem um bundler na referência
do SDK) e carregue-o antes da engine:
<script src="./uloggd-arcade.min.js"></script>
<script>
window.uloggdArcade = UloggdArcade.createArcadeSDK({
appId: "ID_DO_SEU_APLICATIVO",
});
window.uloggdArcade.ready().catch(() => {});
</script>UloggdArcade é o SDK; window.uloggdArcade é a conexão do seu jogo, que as
seções abaixo chamam. Os dois são scripts clássicos e rodam em ordem:
coloque-os antes do carregador da engine, e a conexão existe quando a engine
começa.
Vite e JavaScript puro
O começo rápido usa um projeto Vite. Se um build é servido de um caminho e não da raiz
da origem (veja as
URLs de publicação imutáveis), ponha o
base do Vite em "./" para os arquivos serem encontrados ao lado da página.
O arquivo de prova continua precisando estar na raiz da origem.
Phaser
O this.scale.startFullscreen() do próprio Phaser pede tela cheia ao
navegador dentro do frame, o que é negado. Chame o SDK a partir de um
tratador de entrada:
this.input.keyboard?.on("keydown-F", () => {
arcade.commands.requestFullscreen().catch(() => {});
});O modo de escala RESIZE acompanha o tamanho do frame; LAYOUT_UPDATE ainda
dá a área segura.
Construct 3
Exporte com Web (HTML5). Carregue o SDK como acima e chame
window.uloggdArcade pelos scripts JavaScript do Construct. O pedido de tela
cheia do objeto Browser é negado dentro do frame: leve-o para
requestFullscreen.
Godot 4
O Godot 4.3 e os mais novos exportam para a web sem threads.
- No preset de exportação Web, desligue Thread Support. Uma exportação com threads precisa de isolamento de origem cruzada, que o player do uloggd não oferece.
- Deixe Progressive Web App desligado. O service worker dele existe para simular o isolamento de origem cruzada, e guardaria o seu build no armazenamento do uloggd.
- Carregue o SDK num shell HTML próprio, como acima, e chame-o do GDScript
pelo
JavaScriptBridge. Leve a tela cheia para o SDK em vez deDisplayServer.window_set_mode:
func request_fullscreen() -> void:
JavaScriptBridge.eval("window.uloggdArcade && window.uloggdArcade.commands.requestFullscreen()")Unity
- Faça o build para a plataforma Web (WebGL) sem multithreading.
Screen.fullScreenpede tela cheia ao navegador dentro do frame, o que é negado. Chame o SDK por um plugin.jslib, com o SDK carregado comowindow.uloggdArcadeno seu template WebGL:
// Assets/Plugins/WebGL/UloggdArcade.jslib
mergeInto(LibraryManager.library, {
UloggdRequestFullscreen: function () {
if (window.uloggdArcade) window.uloggdArcade.commands.requestFullscreen();
},
});using System.Runtime.InteropServices;
public static class UloggdArcade
{
[DllImport("__Internal")]
public static extern void UloggdRequestFullscreen();
}- Um build comprimido precisa que os arquivos
.brou.gzsejam servidos com oContent-Encodingcorrespondente, ou que Decompression Fallback esteja ligado.
Fora da v1
- Threads e SharedArrayBuffer. Precisam de isolamento de origem cruzada na página do uloggd, que a v1 não oferece.
- Jogos de várias páginas, recarregamentos e redirecionamentos. Qualquer navegação do frame encerra a partida.
- Popups, abas novas, downloads,
alerteconfirm. - Abrir links. Planejado para uma versão futura do SDK.
- Câmera, microfone, geolocalização, pagamentos e WebAuthn.
- Travar a orientação da tela. Declare no lançamento a orientação de que o jogo precisa.