Ejemplos completos
Los tres proyectos incluyen explicaciones, capturas, descargas y resultados registrados. El código sirve para continuar el desarrollo; dist, para ejecutar o publicar. Crea tu propio juego: las fuentes no incluyen credenciales ni vínculo al Post del autor.
| Ejemplo | Qué muestra |
|---|---|
| H5 · Star Sprint | Versiones HTML/JS y Vite del mismo juego |
| Unity · BoatAttack | WebGL nativo con código y recursos originales |
| Roblox · Ball Game | Personaje, escena y reglas reimplementados en Web |
Rutas, parches, coordenadas y versiones corresponden a cada proyecto. Las pruebas son del 2026-10-08; una revisión de viewport móvil no equivale a probar un teléfono real.
Ejemplo H5 · Star Sprint
Recoge 5 estrellas en 45 segundos evitando 2 robots, con 3 puntos de vida iniciales. WASD/flechas mueven, P pausa y R reinicia. La vista móvil ofrece botones direccionales. El código incluye versiones HTML/JS y Vite.
Descarga y ejecuta
Extrae en una nueva carpeta native-h5 con package.json en la raíz. Entra y elige una ruta:
python3 -m http.server 8000 --bind 127.0.0.1 --directory plain/distnpm ci
npm run devAbre http://127.0.0.1:8000/ para la versión simple o http://127.0.0.1:5173/ para Vite. La ruta documentada era Move to Combos/native-h5 en el escritorio; usa la tuya.

Star Sprint local: inicio, movimiento, recogida y puntuación.
Prueba y publica
Inicia, recoge una estrella y comprueba los puntos; las 5 dan la victoria. Revisa daño por colisión, derrota por tiempo, pausa y reinicio. En Vite, detén dev y ejecuta:
npm run build
npm run previewPrueba http://127.0.0.1:4173/; la versión simple usa plain/dist. Publica y conserva tu combos.json.
La versión registrada usó Vite, pc,mobile, revisión 1. Jugar Star Sprint , código Canvas 07752. Se completaron victorias con teclado localmente y en línea. Los controles móviles solo se revisaron en viewport, no en teléfono real.

Primera estrella recogida en la página pública de Combos.
Código y descargas
index.html/src/style.css: Canvas, HUD, botones, diseño y controles táctiles. src/main.js: entrada, movimiento, recogida, colisiones, tiempo, resultados y dibujo. package.json/vite.config.js: scripts y URL relativas. plain/dist: equivalente sin compilación.
Este fragmento explica la puntuación; no es código obligatorio de integración:
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 ZIP contienen index.html en la raíz al extraer.
Ejemplo Unity · BoatAttack
Usa BoatAttack oficial en el commit 91886a3ef1ac963aa10578fcaf1d59e9b6961ab3. La base usaba 6000.2.0b8; esta adaptación, Unity 6.3 LTS 6000.3.25f1, Apple Silicon ARM64. Conserva barcos, pilotos, Island, agua, física, IA y C#.
Obtén y adapta
Instala Git LFS, clona en una carpeta nueva y descarga los recursos grandes. Extrae la adaptación en la raíz antes de los dos comandos git apply. Aplica el parche solo una 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.patchNo lo reapliques a un proyecto adaptado. El paquete contiene cambios de compatibilidad/versión, documentación y licencias, sin recursos originales grandes, Library, dist ni plugin Combos. Para tu juego, sigue la guía Unity.
Exporta y entra a la carrera
Abre main_menu.unity, comprueba menú y opciones de un jugador en Play y detén. Escenas: main_menu.unity (0), level_Island.unity (1). Usa Default, Gzip + fallback y Addressables al generar Player. Exporta a dist.

Menú original de BoatAttack en Unity.

Configuración de un jugador: elige Island y después el barco.
Build registrado: 18:21:57–18:26:03, 246 segundos, 27 archivos, 5 bundles Addressables, 127,36 MiB totales, archivo mayor 94,58 MiB, ZIP 124,88 MiB. Cumplió los límites y dejó index.html en la raíz.
python3 -m http.server 8001 --bind 127.0.0.1 --directory distAbre http://127.0.0.1:8001/. Sigue RACE → SINGLEPLAYER → ISLAND (1 vuelta) → NEXT → configurar barco → RACE. Espera introducción y cuenta regresiva y haz clic en el canvas. W/↑/espacio acelera, A/D gira, R restablece y F pausa/reanuda.
Publica y verifica
Usa una captura real de carrera como cover.png. Crea con --platform pc --screen-orientation landscape; actualiza solo si existe tu vínculo. Para subidas grandes puedes usar --timeout 10m.
La prueba actualizó el mismo Post a revisión 2, publicada con submission_is_current=true. Jugar BoatAttack , código 08759. Con servidores locales detenidos, dos sesiones independientes entraron desde la página pública/enlace y probaron aceleración, dirección, pausa/reanudación y R en una sesión, con audio silenciado. Archivos principales y los 5 bundles cargaron públicamente sin errores de juego observados.

