Как написать игру для телеграм

Возможно, кто-то о нас слышал. Мы — популярное интернет-издание по программированию. Мы не только пишем статьи на тему современной разработки, но и ищем способы, как держать аудиторию в постоянной заинтересованности к тому, что мы делаем.

Однажды мы решили, что нам нужно сделать бота. Бот должен был давать логические задачи в групповом чате в Telegram «Развиваем логику», закреплять их на то время, пока её решают, не давать новую, пока ответ кого-то из участников не наберёт десять (потом снизили до пяти) плюсов, а также вывешивать топ наиболее успешных решателей задачек.

Идея не приходит одна

Задача довольно простая, подумали мы, особенно учитывая волну популярности ботов и количество материала в сети по этой теме. Однако материала не очень качественного: кто-то не использует композер, а кто-то даже пишет весь код в одном файле-обработчике, полагая, очевидно, будто количество файлов влияет на скорость работы кода.

Сначала бот должен был просто давать задачи, причём их можно было пропускать, постоянно вызывая одну и ту же команду. Это первая проблема, которую мы стали решать. Выход нашёлся почти сразу: сохранение состояния бота (а точнее, текущей команды) в базе. Другими словами, получая команду /get, бот даёт задачу и сохраняет команду в базе.

В следующий раз, перед тем как отреагировать на сообщения в чате, бот сравнивает команду, которую получил прямо сейчас, с последней командой в базе. Если они совпадают, бот никак не реагирует и вдобавок удаляет команду пользователя, чтобы она не мусорила чат. Согласитесь, это выглядит как хорошее решение.

После запуска бота в работу мы обнаружили ещё одну проблему: хэштеги не очень удобны для поиска. Ведь задача может уйти далеко наверх, а листать до неё или забивать в поиске — достаточно неинтересное занятие, чтобы стравливать его пользователю. Поэтому мы решили сразу же закреплять задачу, которую даёт бот. Причём закрепляет как раз он сам, а не мы (и да, делает это без уведомлений).

Ну и напоследок ещё одна проблема, которую мы с успехом решили. Некоторые задачи предполагали не точное решение, а наиболее подходящее. Как в таком случае должен поступить админ и чей ответ выбрать?

Поэтому мы подумали, что коллективное решение намного справедливее решения одного человека, и дали пользователям выбирать самим, помечая плюсом сообщение, с которым они согласны.

Какое решение быстрее наберёт пять плюсов, то и выбирается ботом как лучшее. Это хорошее решение не только с точки зрения справедливости, но и автоматизации: нам больше не придётся следить за чатом и читать все ответы.

Подготовка к созданию

Дело осталось за малым: написать бота. Мы ограничились Composer, библиотекой telegram-bot-sdk и symfony/dotenv для парсинга .env-файла. Весь код приводить не буду: он большой. Посмотреть на то, что получилось, можно по ссылке.

Composer — это стандарт при разработке на PHP. Он позволяет скачивать сторонние библиотеки на проект и предоставляет удобный механизм по автозагрузке классов. Вся работа с Composer происходит через консоль и в файле composer.json. Обычно он выглядит так:

// composer.json
{
«require»: {
«irazasyed/telegram-bot-sdk»: «3.*@dev»,
«symfony/dotenv»: «^4.2»
},
«autoload»: {
«psr-4»: {
«App\»: «src/»
}
}
}

Если вы разрабатываете не на фреймворке, то во множестве случаев создаёте composer.json самостоятельно и заполняете секцию autoload, которая загружает ваши классы по правилу psr-4, о котором можно найти много информации в интернете.

Далее вы выполняете команду composer install, и автозагрузка начинает работать. Также не забудьте про библиотеки, которые нужно установить, для этого выполните в терминале в папке с проектом следующие две команды:

composer require irazasyed/telegram-bot-sdk
composer require symfony/dotenv

И тогда ваш composer.json станет похож на тот, что я показывал выше.

Mr. Bot

Сразу же продемонстрирую готовую структуру проекта:

Файл app.php является точкой входа в наше приложение, на который мы вешаем веб-хук (это значит, что бот не будет постоянно опрашивать сервер на наличие обновлений; он их будет получать только тогда, когда они будут). Вот как он выглядит:

// app.php

<?php
use AppBotCommonChatHandler;
use AppBotPrivateChatHandler;
use AppHandler;
use AppStorageDB;
use TelegramBotApi;

require __DIR__ .’/vendor/autoload.php’;

$settings = require __DIR__ . ‘/config/settings.php’;

$api = new Api($settings[‘token’]);
$bot = new Handler($api);
$db = new DB($settings[‘db’]);
if ($bot->getChatType() === «private») {
(new PrivateChatHandler($bot, $db))->start();
} elseif ($bot->getChatType() === «supergroup») {
(new CommonChatHandler($bot, $db))->start();
}

Ничего необычного, создаём объекты всех нужных нам классов и делаем проверку на то, в каком чате мы находимся — приватном или супергруппе. Да, разделить код на достаточно независимые части является хорошей практикой. К тому же легче рефакторить и добавлять код, когда проблемы того потребуют.

Мы любим чистый код, поэтому настройки храним в файле .env, что позволит любому пользователю ввести свои, и бот будет работать (разумеется, после создания всех нужных таблиц).

// .env

DB_DSN=mysql:host=changeme;dbname=changeme
DB_USERNAME=changeme
DB_PASSWORD=changeme
BOT_ADMIN=changeme
TOKEN=changeme

Однако получить переменные окружения из .env можно только в том случае, если вы спарсите этот файл. Делается это крайне просто:

// config/settings.php

<?php

use SymfonyComponentDotenvDotenv;

$dotenv = new Dotenv();
$dotenv->loadEnv(__DIR__ . ‘/../.env’);

return [
‘db’ => [
‘dsn’ => getenv(‘DB_DSN’),
‘username’ => getenv(‘DB_USERNAME’),
‘password’ => getenv(‘DB_PASSWORD’)
],
‘token’ => getenv(‘TOKEN’)
];

Это тот самый файл, который мы включили в app.php. Там мы просто по ключу достаём нужные нам настройки:

$settings = require __DIR__ . ‘/config/settings.php’;
$settings[‘token’];
$settings[‘db’];

В папках Admin и User хранятся классы по работе как с приватным чатом, так и с супергруппой. Это не только удобно, как я говорил выше, но и даёт возможность отключить деятельность бота в одном из режимов, если мы соберёмся добавлять в него функциональность.

Больше томить вас кодом не буду, повторю только, что теперь он в свободном доступе.

Так мы решили сразу несколько проблем и написали достаточно неплохой, легко поддерживаемый код для бота, который по-прежнему в добром здравии и надёжно выполняет свои функции.

Время на прочтение
5 мин

Количество просмотров 13K

Всем привет! Мы команда Dev’s Battle. В этом посту расскажем о том, как мы создавали наш продукт (MMO RPG игра в телеграм для разработчиков), с какими ошибками столкнулись, и как дожили до релиза.

В этом посте не будет много информации о тонкостях разработки, его мы посвящаем теме продукт девелопмента. Если у вас возникнут вопросы или комментарии по коду — мы с радостью напишем еще одну статью, где раскроем и эти детали (если конечно аудитория хабра будет к нам благосклонна ;]

Даже успели запилить красивую обложку ;)

Даже успели запилить красивую обложку ;)

С чего все началось

