Exemple Roblox · Ball Game
Basé sur Ball game open source , fourni en ball game.rbxl. Les règles restent : attendre 5 secondes, pousser la balle rose entre trois murs décalés, toucher WinPiece, rendre la balle dorée et afficher Winner.
Examiner l’original
Ouvrez et jouez dans Roblox Studio, puis arrêtez et inspectez scripts, avatar, scène et propriétés sans modifier le .rbxl.

Personnage, herbe, murs, socle gris et arrivée d’origine.

GetWinner d’origine détecte le contact balle–WinPiece.
Deux scripts gèrent apparition et victoire ; Roblox fournit rendu, personnage, entrées, caméra, animation, physique et environnement serveur. Balle : 5×5×5 studs ; herbe : 18×1×74 ; centres des murs : (22,17.5,34), (32,17.5,15), (21.5,17.5,-4). Ces valeurs sont propres à cet exemple.
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)Pour une scène Part simple, cet extrait en lecture seule affiche les propriétés dans Output depuis Command Bar, Play arrêté. Maillages complexes, textures et squelettes demandent un traitement distinct. Il n’exporte pas un jeu H5 jouable.
for _, part in ipairs(workspace:GetDescendants()) do
if part:IsA("BasePart") then
print(part:GetFullName(), part.Position, part.Size,
part.Material, part.Transparency)
end
endCorrespondance avec H5
| Original | Navigateur |
|---|---|
CreateBall : wait(5), Part, Neon | main.js : délai, maillage et corps rigide dynamique |
| GetWinner : Touched, PlayerWon | main.js : victoire unique, balle dorée, Winner |
| Map1, WinPiece, apparition | level.js + main.js : disposition, géométrie, collisions, barrières invisibles incluses |
| Herbe, briques, métal, terre, ciel | environment.js : matériaux et textures locales |
| R15 Man, Pal Hair, haut, jean | avatar.js : 15 segments, cheveux, sourire, vêtements et semelles blanches |
| Humanoid/caméra | main.js, avatar.js, camera.js : mouvement, saut, animation, suivi, orbite, zoom |
| Message / Hint | HUD HTML/CSS, écrans de départ, pause et victoire |
L’original charge l’avatar du compte à l’exécution. Cette version reconstruit son apparence avec géométrie et textures locales, sans importer les maillages officiels Roblox. Les Parts suivent la disposition réelle ; d’autres projets peuvent réutiliser des modèles/textures autorisés à l’export.

Avatar de face : cheveux, sourire, haut bleu-noir, pantalon sombre et semelles blanches.

Vue latérale des cheveux, segments du corps et chaussures.
Convention : 1 stud = 0,3 m, origine (27,15,15), rayon 0,75 m. Conversion, masse, friction, amortissement du roulement et vitesse maximale doivent être réglés pour votre jeu.

Niveau reconstruit avec trois obstacles, limites et arrivée.
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');
});Ajouts Web : déplacement/saut tactiles, pause/reprise, nouvelle partie, plein écran, inspection de l’avatar et message WebGL indisponible. Comptes Roblox, Robux, synchronisation multijoueur et sauvegardes cloud ne sont pas migrés. Ce n’est pas un runtime Roblox complet.
Lancer et vérifier
Extrayez dans ball-game-h5 avec package.json à la racine. Sont inclus level.js, avatar.js, environment.js, camera.js, main.js, SOURCE-MAPPING.md et les Lua d’origine dans reference/.
npm ci
npm run devOuvrez http://127.0.0.1:5174/. L’essai utilisait Move to Combos/ball-game-h5 sur le Bureau ; adaptez le chemin. Après le départ, attendez 5 secondes. WASD/flèches déplacent, espace saute, glisser fait tourner la caméra, molette zoome, P met en pause, R recommence, F passe en plein écran. L’inspection de l’avatar fige la manche ; revenir la reprend.

Vue locale à la troisième personne : pousser physiquement la balle rose.
Depuis la caméra initiale, contournez les murs à droite, à gauche, à droite, puis entrez dans le renfoncement final. Le contact avec WinPiece rend la balle dorée et affiche Winner. Le test local a obtenu une victoire au clavier/physique et vérifié réception des sauts, pause, nouvelle partie, caméra et inspection.

Victoire locale complète : balle dorée et Winner.
Générer et publier
Arrêtez dev et vérifiez la sortie finale sur http://127.0.0.1:4174/ :
npm run build
npm run previewLes sources incluent cover.png. Créez votre jeu, gardez l’association pour les mises à jour et retestez le lien public sans serveur local. La mise à jour personnage/scène documentée est la révision 2, publiée avec submission_is_current=true. Jouer à Ball Game H5 , code 70261. Une victoire en ligne au clavier a été obtenue ; les boutons mobiles ont seulement été contrôlés en viewport, sans téléphone réel.

Ball Game H5 mis à jour sur Combos, serveur local arrêté.
- Sources H5 complètes, références Lua et correspondances
- Version prête avec index.html à la racine extraite
Source : Guide d’intégration Combos , vérifié le 2026-10-08 avec CLI v1.14.2. Les résultats correspondent aux essais consignés dans le guide original.