Russian developer pages
Useful information which I could not find or some notes
Posts
Small example of telegram game creation
That is very simple, but not documented very well. This guide targeted on advanced programmers with good understanding what is going on 🙂 If you have some questions, please, contact with me through https://t.me/greshish.
First. Tools
I use python as primary programming language, therefore this example based on it.
Second. Libraries
I used python-telegram-bot library, because it’s first and may be only one library that described some methods about games for telegram. Get it here.
Third. BotFather
To create game you should create simple bot first.
Sequence of commands I used:
Fourth. Code
Through couple of hours of reverse-engineering I found that it’s very simple to get it done for mvp.
Create start command which will response game object to the user
Please, pay attention to the game_short_name=”fsg”,
fsg — game unique identifier which I used during /newgame creation
just test it and all witll be clear.
Add CallbackQueryHandler for getting game request
That piece of code get request when user presses “Play ‘GameName’’” button then answers with url of the game, which telegram will open in browser for the user.
That’s it. All that you need is write in-browser game and use it in your bot.
Thanks for reading. Good luck!
Gaming Platform
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.
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:
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:
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.
Как создать игру в Telegram за 20 недель и не спиться
Всем привет! Мы команда Dev’s Battle. В этом посту расскажем о том, как мы создавали наш продукт (MMO RPG игра в телеграм), с какими ошибками столкнулись, и как дожили до релиза.
Однажды мы решили сделать «продукт» для начинающих программистов, которые бы вобрал в себя все крутые фишки CodeWars, LeetCode и тысяч телеграмм каналов с задачками для разработчиков.
Прежде всего мы хотели создать геймифицированный образовательный инструмент, который будет полезен тысячам разработчиков по всеми миру и поможет убить 5-10 минут свободного времени с пользой. В качестве Front End решили взять Telegram ведь все мы тратим десятки часов своего времени именно там, а маркетинг для эппов мы бы точно не потянули.
Кстати, по нашему скромному мнению, вся геймификация во взрослом EdTech, что есть сегодня — полный отстой. Если вдруг кого-то мотивируют ачивки и поинты — дайте знать в комментах, интересно посмотреть
Итак, с базой мы определились. С этого момента можно начинать отсчет времени разработки. Хотя начали мы конечно не с разработки, а с исследований. И вот как это было:
Как бывалые энтерпренеры, мы начали с исследований и касдевов. Решили разбить процесс на 2 вещи: анализ продуктов, которые уже используются людьми и исследование болей нашей потенциальной аудитории.
Конкурентный анализ
Для анализа конкурентов взяли: Java Rush, LeetCode, CodeWars, Habitika, Жабабот (кто в курсе, что это — с вас лайк), Mimo, Яндекс Практикум, Light Bot и еще пару приложений.
Лично потыкали все продукты и выписали на отдельную доску все крутые фичи, механики и маркетинговые трюки. На картинке их сильно меньше, так как многие уже забрали в прод и сеттинг игры.
Этот шаг очень помог нам понять, что работает, а что нет и сэкономил сотни часов разработки и тестов. Как говорят, все великое уже придумано за нас. Вот и вам советуем, перед тем, как что-то разрабатывать — идти и тыкать похожие продукты. Особенно советуем обратить внимание на ключевые механики, их реализацию, прогнать сайт или приложение через сервисы аналитики, типа SimilarWeb, попользоваться несколько дней самим.
Касдевы, проблемные интервью
Набравшись идей и гипотез, мы пошли тестировать их через проблемные интервью с нашими потенциальными пользователями. Найти респондентов было несложно, так как один из нас владел каналом в телеграм для разработчиков на 6 тыс человек, первых респондентов там и нашли.
В рамках касдевов мы определили три основных направления:
1) Виральность — она была нужна нам, чтобы понять, что мотивирует пользователей делиться контентом и приглашать друзей. Вот тут нам и помог ЖабаБот, взяли для касдева их аудиторию. Кстати даже сумели пообщаться с их основателем.
2) Основные проблемы разработчиков (пользователей LeetCode, CodeWars и тг каналов с задачками), их мотивацию и паттерны поведения. Все это нужно было нам, что сделать продуктом реально полезным и «не для себя», а для реальных людей.
3) Наконец, мы хотели понять игровые предпочтения аудитории, узнав в какие игры и как часто они играют, на что тратят деньги и как пользуются продуктами. Кстати, тут же небольшой инсайд, оказалось что сеттинг и стилистика практически не важна, главное ее качество и проработка.
Прошли по полному циклу: разработка сценариев интервью, проведение интервью, доработка сценариев, поиск инсайтов и анализ ответов респондентов. Вот такая красота у нас получилась.
Превосполнившись от полученной информации мы принялись проектировать первые механики. Для удобства сразу начали отрисовывать в формате схем и экранов (о чем кстати потом пожалели).
Боты и продукты в Telegram — очень сильно отличаются от мобилок отсутствием статичного экрана. То есть, если в условном приложении всегда есть кнопка «назад», то тут такой кнопки нет. Это бесконечная лента и весь процесс нужно выстраивать именно по этому принципу.
Какие основные механики мы заложили:
1) Возможность решать задачи на языки программирования
2) Основные артефакты MMO RPG: развитие персонажа, скиллы, игровая валюта, боссы, уровни прокачки
3) Мультиплеерные фишки: рейтинги, ачивки, баттлы и так далее
После создания ключевых механик, мы принялись за онбординг. По нашему мнению, онбординг это одно из самых важных мест в любом продукте, будь то игра или банковское приложение. Ведь именно на онбординге человек принимает решение будет он пользоваться продуктом или нет, а также знакомится с ключевыми механиками.
Онбординг мы решили сделать в формате новеллы)) Заставляя пользователя нативно пройти по всем фичам (от создания персонажа до первого баттла с игровым боссом. Результаты кстати получили — суперские, более 70% конверсии из входа в финальную регистрацию и старт игры.
И вот мы уже в платную подобрались к запуску разработки. Кстати перед этим успели протестировать концепцию через конструктор ботов в телеграм, но это уже тема для другой статьи. Разработку мы конечно же начали с поиска команды и консультаций с более опытными разработчиками по поводу стэка и структуры базы данных (как оказалось, это потом очень сильно нам помогло и помогает до сих пор)
За две недели нам удалось собрать крутую команду разработки из одного middle python девелопера и ментора с более 20+ опыта в разработке сложных IT продуктов.
Наш стек: Python, Django, PostgreSQL, PyTelegrambotAPI, Nginx, grafana
Разработку вели по спринтам в Jira, первые 2-3 недели потратили на базу данных. Правильная проектировка и сейчас помогает нам, когда мы настраиваем сложную аналитику или выкатываем новый функционал в продакшен.
После базы данных, перешли к основным механикам, а далее к онбордингу и дополнительным фишкам, которые мы решили запустить уже на стадии раннего MVP. Итого, уже к 10 недели мы были готовы к закрытому бета тестированию.
И тут началось! В следующие 5 недель наша команда тонула в багах, которые прилетали откуда не возьмись.
Регулярно падал крон, рейтинги, то приходили, то не приходили, бот останавливался, зарплата считалась не правильно, репутация считалась не верно, задачки не подгружались. Ломалось все, что может и не может ломаться. Но мы выжили)
На 12 неделе мы активно задумались о том, чтобы нанять еще одного человека в команду, и хоть проект все еще не приносил денег, ранние метрики внушали нам веру, а потому расширение команды стало тем риском, на которые мы были готовы пойти.
К 16 неделе мы починили все баги, выпустили паблик версию игры, провели пасевы в телеграм каналах и закрепили это все порцией юзер интервью. Запуск прошел успешно. Наши ранние результаты:
Внимательный читатель наверняка спросит, куда делись еще 5 недель из 20, указанных в заголовке. Отвечаем, это время мы не сидели сложа руки и развивали проект дальше, например, выкатывали новые фичи, делали собственную расширенную аналитику (Google Analytics и TG библиотеки нам не подошли, можем написать про это отдельную статью), тестировали маркетинговые гипотезы, локализовывали проект под ENG рынок, прошли в крутой Французский акселератор и многое другое.
Эта статья — про запуск продукта, поэтому про его развитие мы можем написать в следующей статье (если публике VC. ru это конечно нужно. P. S дайте знать в комментах если эта статья вам помогла или была полезна).
Сейчас мы активно развиваем проект дальше и несмотря на то, что еще находимся на ранней стадии, уже считаем что сделали достаточно большой продукт в рамках того, что есть сегодня в Telegram.
А главное, этот продукт работает! И уже помогает сотням начинающих разработчиков развивать свои hard skills в программировании.
P. S.
Если захотите попробовать нашу игру сами — вот ссылочка. Будем рады вашим комментам, идеям и предложениям
Как создать бота с игрой в телеграмм c помощью Python.
Hello World!
Недавно я писал бота для телеграмм и один мой знакомый рассказал, что в телеграмме есть еще и игры. Мне стало интересно и я решил прогуглить. Идея игр в телеграмм мне понравилась и я подумал, что было бы хорошо интегрировать данную опцию в моего телеграмм бота, так как это добавит интерактивности. Телеграмм ботов я разрабатываю на Python, используя при этом библиотеку pyTelegramBotAPI. Вообщем, я начал искать и , к сожалению, не нашел нужной для меня информации, собранной в одном месте и на русском языке. Но как-то у меня получилось собрать все в кучу и немного разобраться с играми в телеграмм и теперь я хочу поделиться этим с вами. Сразу скажу, что в данной статье не будет каких-то детальных технических особенностей и тому подобных вещей. Начинаем.
Так, в статье я предполагаю, что у вас уже установлена библиотека pyTelegramBotAPI, а также вы более или менее понимаете, как создавать телеграмм ботов. В противном случае со всем этим вы можете ознакомиться в Интернете — информации достаточно.
Итак, импортируем библиотеку pyTelegramBotAPI, создаем бота с помощью BotFather и создаем объект бота используя токен, который выдал нам BotFather.
Хорошо, давайте теперь создадим игру. Делается это также с помощью BotFather. Пишем /newgame и следуем дальнейшим инструкциям.
Окей, дальше, когда вы согласитесь(или не согласитесь ) с условиями пользователя, BotFather напишет, что ваш бот работает не в inline_mode, а бот с игрой должен работать именно в этом режиме. Но это не проблема. Просто пропишите команду /setinline и BotFather выдаст вам список ваших ботов и предложит выбрать какого из ботов вы хотите перевести в inline режим. Смело выбирайте какого-то из своих ботов.