Однажды мы решили сделать «продукт» для начинающих программистов, которые бы вобрал в себя все крутые фишки CodeWars, LeetCode и тысяч телеграмм каналов с задачками для разработчиков.

Прежде всего мы хотели создать геймифицированный образовательный инструмент, который будет полезен тысячам разработчиков по всеми миру и поможет убить 5-10 минут свободного времени с пользой. В качестве Front End решили взять Telegram ведь все мы тратим десятки часов своего времени именно там, а маркетинг для эппов мы бы точно не потянули.

Кстати, по нашему скромному мнению, вся геймификация во взрослом EdTech, что есть сегодня — полный отстой. Если вдруг кого-то мотивируют ачивки и поинты — дайте знать в комментах, интересно посмотреть

Основатель Dev’s Battle

Итак, с базой мы определились. С этого момента можно начинать отсчет времени разработки. Хотя начали мы конечно не с разработки, а с исследований. И вот как это было


Касдевы, анализы конкурентов и выбор сеттинга для будущей игры (1-3 неделя)

Как бывалые энтерпренеры, мы начали с исследований и касдевов. Решили разбить процесс на 2 вещи: анализ продуктов, которые уже используются людьми и исследование болей нашей потенциальной аудитории.

Конкурентный анализ

Для анализа конкурентов взяли: Java Rush, LeetCode, CodeWars, Habitika, Жабабот (кто в курсе, что это — с вас лайк), Mimo, Яндекс Практикум, Light Bot и еще пару приложений.

Лично потыкали все продукты и выписали на отдельную доску все крутые фичи, механики и маркетинговые трюки. На картинке их сильно меньше, так как многие уже забрали в прод и сеттинг игры.

Этот шаг очень помог нам понять, что работает, а что нет и сэкономил сотни часов разработки и тестов. Как говорят, все великое уже придумано за нас. Вот и вам советуем, перед тем, как что-то разрабатывать — идти и тыкать похожие продукты. Особенно советуем обратить внимание на ключевые механики, их реализацию, прогнать сайт или приложение через сервисы аналитики, типа SimilarWeb, попользоваться несколько дней самим.

Касдевы, проблемные интервью

Набравшись идей и гипотез, мы пошли тестировать их через проблемные интервью с нашими потенциальными пользователями. Найти респондентов было несложно, так как один из нас владел каналом в телеграм для разработчиков на 6 тыс человек, первых респондентов там и нашли.

В рамках касдевов мы определили три основных направления:

  1. Виральность — она была нужна нам, чтобы понять, что мотивирует пользователей делиться контентом и приглашать друзей. Вот тут нам и помог ЖабаБот, взяли для касдева их аудиторию. Кстати даже сумели пообщаться с их основателем.

  2. Основные проблемы разработчиков (пользователей LeetCode, CodeWars и тг каналов с задачками), их мотивацию и паттерны поведения. Все это нужно было нам, что сделать продуктом реально полезным и «не для себя», а для реальных людей.

  3. Наконец, мы хотели понять игровые предпочтения аудитории, узнав в какие игры и как часто они играют, на что тратят деньги и как пользуются продуктами. Кстати, тут же небольшой инсайд, оказалось что сеттинг и стилистика практически не важна, главное ее качество и проработка.

Прошли по полному циклу: разработка сценариев интервью, проведение интервью, доработка сценариев, поиск инсайтов и анализ ответов респондентов. Вот такая красота у нас получилась.

Касдевы, расшифровки и инсайды

Касдевы, расшифровки и инсайды

Проектирование основных механик, экранов и онбординга (4-5 неделя)

Превосполнившись от полученной информации мы принялись проектировать первые механики. Для удобства сразу начали отрисовывать в формате схем и экранов (о чем кстати потом пожалели).

Боты и продукты в Telegram — очень сильно отличаются от мобилок отсутствием статичного экрана. То есть, если в условном приложении всегда есть кнопка «назад», то тут такой кнопки нет. Это бесконечная лента и весь процесс нужно выстраивать именно по этому принципу.

Какие основные механики мы заложили:

  1. Возможность решать задачи на языки программирования

  2. Основные артефакты MMO RPG: развитие персонажа, скиллы, игровая валюта, боссы, уровни прокачки

  3. Мультиплеерные фишки: рейтинги, ачивки, баттлы и так далее

После создания ключевых механик, мы принялись за онбординг. По нашему мнению, онбординг это одно из самых важных мест в любом продукте, будь то игра или банковское приложение. Ведь именно на онбординге человек принимает решение будет он пользоваться продуктом или нет, а также знакомится с ключевыми механиками.

Онбординг мы решили сделать в формате новеллы)) Заставляя пользователя нативно пройти по всем фичам (от создания персонажа до первого баттла с игровым боссом. Результаты кстати получили — суперские, более 70% конверсии из входа в финальную регистрацию и старт игры.

Вот так выглядела наша игра до начала разработки

Вот так выглядела наша игра до начала разработки

Разработка MVP и основных механик (6-15 неделя)

И вот мы уже в платную подобрались к запуску разработки. Кстати перед этим успели протестировать концепцию через конструктор ботов в телеграм, но это уже тема для другой статьи. Разработку мы конечно же начали с поиска команды и консультаций с более опытными разработчиками по поводу стэка и структуры базы данных (как оказалось, это потом очень сильно нам помогло и помогает до сих пор)

За две недели нам удалось собрать крутую команду разработки из одного middle python девелопера и ментора с более 20+ опыта в разработке сложных IT продуктов.

Наш стек: Python, Django, PostgreSQL, PyTelegrambotAPI, Nginx, grafana

Разработку вели по спринтам в Jira, первые 2-3 недели потратили на базу данных. Правильная проектировка и сейчас помогает нам, когда мы настраиваем сложную аналитику или выкатываем новый функционал в продакшен.

Вот так незамысловато выглядели наши спринты. Верхнеуровневый план в Miro и задачки по каждому направлению в Jira

Вот так незамысловато выглядели наши спринты. Верхнеуровневый план в Miro и задачки по каждому направлению в Jira

После базы данных, перешли к основным механикам, а далее к онбордингу и дополнительным фишкам, которые мы решили запустить уже на стадии раннего MVP. Итого, уже к 10 недели мы были готовы к закрытому бета тестированию.

И тут началось! В следующие 5 недель наша команда тонула в багах, которые прилетали откуда не возьмись.

Бесконечное количество карточек справа - это баги, которые наша команда сумела починить за месяц с небольшим работы

Бесконечное количество карточек справа — это баги, которые наша команда сумела починить за месяц с небольшим работы

Регулярно падал крон, рейтинги, то приходили, то не приходили, бот останавливался, зарплата считалась не правильно, репутация считалась не верно, задачки не подгружались. Ломалось все, что может и не может ломаться. Но мы выжили)

На 12 неделе мы активно задумались о том, чтобы нанять еще одного человека в команду, и хоть проект все еще не приносил денег, ранние метрики внушали нам веру, а потому расширение команды стало тем риском, на которые мы были готовы пойти.

К 16 неделе мы починили все баги, выпустили паблик версию игры, провели пасевы в телеграм каналах и закрепили это все порцией юзер интервью. Запуск прошел успешно. Наши ранние результаты:

1269 Зарегистрированных игроков спустя 3 недели с момента релиза.


Промежуточные итоги и будущее проекта

