Skip to Content
DocumentaciónEjemplos completos

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.

EjemploQué muestra
H5 · Star SprintVersiones HTML/JS y Vite del mismo juego
Unity · BoatAttackWebGL nativo con código y recursos originales
Roblox · Ball GamePersonaje, 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/dist
npm ci npm run dev

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

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 preview

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

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

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

Menú original de BoatAttack en Unity.

Configuración de un jugador: elige Island y después el barco.

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 dist

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

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.

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

GetWinner original detecta el contacto de la bola con WinPiece.

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 end

Correspondencia con H5

OriginalNavegador
CreateBall: wait(5), Part, Neonmain.js: espera, malla y cuerpo rígido dinámico
GetWinner: Touched, PlayerWonmain.js: victoria única, bola dorada y Winner
Map1, WinPiece, apariciónlevel.js + main.js: disposición, geometría y colisiones, incluidas barreras invisibles
Césped, ladrillo, metal, tierra, cieloenvironment.js: materiales y texturas locales
R15 Man, Pal Hair, camiseta, jeansavatar.js: 15 segmentos, cabello, sonrisa, ropa y suelas blancas
Humanoid/cámaramain.js, avatar.js, camera.js: movimiento, salto, animación, seguimiento, órbita y zoom
Message / HintHUD 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.

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

Vista lateral de cabello, segmentos del cuerpo y zapatos.

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.

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 dev

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

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.

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 preview

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

Ball Game H5 actualizado en Combos, con el servidor local detenido.


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.

Last updated on