Skip to Content
DocumentaçãoExemplos completos

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.

ExemploDemonstração
H5 · Star SprintVersões HTML/JS e Vite do mesmo jogo
Unity · BoatAttackWebGL nativo com código e recursos originais
Roblox · Ball GamePersonagem, 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/dist
npm ci npm run dev

Abra 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.

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 preview

Confira 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.

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.patch

Nã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.

Menu original do BoatAttack no editor Unity.

Configuração single-player: escolha Island e depois o barco.

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 dist

Abra 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.

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.

Baixar adaptação BoatAttack.

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.

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

GetWinner original detecta contato entre a bola e WinPiece.

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 end

Mapeamento para H5

OriginalNavegador
CreateBall: wait(5), Part, Neonmain.js: espera, malha e corpo rígido dinâmico
GetWinner: Touched, PlayerWonmain.js: vitória única, bola dourada e Winner
Map1, WinPiece, nascimentolevel.js + main.js: layout, geometria e colisões, incluindo barreiras invisíveis
Grama, tijolo, metal, terra, céuenvironment.js: materiais e texturas locais
R15 Man, Pal Hair, camisa, jeansavatar.js: 15 segmentos, cabelo, sorriso, roupa e solas brancas
Humanoid/câmeramain.js, avatar.js, camera.js: movimento, salto, animação, acompanhamento, órbita e zoom
Message / HintHUD 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.

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

Vista lateral do cabelo, segmentos do corpo e sapatos.

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.

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 dev

Abra 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.

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.

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 preview

O 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.

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.

Last updated on