Полные примеры
Три проекта содержат объяснения, изображения, загрузки и результаты проверок. Исходники нужны для разработки, архивы dist — для запуска или публикации. Создай свою игру: в источниках нет учётных данных автора и привязки к его Post.
| Пример | Что показывает |
|---|---|
| H5 · Star Sprint | HTML/JS- и Vite-версии одной игры |
| Unity · BoatAttack | Нативный WebGL с исходным кодом и ассетами |
| Roblox · Ball Game | Персонаж, сцена и правила, заново реализованные для Web |
Пути, патчи, координаты и версии относятся к конкретному проекту. Проверки датированы 2026-10-08; мобильный viewport не заменяет настоящий телефон.
Пример H5 · Star Sprint
Собери 5 звёзд за 45 секунд, избегая 2 роботов. Начальное здоровье — 3. WASD/стрелки перемещают, P ставит на паузу, R начинает заново. В мобильном viewport есть кнопки направлений. Исходники содержат HTML/JS и Vite.
Скачай и запусти
Распакуй в новую папку native-h5, чтобы package.json лежал в её корне. Перейди туда и выбери вариант:
python3 -m http.server 8000 --bind 127.0.0.1 --directory plain/distnpm ci
npm run devОткрой http://127.0.0.1:8000/ для простой версии или http://127.0.0.1:5173/ для Vite. В записи использован Move to Combos/native-h5 на рабочем столе; укажи свой путь.

Star Sprint локально: начало, движение, сбор звёзд и счёт.
Проверь и опубликуй
Начни игру, возьми звезду и проверь счёт; все 5 дают победу. Проверь урон от столкновений, проигрыш по времени, паузу и повтор. Для Vite останови dev и выполни:
npm run build
npm run previewПроверь http://127.0.0.1:4173/; простой вариант использует plain/dist. Опубликуй и сохрани свой combos.json.
Описанная Vite-публикация: pc,mobile, ревизия 1. Играть в Star Sprint , код Canvas 07752. Полные победы с клавиатурой записаны локально и онлайн. Мобильное управление проверено только в viewport, без настоящего телефона.

Первая звезда на публичной странице Combos.
Исходники и загрузки
index.html/src/style.css: Canvas, HUD, кнопки, расположение, сенсорное управление. src/main.js: ввод, движение, сбор, столкновения, время, исход и отрисовка. package.json/vite.config.js: скрипты и относительные URL. plain/dist: тот же вариант без сборки.
Фрагмент объясняет начисление очков; это не обязательный код интеграции:
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');Оба готовых архива содержат index.html прямо в корне после распаковки.
Пример Unity · BoatAttack
Используется официальный BoatAttack на коммите 91886a3ef1ac963aa10578fcaf1d59e9b6961ab3. Исходная версия — 6000.2.0b8; адаптация выполнена для Unity 6.3 LTS 6000.3.25f1, Apple Silicon ARM64. Сохранены лодки, водители, Island, вода, физика, ИИ и C#.
Получи и адаптируй
Установи Git LFS, клонируй в новую папку и скачай большие ассеты. Распакуй пакет адаптации в корень до двух команд git apply. Применяй патч только один раз.
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Не применяй повторно к уже адаптированному проекту. Пакет содержит изменения совместимости/версий, документацию и лицензии, без больших оригинальных ассетов, Library, dist и плагина Combos. Для своего проекта используй общую инструкцию Unity.
Экспортируй и начни гонку
Открой main_menu.unity, проверь меню и одиночную гонку в Play, затем останови. Сцены: main_menu.unity (0), level_Island.unity (1). Выбери Default, Gzip + fallback, Addressables при Player Build и вывод в dist.

Исходное меню BoatAttack в редакторе Unity.

Одиночная гонка: выбери Island, затем настрой лодку.
Документированный Build: 18:21:57–18:26:03, 246 секунд, 27 файлов, 5 Addressables bundles, всего 127,36 MiB, максимальный файл 94,58 MiB, ZIP 124,88 MiB. Ограничения соблюдены, index.html лежал в корне ZIP.
python3 -m http.server 8001 --bind 127.0.0.1 --directory distОткрой http://127.0.0.1:8001/. Пройди RACE → SINGLEPLAYER → ISLAND (1 круг) → NEXT → настройка лодки → RACE. Дождись вступления/отсчёта и нажми на игровое поле для фокуса. W/↑/пробел ускоряет, A/D поворачивает, R сбрасывает, F ставит на паузу/продолжает.
Публикация и проверка
Создай cover.png из реального кадра гонки. Создавай игру с --platform pc --screen-orientation landscape; update используй только при своей существующей привязке. Большим загрузкам может помочь --timeout 10m.
В записи тот же Post обновлён до ревизии 2, опубликован с submission_is_current=true. Играть в BoatAttack , код 08759. После остановки локальных серверов две независимые браузерные сессии вошли через публичную страницу/ссылку и проверили ускорение, повороты, паузу/продолжение и R в одной сессии. Звук был выключен. Основные файлы и 5 bundles загрузились публично, ошибок выполнения игры не наблюдалось.

