Exemplos completos
Os três projetos incluem explicações, imagens, downloads e resultados registrados. Código-fonte serve à continuidade do desenvolvimento; arquivos dist, à execução ou publicação. Crie seu próprio jogo: os exemplos não incluem credenciais nem vínculo do Post do autor.
| Exemplo | Demonstração |
|---|---|
| H5 · Star Sprint | Versões HTML/JS e Vite do mesmo jogo |
| Unity · BoatAttack | WebGL nativo com código e recursos originais |
| Roblox · Ball Game | Personagem, cena e regras reimplementados para navegador |
Caminhos, patches, coordenadas e versões são específicos de cada projeto. Os testes datam de 2026-10-08; verificar a viewport móvel não equivale a testar um celular real.
Exemplo H5 · Star Sprint
Colete 5 estrelas em 45 segundos, evite 2 robôs e comece com 3 pontos de vida. WASD/setas movem, P pausa e R reinicia. A viewport móvel mostra botões direcionais. O código contém versões HTML/JS e Vite.
Baixe e execute
Extraia em uma nova pasta native-h5, com package.json na raiz. Entre nela e escolha uma rota:
python3 -m http.server 8000 --bind 127.0.0.1 --directory plain/distnpm ci
npm run devAbra http://127.0.0.1:8000/ para a versão simples ou http://127.0.0.1:5173/ para Vite. O exemplo usou Move to Combos/native-h5 na área de trabalho; adapte o caminho.

Star Sprint local: início, movimento, coleta e pontuação.
Teste e publique
Inicie, colete uma estrela e confira os pontos; as 5 dão vitória. Verifique dano por colisão, derrota por tempo, pausa e reinício. No Vite, pare dev e execute:
npm run build
npm run previewConfira http://127.0.0.1:4173/; a rota simples usa plain/dist. Publique e guarde seu combos.json.
A publicação registrada usou Vite, pc,mobile, revisão 1. Jogar Star Sprint , código Canvas 07752. Houve vitórias completas com teclado localmente e online. Os controles móveis só foram verificados em viewport, não em celular real.

Primeira estrela coletada na página pública do Combos.
Código e downloads
index.html/src/style.css: Canvas, HUD, botões, layout e toque. src/main.js: entrada, movimento, coleta, colisões, tempo, resultados e desenho. package.json/vite.config.js: scripts e URLs relativas. plain/dist: equivalente sem build.
Este trecho explica a pontuação; não é código obrigatório para integrar ao Combos:
if (!star.collected && Math.hypot(
star.x - state.player.x, star.y - state.player.y
) < 35) {
star.collected = true;
state.score++;
}
if (state.health <= 0 || state.elapsed >= 45) show('lost');
else if (state.score === 5) show('won');Ambos os ZIPs prontos têm index.html na raiz extraída.
Exemplo Unity · BoatAttack
Usa o BoatAttack oficial no commit 91886a3ef1ac963aa10578fcaf1d59e9b6961ab3. A base usava 6000.2.0b8; a adaptação usa Unity 6.3 LTS 6000.3.25f1, Apple Silicon ARM64. Preserva barcos, pilotos, Island, água, física, IA e C#.
Obtenha e adapte
Instale Git LFS, clone em uma pasta nova e obtenha os recursos grandes. Extraia o pacote de adaptação na raiz antes dos dois comandos git apply. Aplique apenas uma vez.
git clone https://github.com/Unity-Technologies/BoatAttack.git BoatAttack
cd BoatAttack
git checkout 91886a3ef1ac963aa10578fcaf1d59e9b6961ab3
git lfs pull
git lfs fsck
git apply --check tracked-project-changes.patch
git apply tracked-project-changes.patchNão reaplique em um projeto já adaptado. O pacote inclui mudanças de compatibilidade/versão, documentação e licenças, sem recursos originais grandes, Library, dist ou plugin Combos. Para seu jogo, siga o guia Unity.
Exporte e entre na corrida
Abra main_menu.unity, teste o menu e configurações single-player em Play e pare. Configure main_menu.unity (0), level_Island.unity (1), Default, Gzip + fallback e Addressables no Player Build. Exporte para dist.