Внимательный читатель наверняка спросит, куда делись еще 5 недель из 20, указанных в заголовке. Отвечаем, это время мы не сидели сложа руки и развивали проект дальше, например, выкатывали новые фичи, делали собственную расширенную аналитику (Google Analytics и TG библиотеки нам не подошли, можем написать про это отдельную статью), тестировали маркетинговые гипотезы, локализовывали проект под ENG рынок, прошли в крутой Французский акселератор и многое другое.

Эта статья — про запуск продукта, поэтому про его развитие мы можем написать в следующей статье (если публике Хабр. ru это конечно нужно. P. S дайте знать в комментах если эта статья вам помогла или была полезна).

Например, можем рассказать как не найдя достойных аналогов, сами выстраивали всю систему аналитики внутри телеграм бота

Например, можем рассказать как не найдя достойных аналогов, сами выстраивали всю систему аналитики внутри телеграм бота

Сейчас мы активно развиваем проект дальше и несмотря на то, что еще находимся на ранней стадии, уже считаем что сделали достаточно большой продукт в рамках того, что есть сегодня в Telegram.

А главное, этот продукт работает! И уже помогает сотням начинающих разработчиков развивать свои hard skills в программировании.

Игры в Телеграме появились в 2016 году. Они представлены как HTML5 и чат-боты. В них можно играть самому с собой, с одним собеседником в переписке или с несколькими людьми в чате, открытом или приватном. Это игры с разнообразной графикой и звуком. Чтобы разработать такую игру, нужно от 3 часов до нескольких месяцев, в зависимости от планов и задуманного масштаба.

Разберем, какие игры в целом позволяет создавать Телеграм, что в тренде, какие технологии используются, особенности графики, как продвигать такие игры. Также ознакомимся с несколькими наглядными кейсами разработчиков.


Какие игры можно создавать в Телеграме

Можно создавать не только простые, но и сложные игры. Простые HTML-5 игры похожи на игры в ICQ вроде War Sheep, Zoopaloola, Rock Paper Scissors. Их не нужно скачивать и отдельно устанавливать на телефон. Возможно играть прямо в браузере мессенджера, например в десктопной версии Телеграма, на iPhone новее 4+, Android 4,4+.  

Преимущества простых игр: низкий порог входа как для разработчика, так и для игрока. Разработать такую игру может человек с нулевыми техническими навыками. Цель игры с самой простой механикой — набрать больше очков, выиграть у других людей. Для каждой группы игроков составляется турнирная таблица. Когда кто-то начинает выбиваться в победители, остальные получают уведомления об этом.

Также возможности Телеграм позволяют разработать сложный многоуровневый 3D-шутер, масштабную ролевую игру в стиле фэнтези или постапокалипсиса, крупную стратегию в реальном времени. Если требуется игра, выполняющая широкий круг задач, с продвинутым геймплеем и механикой, скорее всего будет нужна команда и более мощное сложное оборудование.

Игровая платформа ТГ позволяет создавать игры различного масштаба. Есть те, которые весят 1 килобайт, а те, что весят более 1 Гб. Игры, спроектированные на платформе Телеграма, не занимают места на устройстве. Они загружаются по требованию, работают как веб-страницы в браузере.


Рынок Телеграм-игр: что в тренде

Создать игру может любой человек — Телеграм предоставляет для этого ресурсы. Для разработки такой простой игры достаточно несколько часов. Примеры: игра MathBattle была создана за 3 часа, Corsairs — за 5 часов, включая разработку, графику, музыку.

Чтобы найти другие примеры, можно воспользоваться ботом Gamee. Основные жанры — стратегии, RPG, баттлеры, интерактивные квесты, многопользовательские текстовые игры или MUD — Multi User Dungeon.

Разновидности популярных игр:

  • Логические мини-игры, включая карточные, интеллектуальные. StrawberryLogicBot, M0n0Bot, PokerBot, ruassoc_bot, krestikiBot. В Телеграме можно сыграть в Мафию, кости, покер, крестики-нолики, слова с ботом или с друзьями.
  • Текстовые игры. Они реализуются с помощью переписки. Questgamebot, viselkaBot, BastionSiegeBot, ChatWarsBot, EverlastingSummerBot, villagegamebot, WastelandWarsBot (про эту игру кейс далее). Механика таких игр может включать в себя жанры фэнтези или постапокалипсиса, симулятор средневековых войн, квесты, чаты, кланы, визуальную новеллу с интерактивными вариантами развития сюжета.
  • Викторины и квизы. Pandaquizbot, QuizariumBot, natgeowild2. Такие игры включают десятки тысяч вопросов разной сложности, игровой чат и даже возможность получения дополнительного дохода. Например, в natgeowild2 нужно быстро успевать отвечать на вопросы и заработать реальные деньги за выигрыш. С помощью этих ботов можно прокачаться в разных областях знаний: география, история, музыка, спорт, биология, точные науки, литература.

  • Гонки. F1 Racer, Moto FX, Beach Racer. Механика представляет собой симулятор гонок на разных видах транспорта, нужно обгонять соперников, быстрее добраться до финиша.
  • Релакс. Color Hit, Disco Ball, Mars Rover, Paint.IO, Sunshine Solitare. Игры для медитации, чиллаута, основное назначение — дать пользователю возможность отдохнуть, расслабиться, разгрузить мозг.
  • Экшн. Tube Runner, Gravity Ninja, Gateway, Pixel Dungeon, ATARI Asteroids. Игры, которые требуют от пользователя высокой скорости реакции. Многие из них имеют достаточно продвинутый сложный геймплей.
  • Аркады. Space Traveler, Geometry Run 3D, Neon Blaster, Karate Kido. Похожи по механике на логические и экшн-игры, предполагают активное выполнение разных действий. Например, перепрыгивания с одной плиты на другую.
  • Спорт. Penalty Shooter, Keep it UP, Football Star, Doozie Dunks, Pocket World Cup. Это симуляторы различных спортивных игр, например футбол, хоккей.
  • Быстрые. Skipper, Crazy Cat, Little Plane, Ding Dong, Spiky Fish. В игре нужна высокая скорость реакции, персонаж передвигается слишком быстро.
  • Сумасшедшие, Crazy. Tube Runner, Kung Fu Inc., Paintball Pandas, Qubo. Такой жанр выделен отдельно в каталоге игр Телеграм Gamee, обозначает игры с необычным эпатажным сюжетом и нестандартной механикой.
  • Паззлы. 99 Blocks, 1+2=3, Ten 2 One, Kingdoms of 2048, Bratz Pop, Tents and Trees. Относятся к подвиду логических игр.

Кейс Максима Газизова: создание MMORPG — аналога Fallout

Кейс доказывает востребованность Телеграм-игр. Разработчик мобильных приложений Максим Газизов искал идею для игры и создал комплексную survival-MMORPG Wasteland Wars в формате бота для Telegram — t.me/WastelandWarsBot. В своем кейсе он подчеркивает, что на идею повлиял растущий тренд развития Телеграма как мессенджера. В Телеграме есть возможность создать игру и сразу получить для нее аудиторию.

Игры в Телеграме в схожем жанре постапокалипсиса востребованы у людей 18-50 лет, разного социального статуса — то есть у платежеспособной взрослой аудитории. Максим отмечает, что некоторые игроки проводят в игре-боте 16-18 часов в день.

Механика игры основана на текстовом формате. Чтобы создать игру, нужно только писать; нет необходимости делать сложную графику, звук. В игре Максима есть сюжетные квесты, лут, торговля, альянсы, битвы, NPC, рейды на боссов, наземный и подземный открытый мир. При создании Максим делал акцент на максимально простой интерфейс для пользователя, качественный UI/UX, буквально выверял каждую кнопку.