Carrera en Combos con la versión Default nativa.
Alcance: carga y conducción de un jugador en PC horizontal. Victoria completa, controles táctiles y teléfonos reales no se verificaron. Persisten advertencias de loader/motor; el 401 de profile sin sesión en la página exterior se registró por separado.
Qué cambió
Se conservaron código, recursos y la rama WebGL existente del agua. Unity generó Default sin reescribir loader. Escenas, compresión y Addressables se guardaron en la UI nativa. El parche adapta editor/Input System/URP y serialización. UIPanelFade.shader agrega _MainTex, requerido por uGUI reciente:
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}Se retiraron scripts Editor personalizados, plantillas Combos y com.unity.pipeline anteriores. El parche modifica 31 archivos versionados respecto al commit fijo, incluidos README-migration.md, WEBGL-MIGRATION.md, LOCAL_SETUP.md y licencias. Es material para reproducir este proyecto, no una migración universal.
Descargar adaptación BoatAttack.
Ejemplo Roblox · Ball Game
Basado en Ball game open source , distribuido como ball game.rbxl. Conserva la espera de 5 segundos, empujar la bola rosa entre tres paredes desalineadas, tocar WinPiece, volver la bola dorada y mostrar Winner.
Examina el original
Abre y juega en Roblox Studio; detén y revisa scripts, avatar, escena y propiedades sin cambiar el .rbxl.

Personaje, césped, paredes, base gris y meta originales.

GetWinner original detecta el contacto de la bola con WinPiece.
Dos scripts crean la bola y detectan la victoria. Roblox aporta renderizado, personaje, entrada, cámara, animación, física y entorno servidor. Bola: 5×5×5 studs; césped: 18×1×74; centros de paredes: (22,17.5,34), (32,17.5,15), (21.5,17.5,-4). Son valores exclusivos del ejemplo.
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)En escenas Part simples, ejecuta este fragmento de solo lectura en Command Bar con Play detenido para mostrar propiedades en Output. Mallas, texturas y esqueletos complejos requieren tratamiento separado. No exporta un juego 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
endCorrespondencia con H5
| Original | Navegador |
|---|---|
CreateBall: wait(5), Part, Neon | main.js: espera, malla y cuerpo rígido dinámico |
| GetWinner: Touched, PlayerWon | main.js: victoria única, bola dorada y Winner |
| Map1, WinPiece, aparición | level.js + main.js: disposición, geometría y colisiones, incluidas barreras invisibles |
| Césped, ladrillo, metal, tierra, cielo | environment.js: materiales y texturas locales |
| R15 Man, Pal Hair, camiseta, jeans | avatar.js: 15 segmentos, cabello, sonrisa, ropa y suelas blancas |
| Humanoid/cámara | main.js, avatar.js, camera.js: movimiento, salto, animación, seguimiento, órbita y zoom |
| Message / Hint | HUD HTML/CSS y pantallas de inicio, pausa y victoria |
El original carga el avatar de la cuenta durante la ejecución. Esta versión lo recrea con geometría y texturas locales, sin importar mallas oficiales Roblox. Los Parts simples siguen la distribución real; otros proyectos pueden reutilizar modelos/texturas con permiso de exportación.

Avatar de frente: cabello, sonrisa, camiseta azul-negra, pantalón oscuro y suelas blancas.

Vista lateral de cabello, segmentos del cuerpo y zapatos.
Convención: 1 stud = 0,3 m, origen (27,15,15), radio 0,75 m. Ajusta conversión, masa, fricción, amortiguación del rodamiento y límite de velocidad para tu juego.

Nivel reconstruido con tres obstáculos, límites y meta.
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');
});Se agregaron movimiento/salto táctil, pausa, reinicio, pantalla completa, inspección de avatar y aviso de WebGL no disponible. No se migraron cuentas Roblox, Robux, sincronización multijugador ni guardado en la nube. No es un runtime Roblox completo.
Ejecuta y prueba
Extrae en ball-game-h5 con package.json en la raíz. Incluye level.js, avatar.js, environment.js, camera.js, main.js, SOURCE-MAPPING.md y Lua original en reference/.
npm ci
npm run devAbre http://127.0.0.1:5174/. La prueba usó Move to Combos/ball-game-h5 en el escritorio; adapta la ruta. Espera 5 segundos al iniciar. WASD/flechas mueven, espacio salta, arrastrar orbita, rueda acerca, P pausa, R reinicia y F activa pantalla completa. Inspeccionar el avatar congela la partida; volver la reanuda.

Tercera persona local: empuja físicamente la bola rosa.
Desde la cámara inicial, pasa las paredes por derecha, izquierda, derecha, y entra en el hueco final. El contacto real con WinPiece vuelve dorada la bola y muestra Winner. La prueba local completó la victoria con teclado/física y revisó aterrizaje, pausa, reinicio, cámara e inspección.

Victoria local completa: bola dorada y Winner.
Genera y publica
Detén dev y comprueba la salida final en http://127.0.0.1:4174/:
npm run build
npm run previewEl código incluye cover.png. Crea tu juego, conserva el vínculo para actualizar y prueba el enlace público sin servidor local. La actualización documentada de personaje/escena fue revisión 2, publicada con submission_is_current=true. Jugar Ball Game H5 , código 70261. Se completó una victoria en línea con teclado; los botones móviles solo se revisaron en viewport, sin teléfono real.

Ball Game H5 actualizado en Combos, con el servidor local detenido.
- Código H5 completo, referencias Lua y correspondencias
- Versión lista con index.html en la raíz extraída
Fuente: Guía de integración de Combos , revisada el 2026-10-08 con CLI v1.14.2. Los resultados corresponden a las pruebas documentadas en la guía original.