Гонка в нативной Default-сборке на Combos.
Проверены загрузка и управление одиночной гонкой на PC в горизонтальной ориентации. Полная победа, сенсорное управление и реальные телефоны не проверялись. Предупреждения loader/движка остались; 401 профиля без входа на внешней странице записан отдельно от загрузки игры.
Что изменено
Сохранены код, ассеты и существующая WebGL-ветка воды. Unity создаёт Default без переписывания loader. Сцены, сжатие и Addressables настроены в штатном UI. Патч адаптирует редактор/Input System/URP и сериализацию. В UIPanelFade.shader добавлен _MainTex, нужный новой uGUI:
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}Прежние собственные Editor-скрипты сборки, шаблоны Combos и com.unity.pipeline удалены. Патч затрагивает 31 отслеживаемый файл относительно фиксированного коммита, включая README-migration.md, WEBGL-MIGRATION.md, LOCAL_SETUP.md и лицензии. Это материалы для повторения данного проекта, не универсальная миграция Unity.
Пример Roblox · Ball Game
Основа — Ball game open source , файл ball game.rbxl. Правила сохранены: ждать 5 секунд, протолкнуть розовый мяч между тремя смещёнными стенами, коснуться WinPiece, окрасить мяч в золотой и показать Winner.
Изучи оригинал
Открой и сыграй в Roblox Studio, останови и исследуй скрипты, аватар, сцену и свойства, не меняя .rbxl.

Исходный персонаж, трава, стены, серое основание и финиш.

Исходный GetWinner отслеживает контакт мяча с WinPiece.
Два скрипта создают мяч и определяют победу. Roblox обеспечивает рендеринг, персонажа, ввод, камеру, анимацию, физику и серверную среду. Мяч: 5×5×5 studs, трава: 18×1×74, центры стен: (22,17.5,34), (32,17.5,15), (21.5,17.5,-4). Это параметры только данного примера.
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)Для простых Part-сцен этот фрагмент только читает свойства и выводит их в Output через Command Bar при остановленном Play. Сложные меши, текстуры и скелеты требуют отдельной обработки. Команда не экспортирует готовую 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Соответствие исходников H5
| Оригинал | Браузер |
|---|---|
CreateBall: wait(5), Part, Neon | main.js: задержка, меш и динамическое твёрдое тело |
| GetWinner: Touched, PlayerWon | main.js: однократная победа, золотой мяч, Winner |
| Map1, WinPiece, точка появления | level.js + main.js: расположение, геометрия, коллизии, включая невидимые барьеры |
| Трава, кирпич, металл, земля, небо | environment.js: материалы и локальные текстуры |
| R15 Man, Pal Hair, футболка, джинсы | avatar.js: 15 сегментов тела, волосы, улыбка, одежда, белые подошвы |
| Humanoid/камера | main.js, avatar.js, camera.js: движение, прыжок, анимация, слежение, вращение, масштаб |
| Message / Hint | HTML/CSS HUD, экраны начала, паузы и победы |
Оригинал загружает аватар аккаунта во время исполнения. Здесь внешность воссоздана локальной геометрией и текстурами, без импорта официальных мешей Roblox. Простые Parts повторяют реальную планировку; в других проектах можно повторно использовать модели/текстуры с правом экспорта.

Аватар спереди: волосы, улыбка, сине-чёрный верх, тёмные брюки и белые подошвы.

Вид сбоку: волосы, сегменты тела и обувь.
В примере 1 stud = 0,3 м, начало координат (27,15,15), радиус мяча 0,75 м. Преобразование координат, массу, трение, затухание качения и ограничения скорости настрой под свою игру.

Воссозданный уровень с тремя препятствиями, границами и финишем.
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');
});Добавлены сенсорные движение/прыжок, пауза/продолжение, повтор, полный экран, осмотр аватара и сообщение об отсутствии WebGL. Аккаунты Roblox, Robux, синхронизация мультиплеера и облачные сохранения не перенесены. Это не полноценная среда Roblox.
Запусти и проверь
Распакуй в ball-game-h5 с package.json в корне. В комплекте level.js, avatar.js, environment.js, camera.js, main.js, SOURCE-MAPPING.md и исходные Lua в reference/.
npm ci
npm run devОткрой http://127.0.0.1:5174/. В записи путь — Move to Combos/ball-game-h5 на рабочем столе; используй свой. После начала жди мяч 5 секунд. WASD/стрелки двигают, пробел прыгает, перетаскивание вращает камеру, колесо меняет масштаб, P ставит на паузу, R повторяет, F включает полный экран. Осмотр аватара замораживает раунд, возврат продолжает его.

Локальный вид от третьего лица: физически толкай розовый мяч.
С исходной камеры обходи стены справа, слева, справа, затем войди в конечное углубление. Реальный контакт с WinPiece делает мяч золотым и показывает Winner. Локально пройдена полная победа клавиатурой и физикой; проверены приземление, пауза, повтор, камера и осмотр.

Полная локальная победа: золотой мяч и Winner.
Собери и опубликуй
Останови dev и проверь финальную сборку на http://127.0.0.1:4174/:
npm run build
npm run previewИсходники содержат cover.png. Создай свою игру, сохрани привязку для обновлений и проверь публичную ссылку без локального сервера. Записанное обновление персонажа/сцены — ревизия 2, опубликована с submission_is_current=true. Играть в Ball Game H5 , код 70261. Онлайн достигнута победа с клавиатурой; мобильные кнопки проверены только в viewport, не на телефоне.

Обновлённый Ball Game H5 на Combos при остановленном локальном сервере.
Источник: руководство по интеграции с Combos , проверено 2026-10-08 с CLI v1.14.2. Результаты относятся к запускам, описанным в оригинале.