Максим периодически делает обновления. Например, это введение PvP-зоны для битв 1х1, добавление PvP для массовой битвы разных игроков из разных банд, расширение функциональности банд, возможности улучшить оружие и броню.

Результаты: В игру играло 500-1 000 человек в сутки. Средний суточный онлайн зависел от игровых событий, запланированных на этот день, праздников, выходных, поэтому менялся каждый день.

Реализована монетизация. За реальные деньги можно купить игровую валюту, за которую можно сменить ник, фракцию или на короткое время ускорить передвижение по Пустоши. Сколько было заработано за время существования проекта, автор кейса не дает такую информацию.


Как игра и геймплей выглядят для пользователя

Пользователь переходит в каталог @Gamee. В открывшемся окне бот предложит выбрать тип или жанр игры. Пользователь может выбрать, с кем ему играть — самому с собой (с ботом-NPC), с друзьями, либо с неизвестными противниками из числа пользователей Телеграм.

Если пользователь хочет сыграть с друзьями, он нажимает на With Friends и выбирает друга из списка контактов. Этому другу бот присылает ссылку-приглашение, друг переходит и участвует в игре. Игру можно остановить в любой момент, продолжить позднее — действует сохранение. Пользователь может управлять своими действиями в игре с помощью кнопок в боте.

Преимущества Телеграм-игр для пользователя:

  • игра не занимает места на телефоне, не перегружает оперативную память;
  • вашему другу-соигроку не нужно добавлять себе бота;
  • подходящую игру всегда легко найти, например с помощью ключевого слова в поиске;
  • пользователь может скачать игру из Телеграма себе на устройство или ПК.

Один из несущественных минусов — запуск происходит через облако, возможны зависания на несколько секунд.


Для чего создавать игру в Телеграм и как монетизировать

Условия Телеграм запрещают напрямую монетизировать игры, оставлять в них ссылки на сторонние ресурсы и сайты. Но игрового бота можно применять в рекламных, маркетинговых, мотивационных целях:

  • Корпоративное обучение, геймификация процесса. Например, когда сотруднику нужно пройти викторину, квиз на полученные знания.
  • Нестандартный подарок. Создать игру, индивидуально предназначенную для конкретного человека.
  • Рекламный проект. Создать тематическую игру, где клиенты могут выиграть приз.
  • Монетизация с помощью внедрения функционала магазина и ссылки на платежный кабинет сайта. Например, внутриигровой магазин реализован в Happy Farmer.

Можно интегрировать платежную систему через страницу на своем сайте. Нужно иметь в виду, что игрок будет уходить в браузер и не всегда сможет произвести оплату.


Анализ конкурентов и поиск идей

Анализ конкурентов поможет сэкономит время, даст понимание, что работает, а что нет. Как проводить анализ конкурентов и поиск идей перед разработкой:

  • выбрать наиболее подходящие проекты из ниши: другие Телеграм-игры, сервисы, приложения;
  • тестировать каждый такой сервис и проект, выписывать в отдельную таблицу лучшие практики;
  • смотреть на ключевые механики и их реализацию;
  • посмотреть показатели сайта или приложения через сервисы аналитики, например с помощью SimilarWeb.

После того, как идеи собраны, их можно протестировать с помощью интервью с потенциальной аудиторией. Таких людей-респондентов для выборки можно находить через тематические каналы и группы в Телеграме.

Создавали бота или игру в Телеграме?

1 голос


Да — 0%



Нет — 100%


Упрощенное создание игры через бота @BotFather

Чтобы разработать игру, нужно воспользоваться ботом @BotFather. Этапы работы:

  • разработка искусственного интеллекта, который будет отображать действия и показывать визуал;
  • продумывание механики;
  • написание программной оболочки;
  • продумывание сюжета, если он необходим;
  • регистрация бота и конструирование интерфейса.

После создания игру можно отправлять в группы, чаты — также как обычное сообщение. Также её можно отправить в inline-режиме.

Под сообщением с игрой будет кнопка inline, которая начинает игру. Если пользователь решает поиграть, жмет на кнопку, боту приходит call-back с информацией о выбранной игре. Разработчик отвечает уникальным url, который сформирован для этого конкретного игрока. Приложение открывает игру у игрока в браузере.

Если кнопка не будет добавлена разработчиком, система сама добавит ее автоматически. Также кроме кнопки запуска, можно добавлять другие кнопки, например с правилами, ссылками на официальный ТГ-канал.

Овнеры магазинов ФБ акков про свой бизнес и тренды в арбитраже. ФБ аккаунты для арбитража трафика

Сообщение с игрой может содержать турнирную таблицу для игроков в конкретном чате. Когда выявляется победитель, другие люди получают уведомления, в турнирной таблице тоже все меняется автоматически. Можно запрашивать данные о рейтинге игроков и создавать таблицу прямо в игре.  

В интерфейсе игры система предусматривает постоянную кнопку «Поделиться» вверху экрана. Разработчик может настроить другие кнопки на HTML-странице. Нажав на них, можно открыть желаемый чат и отправить туда сообщение с количеством набранных очков.

Если в URL используется хэш, то Telegram может к нему что-то добавить от себя. Названия добавленных параметров будет начинаться с tg. Чтобы достать собственные параметры из адреса, можно воспользоваться объектом TelegramGameProxy.initParams.


Дизайн Телеграм-игр

Дизайн похож на классические HTML5-игры. Важно учитывать вес и размер изображений: фона, игровых элементов. Если они будут тяжелыми, это может негативно сказаться на скорости игры. Лучше выбирать векторные изображения, а не растровые.

Ограничения по весу нигде не прописаны и определяются экспериментальным путем. Если в процессе тестов выяснилось, что игра хорошо загружается в обычном браузере, она с большой вероятностью будет также хорошо загружаться в браузере Telegram.

Окно Телеграма может растягиваться благодаря автомасштабированию по ширине. Игра должна быть адаптивной, подходить под любые разрешения. Для больших окон можно добавлять небольшие поля, из-за того что рендеринг изображений на больших экранах отнимает много ресурсов. Экраны и раскадровки анимаций можно собрать в Figma.

В игре Happy Farmer поля фермы динамически генерируются под каждого игрока:

Возможности коммуникации с игроками ограничены. Можно передавать сообщения игрового мира с помощью HTML-разметки. Получить ответ игрока затруднительно. Чтобы отправить такое сообщение, пользователь должен создать команду через знак «/», а это умеют не все. В сообщение может быть встроенная клавиатура, но добавить ее достаточно сложно для разработчика. Если игра должна быть локализована на много языков и работать на всех типах устройств — сложностей прибавляется.

На клавиатуре могут отображаться символы из набора UTF-16. При создании любой игры все основные игровые предметы должны помещаться в этот набор. Игроку такая стандартизация удобна: алмаз в одной игре — премиум-валюта, значит, в другой — тоже что-то ценное.


Преимущества текстовых игр без графики

Текстовая направленность имеет плюс для разработчиков, которые не любят «заморачиваться» с красивой графикой. Текстовые игры создавать проще, расширять за счет текста мир. Помимо локализации понадобится качественная адаптация при выходе на разные рынки.

Преимущество текстовых игр:

  • высокая скорость разработки;
  • нет ограничений по игровому миру;
  • можно добавлять в игру ситуации любых масштабов;
  • возможна любая степень проработки игрового мира;
  • не нужно мощное оборудование для разработки.