Menu original do BoatAttack no editor Unity.

Configuração single-player: escolha Island e depois o barco.
Build registrado: 18:21:57–18:26:03, 246 segundos, 27 arquivos, 5 bundles Addressables, total 127,36 MiB, maior arquivo 94,58 MiB, ZIP 124,88 MiB. Os limites foram atendidos e index.html ficou na raiz.
python3 -m http.server 8001 --bind 127.0.0.1 --directory distAbra http://127.0.0.1:8001/. Siga RACE → SINGLEPLAYER → ISLAND (1 volta) → NEXT → configuração do barco → RACE. Aguarde a introdução/contagem e clique no canvas. W/↑/espaço acelera, A/D vira, R redefine e F pausa/continua.
Publique e verifique
Use uma imagem real da corrida como cover.png. Crie com --platform pc --screen-orientation landscape; use update somente com seu vínculo existente. Envios grandes podem usar --timeout 10m.
O registro atualizou o mesmo Post para revisão 2, publicada com submission_is_current=true. Jogar BoatAttack , código 08759. Com servidores locais parados, duas sessões independentes acessaram a página pública/link e testaram aceleração, direção, pausa/retomada e, em uma sessão, R. O áudio ficou mudo. Arquivos principais e os 5 bundles vieram da implantação pública, sem erros de execução observados.

Corrida no build Default nativo hospedado no Combos.
Cobertura: carregamento e direção single-player em PC horizontal. Vitória na corrida inteira, toque móvel e celular real não foram verificados. Restaram avisos do loader/motor; o 401 de profile sem login na página externa foi registrado separadamente.
Alterações realizadas
Código, recursos e a lógica WebGL existente da água foram mantidos. O Unity gerou a página Default sem reescrever o loader. Cenas, compressão e Addressables foram configurados na UI nativa. O patch adapta editor/Input System/URP e serialização. UIPanelFade.shader ganha _MainTex, exigido pelo uGUI mais recente:
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}Scripts Editor personalizados, templates Combos e com.unity.pipeline anteriores foram removidos. O patch altera 31 arquivos rastreados do commit fixo, incluindo README-migration.md, WEBGL-MIGRATION.md, LOCAL_SETUP.md e licenças. É material de reprodução deste projeto, não uma migração Unity universal.
Exemplo Roblox · Ball Game
Baseado em Ball game open source , fornecido como ball game.rbxl. Mantém 5 segundos de espera, bola rosa empurrada por três paredes desencontradas, contato com WinPiece, bola dourada e Winner.
Examine o original
Abra e jogue no Roblox Studio; depois pare e examine scripts, avatar, cena e propriedades sem alterar o .rbxl.

Personagem, grama, paredes, base cinza e chegada originais.

