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.