Ох, давненько я ничего не писал. Все читал пикабушечку и тоже рефлекрисовал на теме отсутствия контента нормального. И вот он! Таки завезли!
Картинка для привлечения внимания:
В этом посте будут ссылки на телеграм. Много ссылок!
С чего всё началось-то? А с хомяка. Тапал я эту шнягу, потом друзья подкинули еще проект, третий, четвертый. И вот очнулся я, когда помогал какому-то бомжу в игре подняться до высот недосягаемых. В этот момент меня посетила мысль - "Что я делаю со своей жизнью? Зачем СЕБЯ так мучить?"
И я решил написал свою игру тапалку для телеги. Но меня встретили несколько проблем:
- Я не знаю JavaScript
- Не знаю толком CSS с HTML
- Не знаю Python или даже Node.js
- Я вообще не понимаю, как подступить к созданию телеграмм мини-приложений.
Как видно, проблем было много. Но у меня был запал, был свой VPS сервер на CentOS за который я зачем-то плачу по 400 рублей в месяц, где крутится мой маленький бложик по Таиланду, который я уже несколько лет не обновляю. Но проблемы описанные выше сильно мешают идти к цели.
Но тут внезапно вдруг ни с того ни с сего OpenAi выкатывает новенькую модель ChatGPT O1 (Preview и Mini), с обещаниями, что это теперь доктора технических наук будут у вас в кармане нашептывать ответы на любые вопросы. А у меня как раз подписочка имеется на Plus версию. Почему бы не затестить? Звезды прям так и складываются.
Собственно я и пошел к ЧатГПТ с вопросом: а как к этой вашей телеграме подступиться, да еще и шоб можно было вау-вау и деньги рубить? И этот "дохтор наук карманный" таки выдал мне. Так подробно, что я даже немножко себя дурачком почувствовал.
Первая была игра по типу три-в-ряд:
Шахтер
Фон, ассеты, код - все это делал ChatGPT. Конечно не за один запрос. Потратил я на это дело не один день. Здесь я начал свое знакомство с созданием игр для телеграм. Понял, что необходимо разделять серверную часть от клиентской, но самое интересное я понял, что: все телеграмм-игры - это просто сайты, которые хранятся где-то и куда разрешают заходить только через телеграмм. Ограничение такое из-за дальнейшей работы с пользователем по его ID. Так записываются очки, ваш прогресс в игре и так далее. Это было интересным знанием.
Дальше - больше. Три-в-ряд - это классика, а хочется чего-то новое. Так я сделал...
МАМКИН ТРЕЙДЕР
Графики тут меньше, но больше логики. В этой игре я познакомился с таким понятиями как "Сцена". Можно менять одну на другую. Долго не мог заставить ЧатГПТ делать то, что игра должна была. А смысл у нее простой: вы заходите и покупаете Билет (просто представьте, что вы заплатили 1000 рублей за этот билет и поймете, на какие мечты я рассчитываю), после чего вас пускают к торговому терминалу. Задача - набрать как можно больше очков. Выиграть тут нельзя, а вот проиграть можно все до трусов. Удивительно, но когда написал эти строки, понял, что игра получилась поразительно жизненной.
Вы делаете ставку (в данной версии игры мы работаем только с фьючерсами криптовалюты, назовем ее MamCoin), и нажимаете Покупай. Если цена пойдет вверх, то вы будете выходить в плюс, если цена пойдет вниз и упадет ниже 10% от вашей покупной цены, то произойдет ликвидация актива. Ваша ставка сгорит. Я столько бабла в реальной жизни на такие ситуации потратил... если бы жена только знала...
График рисуется в рандомном направлении. Есть иногда глюки, когда он совсем внизу. Сдается мне это из-за отрицательных значений. Но исправлять не хочется. Попробовал, поиграл, и хватит.
С другой стороны - игры это не для всех. А вот полезный бот может пригодиться всегда. Так я пришел к идее сделать бота, который рисует qr-code по присланной ссылке.
EASY QR CODE
Здесь я уже познакомился с парсингом и ответом на запросы пользователя. А также узнал, что QR-Code - это стандартная функция в Питоне. Был приятно удивлен.
К слову сказать, если вдруг по какой-то причине вы откроете моих ботов и они не будут работать - это все эффект пикабу. Интересно хостер меня прижучит за перерасход трафика и напряг сервера? Ну да ладно! У меня сервер на 2 гигагерца с 512 мегами оперативы. Должен справиться.
ДДоСьте меня, Ддосьте меня полностю!
Буду рад вашему фидбеку по программам, а возможно по советам для бота. Так-то я знаю, что этих ботов, которые полезные, как собак нерезанных. Каждый хорош в чем-то своем. Но я решил написать миллионный бот, который будет Куары шлепать. Разве это плохо?
Но это еще не конец, это был разогрев к моему главному проекту.
КЛИКЕР
Собственно все, для чего это затевалось. Я начинал с того, что кликал на чужих виртуальных хомяков, но мне захотелось своего. Без идеи, без всего. Просто кликер
Ссылку не дам, потому что он сломался (объясню ниже).
Но смысл у игры простейший - кликаешь, набираешь очки. Ничего заумного, ничего оригинального. Просто посмотреть, как это все работает. Тут-то я глубже познакомился с сохранением данных пользователя. На самом деле, пока я его тестил, мне показалось, что я накликал даже больше чем в хомяка.
А сломался он по причине переезда. Я решил переехать сервером в Амазон. Так как я живу в Таиланде, то выбрал сервер поближе ко мне - Сингапур. Поставил туда Убунту на двухядерный двухгигагерцовый комп с 512 мегабайтами оперативы. Удовольствие это всего на 5 баксов в месяц да еще и первые 3 месяца бесплатно. Поэтому почему бы и нет?
Переехал, поставил игру. Все нормально. Игрался. Когда пошел делать новый проект, оказалось, что я настроил как-то не так домашнюю папку и все последующие проекты у меня должны быть внутри с игрой кликером. Странно это все. Переделывать не хочется ибо командная строка буквально надоела мне за это время. Столько я мучился с загрузкой на сервер, с SSH шифрованием, ключами, правами доступа. Это все новое для меня, все это добавляет ступеньки к достижению целей.
Но все же мы пришли к моему финалу на текущий момент:
Погладь кота!
Да, это тоже кликер. Но вы посмотрите на этого Манула, ведь так и хочется его Погладить! Поэтому ПОГЛАДЬ КОТА!
Да, простая идея, мне даже кажется немного забавной. Мы не кликаем, не тапаем, а гладим кота (хотя технически нам надо тапать).
Хм... сейчас подумал, что на телефонах можно таки реализовать идею поглаживания... Но это будет для следующих версий.
Что здесь я открыл для себя нового? Здесь я смог реализовать окно загрузки (кстати, если будете запускать, скажите как долго грузится игра?). Учитывая, что большинство читателей будут из России, а сервер в Сингапуре, соединение может быть плохим. Поэтому я сделал окно загрузки. Это не просто экран с текстом, это реально подзагрузка изображений. Какие еще есть изображения, спросите вы? Никто у тебя ничего не спрашивает!
А я сделал ачивки! Для этого познакомился с таким понятием как модальные окна в JS. Интересно оказалось.
Также в этой игре сохраняется счет после выхода. Каждый пользователь имеет свой уникальный номер привязаный к ID телеграмма. Поэтому если зайти через приложение на компе или в телефоне - у вас будут один счет. Это здорово.
В этой же игре (и в какой-то еще, не помню) я реализовал запрет на запуск через браузер. Т.е. если вы каким-то образом сможете получить ссылку на клиентскую часть бота у вас не получится запустить. Это тоже круто.
Единственное, как мне подсказывает chatGPT, у меня может возникнуть проблема при достижении онлайна свыше 500 человек. Потому что все клики у меня посылаются на сервер через обычный JSON. А это значит могут быть глюки, лаги, и даже сбои. Конечно же я такое сам протестить не могу. Попрошу вас это сделать. Просто потыкайте игрушку, а я специально для вас сделал ачивки.
Сколько их? Не скажу. Но честно сказать, их можно легко открыть за 2-3 минуты кликов. Если будут идеи на дополнительные ачивки - то велком в комменты, буду рад добавить ваши варианты, ваши идеи.
И опять же, если сработает эффект пикабу, то оба моих сервера (Московский с ботом для QR и Амазон с играми) рухнут. Или из-за недостачи процессорного времени или из-за памяти или из-за чего-то еще.
Послесловие
Я не скажу, что я стал крутым специалистом в разработке ботов на телеграмме, но мне это было интересно, даже весело. Это же здорово, когда ты можешь написать какую-то игру... Ну опять же с помощью ChatGPT, но все же. Ему многие моменты мне приходилось разжевывать, чтобы он понял идею. Здесь мой скилл промт-инженеринга сильно подрос.
Но я и дальше буду пытаться делать проекты для телеграмма. В следующих версиях хочу научиться подключить Web3 кошелек от телеги, чтобы можно было принимать крипту для оплаты, а там уже и донаты можно собирать. Но это будет в будущих версиях.