GetWinner original detecta contato entre a bola e WinPiece.
Dois scripts criam a bola e detectam vitória. Roblox fornece renderização, personagem, entrada, câmera, animação, física e execução no servidor. Bola: 5×5×5 studs; grama: 18×1×74; centros das paredes: (22,17.5,34), (32,17.5,15), (21.5,17.5,-4). Valores exclusivos deste exemplo.
Ball.Touched:Connect(function(partTouching)
if partTouching.Name == "WinPiece" then
Ball.BrickColor = BrickColor.new("Gold")
warn("Winner!")
game.Workspace.Map1.PlayerWon.Value = true
end
end)Para cenas simples com Part, rode este trecho somente de leitura na Command Bar com Play parado e veja Output. Malhas, texturas e esqueletos complexos precisam de tratamento próprio. Isso não exporta um jogo H5.
for _, part in ipairs(workspace:GetDescendants()) do
if part:IsA("BasePart") then
print(part:GetFullName(), part.Position, part.Size,
part.Material, part.Transparency)
end
endMapeamento para H5
| Original | Navegador |
|---|---|
CreateBall: wait(5), Part, Neon | main.js: espera, malha e corpo rígido dinâmico |
| GetWinner: Touched, PlayerWon | main.js: vitória única, bola dourada e Winner |
| Map1, WinPiece, nascimento | level.js + main.js: layout, geometria e colisões, incluindo barreiras invisíveis |
| Grama, tijolo, metal, terra, céu | environment.js: materiais e texturas locais |
| R15 Man, Pal Hair, camisa, jeans | avatar.js: 15 segmentos, cabelo, sorriso, roupa e solas brancas |
| Humanoid/câmera | main.js, avatar.js, camera.js: movimento, salto, animação, acompanhamento, órbita e zoom |
| Message / Hint | HUD HTML/CSS e telas de início, pausa e vitória |
O original carrega o avatar da conta durante a execução. Esta versão recria a aparência com geometria e texturas locais, sem importar malhas oficiais Roblox. Parts simples seguem a disposição real; outros projetos podem reutilizar modelos/texturas cuja exportação seja permitida.

Avatar de frente: cabelo, sorriso, camisa azul/preta, calça escura e solas brancas.

Vista lateral do cabelo, segmentos do corpo e sapatos.
Convenção do exemplo: 1 stud = 0,3 m, origem (27,15,15), raio da bola 0,75 m. Conversão, massa, atrito, amortecimento e limites de velocidade devem ser ajustados ao seu jogo.

Fase reconstruída com três obstáculos, limites e chegada.
ballBody.addEventListener('collide', event => {
if (event.body !== winPiece.body || state.mode !== 'playing' || state.won) return;
state.won = true;
state.phase = 'finished';
pink.color.set('#fff000');
pink.emissive.set('#fff000');
glow.material.color.set('#fff54b');
document.querySelector('#status').textContent = 'Winner!';
show('won');
});Foram adicionados toque para mover/pular, pausa, reinício, tela cheia, inspeção do avatar e aviso de WebGL indisponível. Conta Roblox, Robux, sincronização multiplayer e saves na nuvem não foram migrados. Não é um runtime Roblox completo.
Execute e teste
Extraia para ball-game-h5 com package.json na raiz. Inclui level.js, avatar.js, environment.js, camera.js, main.js, SOURCE-MAPPING.md e Lua original em reference/.
npm ci
npm run devAbra http://127.0.0.1:5174/. O registro usou Move to Combos/ball-game-h5 na área de trabalho; adapte o caminho. Espere 5 segundos após iniciar. WASD/setas movem, espaço pula, arrastar orbita, roda dá zoom, P pausa, R reinicia e F alterna tela cheia. Inspecionar o avatar congela a rodada; voltar a retoma.

Terceira pessoa local: empurre fisicamente a bola rosa.
Na câmera padrão, passe pelas paredes à direita, esquerda, direita e entre no recuo final. O contato real com WinPiece deixa a bola dourada e mostra Winner. O teste local completou a vitória com teclado/física e verificou aterrissagem, pausa, reinício, câmera e inspeção do avatar.

Vitória local completa: bola dourada e Winner.
Gere e publique
Pare dev e confira a saída final em http://127.0.0.1:4174/:
npm run build
npm run previewO código inclui cover.png. Crie seu jogo, mantenha seu vínculo para atualizar e repita o teste público sem servidor local. A atualização registrada de personagem/cena foi revisão 2, publicada com submission_is_current=true. Jogar Ball Game H5 , código 70261. Houve vitória online com teclado; botões móveis só tiveram teste de viewport, sem validação em celular real.

Ball Game H5 atualizado no Combos após parar o servidor local.
Fonte: Guia de integração de desenvolvedores Combos , verificado em 2026-10-08 com CLI v1.14.2. Os resultados são os registrados no guia original.