Есть опыт разработки текстовых игр?

1 голос


Да — 0%



Нет — 100%


Особенности разработки

Для создания Телеграм-игр подойдут любые технологии  и библиотеки, которые доступны в браузере: JavaScript, WebGL-библиотеки, 3D-графика. Например, движок Pixi.js удобен для игр, где используются столкновения объектов в игровой механике. Pixi.js предлагает подробную документацию, с которой разберется frontend-разработчик любого уровня.

В движениях объектов может применяться растровая графика, либо векторные анимации, например lottie-файлы, другие виды svg-анимации.

Чтобы игра интегрировалась в Телеграме, заработала в нем, нужен доступ в интернет. Также игра должна отправлять информацию об очках в API Телеграма. Поэтому нужен веб-сервер, который будет получать сообщения из Телеграм, отдавать игру с отмеченным идентификатором игрока, принимать от Frontend очки и отправлять их в API.

В конце игры очки игрока должны идти с frontend на backend. Из игры нужно отправлять запросы с подставленными очками и идентификатором пользователя. Этот идентификатор передается в ссылке на саму игру. Его нужно сохранить на время, чтобы вернуть обратно с набранным количеством очков. Для этого пишется код в Frontend.

Понадобится сервер, с которого игроки будут подгружать игру и где будет размещаться Телеграм-бот. Также будет нужен SSL-сертификат, посколько Телеграм работает с играми по HTTPS-протоколу для безопасного общения. Такой сертификат, привязанный к домену или поддомену, можно получить у Let’s Encrypt.


Сервера для разработки игр в Телеграм

Для игры не обязательно брать мощный сервер. Можно воспользоваться недорогим облачным вариантом, для решения небольших задач. От расположения сервера зависит скорость доступа игроков из разных городов. Например, если предполагается, что ЦА — жители России, желательно выбирать сервера, которые находятся в Москве или Санкт-Петербурге. Операционную систему можно взять Ubuntu 20.04, либо выбрать другую или свой образ ISO или виртуальной машины.  

Этапы настройки:

  1. Если это игра с простой механикой, можно выбрать фиксированную конфигурацию с возможностью оплаты части ядра. Доля vCPU будет отражать производительность сервера. Она может оказаться выше заявленного, в зависимости от нагрузки на хост. Может хватить одного ядра или 50% этого ядра. Если не будет хватать мощности, можно сменить конфигурацию сервера.
  2. Выбрать размер диска. Так как не предполагается хранить много файлов, для операционки и кода можно взять до 5-10 Гб.
  3. Выбрать 1 публичный IP, запомнить пароль от root пользователя или загрузить публичный SSH-ключ. Далее нужно создать и установить сервер.
  4. Когда IP-адрес сервера будет получен, к нему можно подключиться по SSH. К серверу подключается домен. В настройках DNS-хостинга нужно указать A-запись на нужный домен или поддомен, значение в виде IP-адреса нового только что созданного сервера. Если домен новый и DNS-хостинга пока нет, можно подключить бесплатный DNS на панели управления.
  5. Подключиться к серверу по SSH, либо через консоль, настроить ngnix — веб-сервер, который будет работать с SSL.
  6. Запустить ngnix, перейти в папку с конфигурацией сервера, создать файл конфигурации, открыть его в текстовом редакторе и добавить в него настройки сервера.
  7. Сохранить файл. Таким образом ngnix будет перенаправлять запросы к домену на 3 000 порт, по которому отвечает backend.
  8. Проверить, что в конфигурации нет ошибок, сгенерировать бесплатный SSL-сертификат, чтобы игра была доступна по HTTPS.
  9. Воспользоваться утилитой Certbot и установить игру.
  10. Сгенерировать сертификат. Он будет отвечать по HTTPS. Затем нужно настроить и запустить его.

Создание Телеграм-бота для игры

Чтобы создать бота, нужно запустить botfather в Телеграме, вызвать в меню команду newbot, далее по инструкциям получить токен доступа. Этот токен нужно сохранить в конфиденциальном месте, не показывать третьим лицам во избежание того, что кто-то может представиться вашим ботом. Далее потребуется включить возможность делиться игрой с друзьями через inline-запросы.

Затем нужно вызвать команду newgame и создать игру. Понадобится принять условия работы. Если нарушить эти правила — игру удалят с платформы.  Запрещено:

  • размещать рекламу, любые внешние ссылки;
  • взимать оплату с игроков;
  • использовать личные данные пользователей для рассылок, делиться ими с другими сторонними сервисами;
  • устанавливать cookie в игре.

Этапы работы с ботом:

  1. Добавить название, описание, обложку 640х360, превью-гифку такого же размера. Гифка не является обязательной составляющей, но лучше загрузить ее, чтобы игра выглядела более привлекающей внимание.
  2. Настроить сервер, объединить составляющие.
  3. Установить систему Docker для создания контейнеров для кода. Это облегчит работу, позволит не устанавливать node.js, npm и зависимости.
  4. Взять из репозитория env.example, Dockerfile, index.json и package.json. Их нужно скопировать на сервер.
  5. Открыть env.example, подставить в него токен, ссылку на фронтенд, доступный из интернета, ID игры, который был сообщен BotFather; env.example нужно переименовать в .env (mv env.example .env).
  6. В Frontend-коде  настроить отправку очков на нужный домен.
  7. Создать Docker-образ приложения и запустить приложение.

Тестирование

Провести тестирование игры можно на коллегах. Важно вычислить баги и ошибки, внести доработки. К тестированию на финальных этапах можно привлечь клиентов из целевой группы, устроив розыгрыш призов.

Тестирование должно в себя включать UX. Нужно посмотреть и проконтролировать, как игра будет отображаться на разных экранах, вертикально и горизонтально. Если игра не срабатывает на экранах определенного типа, важно предупредить игроков об этом, прислать им уведомления, чтобы не вызывать негативной реакции.

Участвовали в проекте, связанном с геймификацией в бизнесе?

1 голос


Да — 0%



Нет — 100%


Кейс Библиотеки Программиста: создание игрового Telegram-бота

Разработчики в этом кейсе решили создать игру в Телеграм, которая помогает развивать логику. Задумка была сделать игру такой, чтобы задачи закреплялись на то время. И что пока их решают, не появлялись новые, пока ответ игрока не наберет определенное количество баллов.

Сначала бот должен был давать задачи, их можно было пропускать, постоянно вызывая одну и ту же команду. Нашелся выход: сохранение текущей команды в базе: получая команду /get, бот дает задачу и сохраняет команду. Затем, перед тем как отреагировать на сообщения в чате, бот сравнивает команду, которую получил прямо сейчас, с последней командой в базе. Если они совпадают, бот никак не реагирует и вдобавок удаляет команду пользователя, чтобы она не висела в чате.

После запуска обнаружилось, что хэштеги не удобны для поиска. Задача может уйти вверх, листать до неё затруднительно и долго. Поэтому задачу бот закреплял сразу самостоятельно.

Для написания бота использовались Composer — стандарт при разработке на PHP, библиотека telegram-bot-sdk, symfony/dotenv для парсинга .env-файла. Composer позволяет скачивать сторонние библиотеки на проект и предоставляет механизм по автозагрузке классов. Вся работа с Composer происходит через консоль и в файле composer.json.

Файл app.php — точка входа в приложение, где вешается веб-хук. Это значит, что бот не будет постоянно опрашивать сервер на наличие обновлений; он их будет получать только тогда, когда они будут.

