Skip to Content
ДокументацияПолные примеры

Полные примеры

Три проекта содержат объяснения, изображения, загрузки и результаты проверок. Исходники нужны для разработки, архивы dist — для запуска или публикации. Создай свою игру: в источниках нет учётных данных автора и привязки к его Post.

ПримерЧто показывает
H5 · Star SprintHTML/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/dist
npm ci npm run dev

Открой http://127.0.0.1:8000/ для простой версии или http://127.0.0.1:5173/ для Vite. В записи использован Move to Combos/native-h5 на рабочем столе; укажи свой путь.

Star Sprint локально: начало, движение, сбор звёзд и счёт.

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.

Первая звезда на публичной странице 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.

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

Одиночная гонка: выбери Island, затем настрой лодку.

Одиночная гонка: выбери 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.

Гонка в нативной 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.

Скачать адаптацию BoatAttack.

Пример Roblox · Ball Game

Основа — Ball game open source , файл ball game.rbxl. Правила сохранены: ждать 5 секунд, протолкнуть розовый мяч между тремя смещёнными стенами, коснуться WinPiece, окрасить мяч в золотой и показать Winner.

Изучи оригинал

Открой и сыграй в Roblox Studio, останови и исследуй скрипты, аватар, сцену и свойства, не меняя .rbxl.

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

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

Исходный GetWinner отслеживает контакт мяча с WinPiece.

Исходный 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, Neonmain.js: задержка, меш и динамическое твёрдое тело
GetWinner: Touched, PlayerWonmain.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 / HintHTML/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.

Полная локальная победа: золотой мяч и 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 при остановленном локальном сервере.

Обновлённый Ball Game H5 на Combos при остановленном локальном сервере.


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

Last updated on