Как перенести игру Chrome Dino в Telegram Mini App
Приветственный экран бота с кнопкой запуска Mini App
Как запустить легендарного Dino из Chrome в Telegram за 60 минут: пошаговое руководство
Пока большинство пользователей просто проводят время в мессенджерах, разработчики видят в них безграничное поле для экспериментов. Telegram превратился из обычного средства связи в мощную платформу для запуска приложений. Сегодня я продемонстрирую, как деконструировать классику и вдохнуть в неё новую жизнь, создав полноценный Mini App на базе оригинального движка T-Rex Runner из Chromium.
В этом материале мы разберем:
- Процесс адаптации исходного кода Chrome Dino под экосистему Telegram.
- Нюансы работы с BotFather и настройки интерфейса.
- Развертывание проекта на бесплатной инфраструктуре.
- Экономику проекта: временные и финансовые затраты.
Концепция и задачи
Основная цель — создать бесшовный игровой опыт прямо внутри мессенджера. Мы отказались от упрощенных клонов в пользу оригинального движка Chromium (лицензия BSD), чтобы сохранить ту самую физику и динамику, к которой привыкли миллионы пользователей. Весь стек технологий подбирался с учетом доступности: Node.js, Express и бесплатный хостинг с поддержкой HTTPS.
Технологический стек
- Ядро: Оригинальные
dino.jsиdino.css(Copyright The Chromium Authors). - Графика: HTML5 Canvas для отрисовки спрайтов.
- Backend: Node.js в связке с Express.
- Telegram API: Библиотека Telegraf для взаимодействия с ботом.
- Инфраструктура: GitHub для хранения кода и BotHost для деплоя.
Этап 1. Архитектура проекта
Для корректной работы приложения необходимо соблюдать четкую структуру директорий:
Dino-Chrome-Game/
├── public/ # Статические файлы игры
│ ├── images/ # Графические ассеты (1x и 2x для Retina)
│ ├── sounds/ # Аудиоэффекты (прыжок, столкновение, рекорд)
│ ├── dino.css # Стили интерфейса
│ ├── dino.js # Логика оригинального движка
│ └── index.html # Точка входа Mini App
├── app.js # Серверная логика и конфигурация бота
├── package.json # Описание зависимостей
└── .env # Конфиденциальные данные (API-ключи)
Этап 2. Создание интерфейса (index.html)
Мы используем разметку, максимально приближенную к исходникам Google Chrome, обеспечивая аутентичный внешний вид.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>T-Rex Runner</title>
<link rel="stylesheet" href="dino.css">
<script src="dino.js"></script>
</head>
<body id="t" class="offline">
<div id="main-frame-error" class="interstitial-wrapper">
<div id="main-content">
<div class="icon icon-offline"></div>
</div>
</div>
<div id="offline-resources">
<img id="offline-resources-1x" src="data:image/png;base64,...">
<img id="offline-resources-2x" src="data:image/png;base64,...">
</div>
</body>
</html>
Этап 3. Логика движка и стилизация
В файле dino.js сосредоточено более 800 строк кода, отвечающих за физику прыжков, генерацию препятствий (кактусов и птеродактилей) и смену дня и ночи. Мы сохранили все оригинальные классы: Runner, Trex, Horizon и DistanceMeter. Благодаря этому игра ощущается идентично браузерной версии.
Стили dino.css адаптированы под мобильные устройства и включают поддержку темной темы, которая активируется через инверсию цветов при достижении определенных игровых событий.
Этап 4. Backend-часть и интеграция бота
Для запуска игры в Telegram нам необходим сервер, который будет отдавать статику и обрабатывать команды бота.
const express = require('express');
const { Telegraf } = require('telegraf');
require('dotenv').config();
const path = require('path');
const app = express();
const bot = new Telegraf(process.env.BOT_TOKEN);
app.use(express.static('public'));
bot.start(async (ctx) => {
await ctx.replyWithPhoto(
{ url: 'https://example.com/welcome-image.jpg' },
{
caption: '🦖 Добро пожаловать в Dino Chrome!\n\nЛегендарный забег теперь доступен прямо в Telegram.',
parse_mode: 'Markdown',
reply_markup: {
inline_keyboard: [
[{ text: '🎮 Играть', web_app: { url: 'https://your-dino-app.bothost.ru' } }]
]
}
}
);
});
bot.launch();
app.listen(process.env.PORT || 3000);
Этап 5. Деплой и запуск
- GitHub: Загрузите ваш код в репозиторий.
- BotHost: Используйте специализированный хостинг для ботов. Авторизуйтесь через Telegram, укажите ссылку на ваш репозиторий и ветку
main. - BotFather: Настройте кнопку меню командой
/setmenubutton, указав URL вашего веб-приложения.

Анализ результатов
Весь процесс разработки и настройки занял менее часа:
- Подготовка и структурирование файлов — 10 минут.
- Настройка серверной логики — 20 минут.
- Развертывание и отладка — 25 минут.
- Конфигурация в BotFather — 2 минуты.
Финансовые затраты: 0 рублей. Мы использовали бесплатный тариф хостинга, SSL-сертификат от Let’s Encrypt и open-source код.
Заключение
Этот кейс подтверждает, что для создания качественного Telegram Mini App не всегда требуются сложные интеграции с внутренним API мессенджера. Использование проверенных временем движков позволяет в кратчайшие сроки выпускать продукты, готовые к взаимодействию с аудиторией. Исходный код проекта доступен по лицензии BSD, что открывает возможности для его дальнейшей модификации и коммерческого использования.

Capcom вдохновлялась Super Mario при создании боевой системы Onimusha Way of the Sword, считает итальянский мечник
Моддеры нашли способ повысить производительность с помощью DLSS на 61%, но у этого решения есть нюанс
Локи исчез из нескольких режимов Marvel Rivals перед началом десятого сезона
Sony объявила главные игры этой недели для консоли PlayStation 5
Настольная игра по мотивам сериала Space King собрала более 380 миллионов рублей
Sega объяснила причину отмены своего амбициозного проекта Super Game
Несколько СМИ приняли за правду розыгрыш Mega64 об анонсе PlayStation 6
Sony готовит масштабное обновление для PlayStation 5