Затем нужно создать объекты всех нужных классов, проверить, в каком вы чате — приватном или супергруппе. Код можно разделить на независимые части. Настройки хранятся в файле .env, что позволяет пользователи вводить свои, и бот будет работать после создания всех нужных таблиц.


Кейс Selectel: создание игры с постройком башни из серверов

В кейсе команда Selectel создала игру, механика которой — построить башню из серверов. Цель — PR и реклама: среди клиентов-игроков проводился конкурс, те, кто построят от 100 этажей, участвуют в розыгрыше призов с мерчем.

В игре не была задействована физика, при которой пришлось бы подумать, как будут раскачиваться блоки на кране и башня. В качестве усложнения игры был добавлен летающий тиранозавр — брендовый персонаж Selectel.

Было отрисовано 3 персонажа и 3 локации. Стройка башни начиналась под землёй, затем шла в городе и после 50 блоков-этажей продолжалась в космосе. Фон был 23 000 пикселей: его пришлось разделять на 4 части, так как Android-смартфоны не справились с отрисовкой.

Для движения крана применялась растровая графика. Движение было заанимировано отдельно и вставлена уже готовая анимация. Для этого команда Selectel использовала спрайты — картинки, кадры анимации и спрайт-листы — наборы всех элементов графики. Загружалась картинка с несколькими спрайтами, это было экономичнее по ресурсам, чем грузить несколько картинок каждую отдельным файлом. В качестве сервера Selectel использовал свой вариант Shared Line.


Как продвигать игру в Телеграм

С продвижением и рекламой есть определенные сложности. Не все знают о существовании игр в Telegram и их возможностях, несмотря на то что Телеграм-игры существуют уже больше 6 лет.

Пользователи ищут игры по ключевым словам в каталогах. Например, они могут забивать в поисковую строку название игры, либо ее жанр. Также пользователи могут узнать об игре, посещая каналы с раздачами, новостями.

Примеры таких каналов:

  • av_games — канал с новостями про игры, также здесь бывают раздачи, информация о скидках в сторах приложений;
  • EasyAPK — канал, где можно бесплатно скачивать APK-файлы приложений для Android;
  • theappbox — канал для владельцев iOS-устройств, на котором можно бесплатно устанавливать приложения;
  • egs_tg — канал Epic Games Store, который еженедельно дарит одну игру.  

Основные способы продвижения, которые используют разработчики:

  • сарафанное радио, виральность — когда вокруг проекта создается хайп, об игре узнают лояльные и преданные представители ЦА;
  • продвижение на других платформах;
  • каталоги ботов, например Storebot.me, Telegrambots.info.
  • обзоры и подборки в Telegram-группах, каналах, посвященных развлекательной тематике.

Другая сложность с маркетингом заключается в том, что в Телеграме трудно отслеживать статистику по пользователям, их данные. Этот мессенджер поддерживает анонимность. Даже с помощью инструментов парсинга можно собрать информацию по людям только из своих чатов и каналов, но не из чужих. Поэтому трудно проанализировать активность игроков, поведение пользователей в игре.

Но есть бот, который ведет лог взаимодействий: игра находится на сервере, любое взаимодействие игрока — команда на сервер. Другие способы получить статистику: использовать обобщенные числовые показатели, собирать обратную связь от аудитории.


Локализация и работа с аудиторией

Телеграм — международный мессенджер. Игра должна быть понятна всем пользователям. Если в планах стоит создать топовый проект, нужно задуматься о локализации минимум на 5 языков. Лучше ориентироваться не только на распространенные европейские языки вроде английского, французского, немецкого или испанского, но добавить португальский, персидский, арабский, так как на них говорит значительно большая часть населения планеты.

Можно столкнуться со сложностью в части развития проекта. Если в игре будут постоянные обновления, внедрения новых механик, важно собирать обратную связь от аудитории. Для этого потребуется игровой чат. Все пользователи разные, среди них может быть много неадекватных людей, которые пользуются анонимностью в Telegram. В итоге чатом может быть сложно управлять.

Аудиторию нужно сегментировать хотя бы по разным чатам и языкам. Это долгая работа, в результате которой можно выстроить сильное комьюнити вокруг бренда своей игры.


Кейс Dev’s Battle: MMORPG для повышения hard skill разработчиков

Идея началась с того, что команда хотела создать геймифицированный образовательный проект. По первой задумке игра должна была обучать начинающих программистов.

В течение первых 3 недель команда анализировала конкурентов, аудиторию, тренды, определялась с сеттингом. Для анализа конкурентов были рассмотрены Java Rush, LeetCode, CodeWars, Habitika, Жабабот, Mimo, Яндекс Практикум, Light Bot. Из этих проектов разработчики взяли «лучшие практики» и фишки. Смотрели на то, что мотивирует пользователей делиться контентом и приглашать друзей, с какими проблемами они сталкиваются, какие у аудитории предпочтения.

На следующем этапе, который занял примерно 5 недель, команда занималась проектированием основных механик, экранов, онбординга. Сначала механики отрисовывались в формате схем и экранов, но потом пришли к выводу, что это не удобно. У ботов и продуктов в Телеграме нет статичного экрана: экран — бесконечная лента, и подстраиваться нужно именно под нее.

Механики, которые придумала команда Dev’s Battle:  

  • решение задач на языки программирования;
  • артефакты MMORPG: развитие персонажа, скиллы, игровая валюта, боссы, уровни прокачки;
  • мультиплеерные фишки: рейтинги, ачивки, баттлы.

Онбординг — это этап, после которого пользователь принимает решение, играть или нет. Разработчики сделали онбординг в формате новеллы: пользователь должен был нативно пройти по всем шагам — создать персонаж, побиться с боссом.

На 6-15 неделе команда занималась разработкой MVP и основных механик. За 2 недели были собраны участники проекта: Middle Python Developer, опытный ментор-консультант. Использовали стек Python, Django, PostgreSQL, PyTelegrambotAPI, Nginx, grafana. Разработку вели по спринтам в Jira, первые 2-3 недели работали над базой данных.

После базы данных разработчики перешли к основным механикам, затем к онбордингу и дополнительным фишкам, которые решили запустить на стадии раннего MVP. На 10-й неделе уже была готовность к закрытому бета-тестированию, но выявилось много багов, которые устранялись в течение 5 последующих недель. Например, бесконечное количество карточек, падение крона, остановка бота, неверный расчет рейтинга.

Игра продвигалась с помощью посевов в ТГ-каналах, дополнительный PR шел через интервью с пользователями. В последующие недели разработчики внедряли новые фичи, делали расширенную аналитику, тестировали гипотезы, локализовали проект под бурж.

Результаты: 1269 зарегистрированных игроков спустя 3 недели с момента релиза. Всего на разработку и все этапы ушло 20 недель. Благодаря качественному онбордингу получилось 70% конверсии из входа в регистрацию и старт игры.  


Эксперты отвечают
 

ММаксим Газизов, разработчик мобильных приложений

В чем основные проблемы при разработке Телеграм-игр и как их можно решать?

Сложности связаны с платформой Bot API. У Telegram есть 2 системы для связи их ботов с вашим сервером: Long Polling и Webhooks. Long Polling: сервер будет с определенным интервалом опрашивать Telegram на предмет наличия новых запросов, и при наличии обрабатывать, возвращая ответ Bot API. Webhooks: сервер говорит Telegram «если у тебя появятся какие-то запросы – кидай их вот на этот адрес». Для реализации бота на Webhooks необходим постоянный IP адрес и обязательно SSL сертификат. У Long Polling есть проблема: бот начинает тормозить, постоянно перезапускаться, причиняет неудобства игрокам. Лучше делать проект на Webhooks.

