Как разместить веб-демо игры: где хостить браузерную версию
Веб-демо игры — это папка статики: загрузите её на itch.io и получите ссылку, страницу игры и девлог бесплатно. Разбор лимитов, грабель движков и Steam.
Веб-демо игры — это папка статических файлов, и почти любой статический хостинг её отдаст. Загрузите эту папку на itch.io — и за один шаг, бесплатно, получите ссылку, которой можно делиться, страницу игры, девлог и базовую аналитику. Всё остальное в этой статье — о том, как осознанно выбрать другой хостинг и как починить те несколько особенностей движков и браузеров, из-за которых рабочая сборка умирает на настоящем сервере.
Ситуация повторяется из читок сообществ, которые мы проводим: сборка наконец-то запускается, и разработчику нужно, чтобы незнакомые люди нажали на ссылку и сыграли — без установщика, без аккаунта, без страницы магазина на пути. Веб-ссылка — самый дешёвый цикл проверки в играх. Подводит не сама ссылка, а работа вокруг неё: где живёт экспортированная папка, какой хостинг шлёт те заголовки ответов, которых ждёт сборка, и что ломается, когда демо встречает Safari или телефон. Статья закрывает выбор хостинга, грабли конкретных движков и ошибки, каждая из которых стоит половины дня. Честная оговорка сразу: этот блог принадлежит Egmatic, no-code-редактору двухмерных игр в пре-альфе, и при чём тут хостинг демо — ближе к концу.
Короткий ответ
| Ваша ситуация | Куда выкладывать | Что получите |
|---|---|---|
| Нужна работающая ссылка уже сегодня | itch.io | Бесплатная страница игры, запуск в браузере, девлог, аналитика; до 1 ГБ на файл по умолчанию |
| Нужен свой домен или вставка в свой сайт | GitHub Pages или Cloudflare Pages | Полный контроль над файлами и заголовками; бесплатные тарифы с опубликованными лимитами |
| Нужны игроки, а не просто ссылка | CrazyGames, Poki, Newgrounds | Готовая аудитория, ревью, доля дохода |
| У движка есть свой хостинг в один клик | gd.games для GDevelop, GX.games для GameMaker | Ноль настройки, мгновенный адрес |
| Цель — запуск в Steam | Демо в Steam, веб-демо рядом | Якорь на странице магазина и уведомления о вишлистах; веб-ссылка всё равно гуляет везде |
Рекомендация по умолчанию — itch.io, и не потому, что это лучший статический хостинг. А потому что демо публикуется вместе со своей страницей: обложка, описание, комментарии, девлог для обновлений и счётчики запусков, которые показывают, нажимал ли кто-то вообще. Голый адрес на файловом хостинге не говорит ничего. Начинайте на itch.io, если нет конкретной причины не начинать, а дальше — о том, когда выигрывают альтернативы.
Что веб-демо собой на самом деле представляет
Веб-экспорт любого движка, если снять брендинг, даёт одно и то же: папку статических файлов. Экспорт Godot — это index.html, .js-загрузчик, бинарник .wasm с движком, пак .pck с вашей игрой и картинка-заставка. Unity, GDevelop, Construct и GameMaker различаются деталями, а не формой. Страница рисует игру в максимальном размере окна браузера — поэтому одна и та же папка работает и сама по себе на весь экран, и встроенной в iframe на игровом сайте.
Поэтому «хостинг» — в основном решённая задача. Статический файловый сервер с HTTPS — вот и всё требование. Без бэкенда, без базы данных, без рантайма. Осложнения приходят из трёх мест, и они будут повторяться по всей статье:
- Заголовки ответов. Многопоточные сборки Godot и сжатые сборки Unity ждут от сервера конкретных заголовков. Хостинги, которые их шлют, работают; которые не могут — нет.
- Размер файла. Хостинги различаются тем, сжимают ли они файлы на лету, а несжатая сборка WebAssembly может весить вчетверо больше сжатой.
- Правила браузера. Звук сам не заиграет, сохранения зависят от cookies и IndexedDB, а часть возможностей требует везде HTTPS. Ничто из этого не проявляется, когда вы проверяете папку двойным кликом по
index.html.
Вариант 1: itch.io — выбор по умолчанию
Создайте проект, отметьте, что игра запускается в браузере, загрузите экспортированную папку архивом — и страница живая. Лимиты задокументированы и редко мешают: файлы до 1 ГБ по умолчанию, повышение дают редко и только с обоснованием, и не больше 1000 файлов и папок на браузерную игру — одна из причин предпочесть упакованный формат движка россыпи отдельных файлов.
Две вещи стоит знать до загрузки. Первая: itch.io не сжимает файлы на лету, и игрок скачивает все байты, которые вы загрузили; документация Godot называет это прямо и рекомендует сжимать заранее то, что можно, и резать то, что нельзя. Несжатое демо на 400 МБ — демо, в которое никто не сыграет. Вторая: тем, кто дружит с командной строкой, стоит посмотреть на butler — инструмент загрузки itch, который патчит сборки вместо полной перезагрузки; это важно, когда демо на десятой итерации за неделю.
То, что itch даёт поверх хостинга, и есть причина начинать отсюда. Девлог — встроенное место для обновлений, на которое подписываются игроки. Аналитика считает просмотры и запуски. Комментарии собирают фидбэк, который молчаливый адрес разбросал бы по лентам Discord. Когда статья о подборе плейтестеров советует отправить тестерам ссылку с оговорённым временем и двумя вопросами, страница на itch — это та же ссылка, только в обёртке.
Вариант 2: статические хостинги — когда адрес должен быть вашим
GitHub Pages, Cloudflare Pages, Netlify и Vercel отдают статические папки на бесплатных тарифах. Вы теряете страницу игры и аудиторию — и получаете контроль. Этот путь — если демо должно жить на вашем домене, аккуратно вставляться в ваш сайт или нести заголовки ответов, которые игровая платформа не пошлёт.
Выбор решают опубликованные лимиты:
| Хостинг | Бесплатные лимиты, которые важны | Примечательно для веб-сборок |
|---|---|---|
| GitHub Pages | Сайт до 1 ГБ, мягкий лимит 100 ГБ трафика в месяц, мягкий лимит 10 сборок в час | Сжатие gzip на лету; HTTPS на доменах github.io; никакого серверного кода |
| Cloudflare Pages | 25 МиБ на файл, 20 000 файлов на сайт | Опубликованного лимита трафика нет; файл _headers позволяет задать правила COOP/COEP и MIME |
| Netlify, Vercel | Сопоставимые бесплатные тарифы с квотами трафика | Та же модель статической папки; годится для демо, влезающих в лимиты |
Две детали не дают этому пути остаться заглушкой. Файл _headers у Cloudflare — дешёвый ответ на проблему заголовков: кросс-оригин изоляция и MIME-типы становятся строками текстового файла, лежащего рядом со сборкой. А GitHub Pages сжимает на лету — документация Godot упоминает это по имени, — поэтому та же сборка может скачиваться заметно меньше, чем на хостинге, который отдаёт сырые байты.
Но цена реальна. У демо на yourname.github.io нет ни девлога, ни комментариев, ни счётчиков запусков, и без прямой ссылки его никто не найдёт. Статика — для демо, чью дистрибуцию вы уже контролируете: страница для прессы, рассылка, стенд на мероприятии с QR-кодом, вставка в собственный сайт.
Вариант 3: порталы — когда нужна аудитория
CrazyGames, Poki и Newgrounds размещают браузерные игры с настоящим трафиком и платят долю дохода вместо платы за хостинг. Документация Godot прямо называет Poki и CrazyGames веб-издателями, под совместимость с которыми сделан однопоточный экспорт. Публикация GDevelop в один клик ведёт на gd.games — собственный бесплатный хостинг со страницей игры и аналитикой, а веб-платформа GameMaker — GX.games, публикующий в мобильный веб одним кликом.
Портал — решение о дистрибуции, а не о хостинге, и просто так туда не попасть: заявки проходят ревью, сборки отвечают требованиям интеграции и качества, а ожидания игроков портала формируют то, каким может быть демо. Экономика не как в Steam: аудитория приходит с нулевым контекстом и с терпением вкладки браузера. Относитесь к порталам как ко второму дому для сборки, уже проверенной в другом месте, а не как к первой проверке.
Грабли движков, из-за которых демо умирает на реальных хостингах
Это режимы отказа, о которых стоит знать до экспорта, потому что каждый выглядит как «у меня же работало»:
| Движок | Что смотреть | Как чинить |
|---|---|---|
| Godot 4 | Многопоточные сборки требуют заголовков кросс-оригин изоляции (COOP/COEP) и HTTPS, иначе игра не запустится вообще | Экспортировать однопоточно; это дефолт с 4.3 и совместимый вариант для itch.io, Poki и CrazyGames |
| Godot 4 | Проекты на C# в веб не экспортируются; веб-экспорт целится только в WebGL 2.0 | GDScript для веб-сборки или Godot 3 для C# |
| Unity | Сжатые сборки требуют от сервера заголовков Content-Encoding (gzip или brotli), а .wasm — MIME-типа application/wasm | Включить Decompression Fallback (загрузчик больше, старт медленнее) там, где заголовки не выставить |
| Construct 3 | Бесплатный тариф: до 50 событий, 2 слоя, экспорт только HTML5 | Для вертикального среза хватает; платные тарифы снимают потолки |
| GDevelop | Граблей мало; HTML5 — родная платформа | Публикация в один клик на gd.games или экспорт папки и хостинг где угодно |
| GameMaker | Сборки GX.games заточены под саму платформу; самостоятельный веб-хостинг — отдельный HTML5-экспорт | Бесплатная лицензия покрывает некоммерческое использование; коммерческим релизам нужна платная |
Общее правило под таблицей: чем ближе ваш экспорт к формуле «один HTML-файл плюс один упакованный файл данных», тем меньше у хостинга способов его сломать. Потоки, загрузка расширений и экзотические ожидания MIME — вот где живёт трение хостинга.
Что такое демо в Steam и почему это не оно
Демо в Steam — не браузерная игра. Это отдельный идентификатор приложения, связанный с полной игрой: загружается и распространяется через Steam как любая сборка, скачивается игроками через клиент. Оно может выйти на странице «Скоро выйдет» до релиза, появляется там, где в магазине бесплатные игры, а его первый запуск открывает одноразовое уведомление о вишлистах, которое можно отправить в окне 14 дней — по-настоящему ценный маркетинговый ход.
Два формата демо закрывают разные шаги одной воронки. Демо в Steam конвертирует трафик страницы магазина в осознанные вишлисты; эту сторону разбирает наша статья о первых ста вишлистах. Веб-демо — ссылка, которая ходит везде: плейтест-тред, письмо в прессу, канал в Discord, стенд на фестивале. Используйте оба, когда можете, и веб-демо — первым: оно стоит полдня и учит тому же, чему научило бы скачиваемое демо.
Как заставить ссылку работать
Хостинг — это трубы. Ценность в том, куда идёт ссылка:
- Плейтест-раунды. Небольшие подобранные партии тестеров — как их собирать, разобрано в статье о том, как найти плейтестеров, — проходят по веб-ссылке без трения, и в этом весь смысл: между просьбой и игрой нет шага установки.
- Пресса и блогеры. Журналист, которому ради вашей игры нужно что-то устанавливать, обычно не доходит до запуска; ссылка, открывающаяся во вкладке, — иногда доходит.
- Свои каналы. Вставка на сайте, закреплённый пост в Discord, QR-код на мероприятии — всё ведёт в одну и ту же папку.
- Цикл после клика. Здесь начинается соблазн бэкенда: лидерборд для демо, сохранения, следующие за игроком, форма листа ожидания. У каждой из этих задач есть решение без сервера — лидерборды без сервера и облачные сохранения без сервера разобраны отдельно. Самому демо ничего из этого не нужно, чтобы его стоило выкладывать.
Одно дизайн-решение принадлежит демо, а не хостингу: клик или тап до старта игры. Браузеры не позволяют странице заиграть звук без действия пользователя, поэтому заставка с кнопкой «Старт» — не украшение, а разница между демо со звуком и демо, которое сочтут сломанным.
Частые ошибки
- Многопоточная сборка там, где заголовки не выставить. Веб-экспорт Godot или Unity с включённой многопоточностью требует заголовков COOP и COEP плюс HTTPS; без них игра не «работает медленно» — она не работает вообще. Однопоточный экспорт существует ровно для этого.
- Переименование и перетряхивание файлов экспорта. Веб-экспорт ждёт файлы под теми именами, которые дал экспорт. Загружайте папку как есть, с
index.htmlв корне, и не «прибирайте» непонятные файлы без расширения, которых вы не узнаёте. - Несжатый монстр. На хостинге без сжатия на лету игрок скачивает каждый загруженный вами байт. Один только бинарник WebAssembly сжимается gzip примерно до четверти размера, когда хостинг это поддерживает; где не поддерживает — байты на вас. Выключайте неиспользуемые модули движка, сжимайте текстуры, режьте демо до среза.
- Забыли, что веб-сборка публична. Всё, что лежит в папке, уходит каждому, кто открыл страницу, в читаемом виде. В треде сообщества, который мы читали в этом месяце, игрок уже пытался вытащить полную версию из загруженного демо. Прячьте контент на стороне сервера или не кладите его в сборку; считайте папку открытой книгой.
- Тест только на своей машине. Localhost прощает отсутствие HTTPS, один браузер прощает особенности WebGL в Safari и то, что телефоны гоняют WebAssembly в разы медленнее десктопа. Проверяйте размещённый адрес больше чем в одном браузере, прежде чем слать ссылку тем, кто важен.
- Демо без звука. Ограничения автозапуска аудио требуют сначала жеста пользователя. Стартовый экран решает это и заодно становится местом, где задают ожидания от демо.
- Девлог не ведётся. Итерация и есть контент. Десятая за неделю сборка — ровно тот материал, которого ждёт девлог на itch, и каждая запись снова уведомляет тех, кто уже следит за страницей.
Место Egmatic
Задача хостинга мала один раз и нудна навсегда: экспорт, проверка заголовков, сжатие, загрузка, обновление страницы, рассылка ссылки, повтор для следующей сборки. Отрезок работы между «оно запускается» и «в него играют» — издательская работа, и издательский слой — то, что Egmatic строит: no-code-редактор и движок двухмерных игр, чей слой выпуска ведёт игру от сцены до размещённой ссылки, а не обрывается на холсте, вручая вам папку для развёртывания. ИИ внутри работает как усилитель ремесла под вашим руководством: вы решаете, что меняется в сборке, он исполняет, и каждый файл остаётся вашим — что важнее всего именно в этом цикле, где двадцатая за неделю сборка всё ещё должна уехать к игрокам.
О стадии скажем прямо: Egmatic в пре-альфе, и мы не называем сроков, которых не сможем сдержать. Список ожидания на egmatic.com — место, где слой выпуска обретает форму, и место, где можно рассказать, чего не хватает вашему циклу демо: в пре-альфе именно приходящие сейчас запросы задают направление разработки.
Заключение
Начните с itch.io: страница вокруг сборки — половина ценности и весь цикл фидбэка. Переходите на статический хостинг, когда нужны свой домен, вставка в сайт или заголовки ответов, и помните про файл _headers Cloudflare и gzip на лету у GitHub Pages. К порталам относитесь как ко второму дому проверенной сборки, а демо в Steam — как к другому инструменту, нацеленному на страницу магазина, а не к замене гуляющей ссылки. Экспортируйте однопоточно, если нет причины и хостинга, которые согласны с обратным, сжимайте до загрузки, проверяйте размещённый адрес во втором браузере и ставьте один клик перед звуком. Вся работа — одна папка, один хостинг, одна ссылка; всё остальное — то, чему ссылка вас учит.
Источники
- Документация Godot Engine — Exporting for the Web: веб-экспорт как статические файлы (index.html, .js, .wasm, .pck, заставка); однопоточный экспорт поддерживается с Godot 4.3 и предпочитается ради совместимости с itch.io, Poki и CrazyGames; многопоточные экспорты требуют Cross-Origin-Opener-Policy: same-origin, Cross-Origin-Embedder-Policy: require-corp и защищённый контекст; GitHub Pages отдаёт gzip на лету, itch.io — нет; бинарник .wasm сжимается gzip примерно до четверти размера; требование WebGL 2.0; проекты на C# не экспортируются в веб из Godot 4; сохранения требуют cookies и IndexedDB; ограничения автозапуска аудио
- GitHub Docs — About GitHub Pages: опубликованный сайт до 1 ГБ; мягкий лимит трафика 100 ГБ в месяц; мягкий лимит 10 сборок в час; HTTPS на доменах github.io; только статические файлы, без серверных языков
- Cloudflare Docs — Pages limits: максимальный размер файла 25 МиБ; 20 000 файлов на сайт на бесплатном тарифе; 100 проектов на аккаунт; файлы
_headersс до 100 правил заголовков - Руководство Unity — Deploy a Web application: gzip как формат сжатия по умолчанию; сервер должен слать заголовки Content-Encoding, соответствующие сжатию сборки (gzip/.gz, brotli/.br), для нативной распаковки браузером; опция Decompression Fallback встраивает JavaScript-распаковщик ценой большего загрузчика и более медленной загрузки; потоковый WebAssembly требует MIME-тип application/wasm
- itch.io — ответы сообщества о лимитах загрузки, прочитано 24 сентября 2026: лимит файла по умолчанию 1 ГБ на загрузку, повышение дают редко и только с обоснованием; 1000 файлов и папок на загрузку браузерной игры
- GDevelop — документация о публикации, прочитано 24 сентября 2026: бесплатная публикация в один клик на gd.games из редактора; ручной экспорт HTML5 (Файл, Экспорт, Export as HTML5 Game) для самостоятельного хостинга на любом сервере
- GameMaker — документация о лицензиях и экспорте, прочитано 24 сентября 2026: бесплатно для некоммерческого использования среди не-консольных экспортов, включая веб; платные лицензии для коммерческих релизов; веб-платформа GX.games с раннером на WebAssembly и публикацией в один клик
- Construct 3 — бесплатный тариф проверен в нашем обзоре Construct 3 по construct.net: 50 событий, 2 слоя, HTML5 как единственный экспорт на бесплатном плане
- Документация Steamworks — Demos: демо как отдельный App ID, связанный с полной игрой, скачивается через Steam; доступность на страницах «Скоро выйдет»; одноразовое уведомление о вишлистах в окне 14 дней от первого запуска демо; демо появляются там, где бесплатные игры; деактивация и реактивация для фестивалей
Похожие статьи
MonoGame для инди: актуален ли фреймворк в 2026?
Да, MonoGame актуален в 2026 для инди, кому нужен бесплатный C#-фреймворк с чистыми портами. Stardew Valley и Celeste на семействе XNA.
Быстрое прототипирование: соберите игру за несколько часов
Прототип 2D-игры собирают за пару часов, а не за месяцы. Сузьте до одной механики и берите редактор с живым предпросмотром — без шага сборки.
GDevelop против Construct 3: какой редактор выбрать в 2026
GDevelop бесплатен и открыт (MIT); Construct 3 — подписка ($129,99/год Individual, $468,99/место Business). Цены, события, экспорт — сравнение за минуты.