Другие сложности появляются, когда проект набирет масштабы. Бот может начать «подтупливать» при получении запроса. С нагрузкой на сервер это не связано: бот упирается в лимит Bot API по количеству одновременных запросов. С этой проблемой можно справиться, написав в поддержку Телеграм, попросить увеличить лимиты. Чаще всего бот упирается в лимиты по типу запросов callback на inline-кнопки. В случае моего проекта пришлось перерабатывать интерфейс.

Третий вид проблем — в среде разработки и коде, конкретно, в Python 3 и в том, как он работает с потоками. Каждый новый поток в Python 3 создается вместе с переменными окружения, занимая большое количество памяти. В игре полно таймеров, и когда они запускались в отдельных потоках, возникала утечка памяти. По мере роста игры утечка достигла безумных масштабов, сжирая оперативную память и подкачивая оставшуюся память SSD сервера. Это было решено созданием очередей таймеров, обрабатывающихся в одном потоке для каждого типа.
 

РРостислав Бородин, Full-Stack веб-разработчик, куратор школы GeekON

Из каких этапов состоит создание текстового квеста?

Технически, телеграм бот — это программа, которая запущена на вашем компьютере и общается с серверами телеграма через интернет. Можно представить, что при регистрации бота Телеграм выделяет нам почтовый ящик, через который мы можем получать сообщения от пользователей и отправлять их им.

Чтобы создать собственного бота, сперва его надо зарегистрировать с помощью @BotFather и далее следовать его инструкциям. После того, как мы введем название бота, @BotFather сообщит нам токен — пароль к нашему почтовому ящику.

Сначала нужно создать первого бота, добавить к нему пояснение, которое объяснит пользователю, что он делает. Затем нужно настроить взаимодействие с несколькими пользователями одновременно.

Удобнее всего хранить все данные, которые привязаны к конкретному пользователю в словаре. Ключом в этом словаре будет id пользователя, а значением — произвольные данные. Нужно использовать разные переменные хранения слова, чтобы сообщения от разных пользователей не путались.

Следующий этап — добавить несколько кнопок к сообщению и реагировать на их нажатия. На финальном этапе собирается текстовый квест полностью.

Вывод

Игры в Телеграм не целесообразно рассматривать как конкурентов классических мобильных игр. Telegram-игры занимают свою отдельную нишу. Возможности ботов ограничены, не стоит ждать слишком продвинутого функционала и геймплея. В основном большинство игр направлены на то, чтобы скоротать время и создаются за 3-5 часов. Но при грамотном анализе трендов, аудитории можно создать масштабный популярный и востребованный проект.

Играли в Телеграм-игры?

1 голос


Да — 0%



Нет — 100%

4 Окт. 2016, Web, 56380 просмотров,

Игры в Telegram

Игры в телеграм

Буквально на днях, а именно 3 октября, разработчики Telegram анонсировали новость о том, что на их платформе теперь можно создавать игры. Доступны для игры как многопользовательский режим, так и игры одиночного уровня.

Ребята не стали изобретать велосипед в виде отдельного игрового движка или чего то в этом роде. Игры в Telegram можно создавать, используя знакомую всем связку HTML5 + JavaScript. На платформе уже доступно небольшое количество игр, включая полюбившуюся мне игрушку под названием Lumberjack, где задачей является срубить как можно больше веток у дерева.

Функционал доступен на iPhone >= 4 и Android >= 4.4, а также Telegram версии от 3.13. Для того, чтобы выбрать существующую игру, добавьте бота @gamee.

Как создать Telegram игру

Для того, чтобы создать игру в Telegram вам необходимо обратиться всё к тому же BotFather боту, который мы использовали при создании Telegram бота. Выполните команду: /newgame

Перед созданием игры, система попросит вас прочитать и принять условия работы, среди которых обязательными являются:

  • Запрещается размещать рекламу и внешние ссылки на сторонние ресурсы
  • Запрещается взимать оплату с пользователей игры
  • Запрещается использовать данные, полученные в ходе игры, для последующих спам-рассылок среди пользователей Telegram
  • Запрещается делиться данными, полученными во время игры, со сторонними приложениями и сервисами
  • Запрещается устанавливать «куки» на страницах игры

Нарушение этих правил ведёт за собой удаление игры из платформы. Что касается монетизации Telegram игр, то администрация сервиса обещает в самое ближайшее время разработать подходящие для этого инструменты. Будем следить.

HTML5, JavaScript и CSS

Я уже достаточно давно убеждён в том, что в самом ближайшем будущем единственным приложением, которым мы будем чаще всего пользоваться, станет браузер. Это и сейчас правда: на замену настольному Office пришел Office 365, Google Apps, почта, игры, общение и органайзеры всё это уже доступно в браузере. Если каких-то 5-10 лет назад веб-страницы были жалким подобием настольных приложений, то сейчас мы уже пользуемся навороченными интерактивными веб-приложениями. Всё это стало доступно благодаря стремительному развитию браузерных движков, с каждым новым релизом появляются новые фишки в API. Интернет стирает цифровые границы: получайте доступ к данным из любой точки мира, всё что вам будет нужно — браузер :)

Полезные ссылки по теме

  • Анонс игровой платформы в Telegram блоге
  • Описание Gaming Platform для разработчиков
  • Telegram Game API
  • Как создать Telegram бота

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Bots can offer their users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. Games are a new type of content on Telegram that your bot can send to users.

Check out the @gamebot and @gamee bots for examples of what you can do using the new Gaming Platform.

Web Apps

Since April 2022, you can also use Web Apps to create powerful games using JavaScript.

Check out the Web App Manual for details.

Creating a Game

To get started, send the /newgame command to @BotFather.You will be prompted for a description text and a photo. You can also upload an optional GIF animation that demostrates your game to the users to make messages with the game more attractive (check out Lumberjack or Corsairs for examples).

Launching the Game

Once the game is created, your bot can send it to chats as regular messages, or offer them via inline mode. The game message will always have an inline Play button.

When this button is pressed, your bot gets a callback query that indicates the requested game. You provide the correct URL for this particular user and the app automatically opens the game in the in-app browser.

Adding Buttons

If you send the game message without any buttons, it will automatically have a ‘Play GameName‘ button. You can manually add multiple buttons to your game message. Please note that the first button in the first row must always be the one that launches the game. You can add more buttons: e.g., for a description of the rules, or a button that links to the game’s official community.

Tracking High Scores

The message with your game will also display high scores for the current chat. When a new high score is set, a service message will be sent to the chat and the message with the current scoreboard will be updated. You can also request the necessary data for building in-game high score tables.

Sharing Your Game to Telegram Chats

There are many way for users to spread your game virally if they like it. The interface will always have the standard system button for sharing the game in the top right corner:

You can also create an additional Share button inside your HTML page. Pressing this button will send the game to a desired chat along with the user’s best score in the game.


To add the sharing button, include this script at the end of the <body> tag on your page:

<script src="https://telegram.org/js/games.js"></script>

Then use the method TelegramGameProxy.shareScore() to call the sharing option.

Warning: Do not call this method without consent and direct action from the user.

Example:

<button onclick="TelegramGameProxy.shareScore()">Share score</button>

This library will only work when launched from inside Telegram, so please don’t use it on ordinary web pages.

Using URL Parameters

If your URL is using a fragment identifier, please note that Telegram Apps could add certain service parameters to the fragment id. The names for such parameters will start in tg (you can check the code that adds them here). Use the TelegramGameProxy.initParams object if you need to read your own parameters from the fragment id.

Creating a Great HTML5 Experience

Please make sure that your HTML5 page is responsive and works well on all Telegram apps and supported platforms. If you find it impossible to support certain conditions or platforms, don’t leave your users hanging and at least provide a notification.

See the Bot API Manual for the relevant methods and objects.

Примерно год назад я наткнулся на текстовый квест в телеграме @QuestGameBot, там рассказывается увлекательная история о человеке, который очнулся где-то под водой и пытается понять, что вообще происходит. Концепция таких квестов мне понравилась, но я не нашел готовых решений, которые бы позволяли создавать подобные текстовые игры.

Скриншот телеграм бота @QuestGameBot

В то же время один мой товарищ попросил ему помочь в изучении языка программирования PHP. Как известно, лучше все изучать сразу на практике. Но для практики нужно было придумать проект. (товарищ в итоге слился)

Я подумал, что звезды сошлись и надо делать!

Кажется, что ты обманываешь, есть много платформ для разработки текстовых квестов

Что-то такое должны сказать люди в теме. И действительно, если поискать на dtf есть статьи про создание текстовых квестов:

Но есть один нюанс. (с)

Все эти квесты требуют специальных приложений. То есть, если я играю в квест, он мне очень вкатывает, я советую его друзьям: «это лучший сценарий, который когда-либо видел». Ииии вряд ли они его скачают. Нужно искать где-то программу, разбираться с интерфейсом, в общем нужно совершать очень много дополнительных телодвижений.

Поэтому мне очень нравится решение с квестом в месседжерах. Они есть уже практически у всех. Но делать поддержку сразу всех платформ очень сложно, поэтому я остановился пока на телеграме.

Каким должен быть редактор?

Когда мы видим сюжет какой-нибудь нелинейной RPG игры, например ведьмака, мы видим результат работы огромной команды писателей, разработчиков, дизайнеров. В книге «Кровь, пот и пиксели» показано люди создают игры, а потом выгорают и перестают заниматься геймдевом.

Но разработчиков мотивирует не только любовь к созданию игр, но и деньги. Они не могут позволить себе бросить работу просто потому что надоело. Нужно оплачивать квартиру, кормить семью, кота, закрывать кредит за машину.

Как это связано с редактором? Все просто. Я делаю инструмент для других людей и мне хотелось бы, чтобы процес создания игр был максимально прост и понятен с одной стороны. С другой, чтобы игра удивляла игрока. И, к сожалению, это два противоположных конца. Чем интереснее игра, тем дольше и сложнее ее разрабатывать. А значит люди, которые захотят попробовать сделать супер игру в редакторе, будут просто бросать разрабоку на половине пути (и это в лучшем случае).

Первая идея была сделать редактор, который бы позволял разрабатывать линейные сюжеты, но у игрока были бы различные параметры. Например, количество жизней. Каждый неправильный ответ на вопрос, уменьшает количество жизней. Доходишь до конца, побеждаешь.

Но такой подход убивает основную фишку игр — нелинейность. Поэтому пришлось от него отказаться.

Второй подход — это редактор дерева диалогов. В зависимости от решения, игрока перекидывает на ту или иную ветку. От параметров пользователя на первых парах пришлось отказаться, но зато я получил возможность нелинейного сюжета.

Как устроен процесс создания игры

Для создания игр был разработан диалоговый редактор в браузере. Как мне кажется, выглядит он довольно интуитивным. Текстовый квест — это по сути дерево диалогов, в котором мы переходим к той или иной ветке, в зависимости от ответов. Дерево состоит из вершин и дуг. Вершина содержит текст, который будет отображен пользователю и варианты ответов. Дуги соединяют ответы с другими вершинами.

Лучше всего это показать на видео.

Процесс создания дерева с нуля

Дерево с большим количеством связей

Для того чтобы сыграть в игру, нужно начать диалог с ботом в телеграме, бот предложит список доступный игр.

При выборе игры запускается диалог, который был создан в редакторе.

И для чего это все я написал?

Работа над редактором все еще продолжается, нужно прикрутить загрузку изображений, добавить параметры игрока и влияние ответов на эти параметры. Но какой смысл все это делать, если нет людей, которые бы пытались делать текстовые квесты? Короче!

ИЩУ ЛЮДЕЙ, КТО ХОЧЕТ делать ТАКИЕ квесты

Я не знаю интересно ли это кому-нибудь, я не знаю зачем это делать, но надо же чем-то заниматься. Поэтому я делаю этот редактор и возможно кто-то захочет делать на нем квесты.

Если заинтересовались пишите в телеграм

Оглавление

  • Как создать Telegram игру

    • Языки разработки Telegram игры HTML5, JavaScript и CSS

  • Плюсы и минусы игр в Telegram

Мини приложения и игры стали набирать популярность, вот и разработчики Telegram не стали отставать от новомодных тенденций, и завезли на свою платформу игры в Telegram, которые можно создавать, используя знакомую всем связку HTML5 + JavaScript.

Данный функционал доступен на iPhone >=4 и Android >= 4.4, а также Telegram версии от 3.13. Для того, чтобы выбрать уже существующую игру, добавьте бота @gamee.

Разработка игр под Telegram

Для создания игры в Telegram необходимо обратиться к боту BotFather, который так же используется при создании Telegram бота.

Выполните команду: /newgame

Перед созданием игры, система ознакомит вас с правилами и попросит вас принять условия работы, нарушение этих правил ведёт за собой удаление игры из платформы:

  • Запрещается размещать рекламу и внешние ссылки на сторонние ресурсы.
  • Запрещается взимать оплату с пользователей игры.
  • Запрещается использовать данные, полученные в ходе игры, для последующих спам-рассылок среди пользователей Telegram.
  • Запрещается делиться данными, полученными во время игры, со сторонними приложениями и сервисами.
  • Запрещается устанавливать «куки» на страницах игры.

#

Языки разработки Telegram игры HTML5, JavaScript и CSS

  1. Начать придется с разработки искусственного интеллекта, который необходим для отображения действий и показывать визуал действия. Так же необходимо продумать как это будет работать.
  2. Следующим действием будет написание програмную «оболочку» и продумывание сюжета, если он необходим по вашей задумке.
  3. После того как два пункта выше будет выполнены станет необходимо зарегистрировать бота и приступить к конструированию его интерфейса.

Намного проще все же попытаться найти что-то, похожее на желаемого бота. Однако стоит учесть телеграмм является все-таки не лучшей платформа для искусственного интеллекта.

Плюсы и минусы игр в Telegram

Плюсы:

  • Можно весело провести время в ожидании ответа.
  • Не нужно ничего скачивать.
  • Мало весят и практически не «поедают» интернет.

Минусы:

  • Не во всех присутствует красочная картинка.
  • Некоторые игрушки в самый неожиданный момент просто ломаются.

В студии AppFox можно подать заявку на программирование, создание игр или заказать разработку приложений https://appfox.ru/ и получить бесплатную консультацию по ценам и услугам.

Понравилась статья? Поделить с друзьями:
  • Как написать игру для zx spectrum скачать
  • Как написать игру для sega
  • Как написать игру для nes
  • Как написать игру бесплатно
  • Как написать игру башенки