← Назад ко всем проектам

Личный проект6 мин чтения

PlayDino - внутриигровая экономика, токеномика и пресейл токена

PlayDino - внутриигровая экономика, токеномика и пресейл токена

Технологии

ReactTypeScriptNodeJSEthereumSmart ContractsviemwagmiMetaMaskWalletConnectCryptoBlockchainTelegram APIDockerAnti-FraudVoxel Art

Услуги

  • →Проектирование внутриигровой экономики и токеномики (вестинг, контроль ликвидности)
  • →Системы монетизации - внутриигровой магазин и покупки внутри приложения
  • →dApp пресейла токена - фронтенд и интеграция с EVM-контрактом (wagmi/viem)
  • →Авторизация через кошелёк и мультивалютный процесс оплаты (MetaMask, WalletConnect)
  • →Античит, защита от мошенничества и мониторинг в реальном времени
  • →Full-stack-инфраструктура, платёжные шлюзы и бэкенд-сервисы
  • →Техническое руководство - код-ревью, менторинг и найм
  • →Онбординг фрилансера, постановка задач, контроль выполнения и разбор полётов
  • →Каталог скинов и конвейер их производства (3 разработчика, 20+ воксельных скинов)

Результаты

  • ✓Работающий dApp пресейла токена на Ethereum/EVM-совместимом контракте
  • ✓Живой статус пресейла - собранная сумма, кап, таймеры этапов, прогресс и личный вклад
  • ✓Оплата в ETH и USDT с динамическим курсом, комиссиями и автосвопами через агрегаторы ликвидности
  • ✓Внутриигровой магазин и монетизация через IAP внутри Telegram-игры
  • ✓Графики вестинга, контроль ликвидности и защита от мошенничества
  • ✓Мониторинг в реальном времени и античит под 10 000+ одновременных пользователей
  • ✓20+ воксельных скинов в нескольких категориях по качеству и цене

Задача

PlayDino - игра в Telegram с базой в десятки тысяч игроков. Сама игра была, а всё, что вокруг денег, - нет: ни токеномики, ни внутриигрового магазина, ни защиты от эксплойтов, ни способа для ранних сторонников зайти в проект. Страница пресейла, которая существовала, отрисовывалась криво, тянула за собой длинный список багов и не была подключена к контракту вообще - кнопка не делала ничего.

Решение

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

Версия, которую я унаследовал

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

‹›
aA🔒t.me/dinorunnebot/
⇧▢+
Меню

Inherited Telegram mini app - scrollable browser preview

Ещё один ранний билд игры.

Ранний билд PlayDino 1
Ранний билд PlayDino 2

Перенос игры в 3D

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

За основу взяли существующий open source проект. Эту версию сильно доработали: добавили интерфейс, скины, меню и новые возможности. На скриншотах ниже сначала старые версии, а последним идёт самая первая сборка новой 3D-игры.

Старая версия PlayDino и первая 3D-сборка 1
Старая версия PlayDino и первая 3D-сборка 2
Старая версия PlayDino и первая 3D-сборка 3
Старая версия PlayDino и первая 3D-сборка 4

Первый интерфейс

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

Экран раннего интерфейса PlayDino 1
Экран раннего интерфейса PlayDino 2
Экран раннего интерфейса PlayDino 3
Экран раннего интерфейса PlayDino 4

Техническое задание на дизайн этой ранней версии выглядело так: скриншоты текущих экранов, а за ними требования к новой стилистике.

ТЗ на фронтенд PlayDinoСкачать PDF
Загрузка…

Новый интерфейс

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

Экран нового интерфейса PlayDino 1
Экран нового интерфейса PlayDino 2
Экран нового интерфейса PlayDino 3
Экран нового интерфейса PlayDino 4
Экран нового интерфейса PlayDino 5
Экран нового интерфейса PlayDino 6
Экран нового интерфейса PlayDino 7
Экран нового интерфейса PlayDino 8
Экран нового интерфейса PlayDino 9

Заход фрилансера

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

‹›
aA🔒playdino.fun/
⇧▢+
Presale

Presale landing - scrollable browser preview

Реализация

Экономическая часть - это графики вестинга, контроль ликвидности и защита от мошенничества, внутриигровой магазин с покупками внутри приложения и полная full-stack-инфраструктура под этим: интеграции платёжных шлюзов, транзакционные потоки и бэкенд-сервисы, которые обслуживают экономические операции в реальном времени. Мониторинг в реальном времени и античит-системы находят и блокируют мошенничество, эксплойты и злоупотребления автоматически, а не по ручной жалобе.

Фронтенд пресейла работает с Ethereum/EVM-совместимым смарт-контрактом через wagmi и viem: view-функции для живого состояния, транзакции для самой покупки. Участник видит собранную сумму, кап, таймеры этапов, прогресс и свой вклад; покупает за ETH или USDT с расчётом курса и комиссий на лету, включая автоматические свопы через агрегаторы ликвидности, когда этого требует валюта платежа. Кошельки подключаются через MetaMask и WalletConnect, а участие подтверждается по событиям контракта, которые выводятся уведомлениями в интерфейсе.

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

VS Code во время разработки PlayDino: ИИ-ассистент правит Dockerfile фронтенда рядом с логом сборки и git push
Случайный кадр из разработки фронтенда и бэкенда

Метрики игры в Prometheus и Grafana

В игру добавили Prometheus: он собирал внутриигровую статистику, отслеживал эпохи, проблемы и ошибки. Графики строились в Grafana, которая брала данные из Prometheus. На скриншотах одна из панелей: общее количество игровых очков, которое отдаёт API игры.

Панель Grafana с метриками PlayDino 1
Панель Grafana с метриками PlayDino 2

Отладка сайта пресейла

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

Контракт пресейла и предупреждения MetaMask

Когда платёжную форму пресейла подключали к смарт-контракту, всплыла проблема, которую фронтендом не исправить: MetaMask считал контракт ненадёжным. На локальных тестах получатель отображался как неизвестный адрес, а на боевом playdino.fun кошелёк пометил его как вредоносный и заменил кнопку Confirm на Review alert. Покупатель, который видит такой экран в момент оплаты, редко идёт дальше.

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

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

Скриншот MetaMask с контрактом пресейла 1
Скриншот MetaMask с контрактом пресейла 2
Скриншот MetaMask с контрактом пресейла 3
Скриншот MetaMask с контрактом пресейла 4
Скриншот MetaMask с контрактом пресейла 5
Скриншот MetaMask с контрактом пресейла 6
Скриншот MetaMask с контрактом пресейла 7

Страница white paper и его иллюстрации

Для лендинга завели отдельную страницу с white paper. На ней описана философия проекта и размещён PDF с предпросмотром всего документа целиком.

Страница white paper PlayDino 1
Страница white paper PlayDino 2
Страница white paper PlayDino 3
Страница white paper PlayDino 4

Сам white paper мы доработали вместе с командой. Иллюстрации в нём делались генерацией, и надписи на них вышли с ошибками: DinoVerve и DinoVervse вместо DinoVerse, playgrount, Stnart contracts, MEANNGFUL, DINORUNNNER, тикер SDINO вместо $DINO. На крупных планах ниже эти места отмечены до исправления.

Ошибка в иллюстрации white paper PlayDino 1
Ошибка в иллюстрации white paper PlayDino 2
Ошибка в иллюстрации white paper PlayDino 3
Ошибка в иллюстрации white paper PlayDino 4
Ошибка в иллюстрации white paper PlayDino 5

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

Приёмка модели персонажа

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

Конвейер скинов

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

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

Исполнителей нашли на фрилансе, и главной сложностью оказались инструменты. Игра построена на кастомном 3D-движке на вокселях, а воксельный редактор поставляется отдельно, поэтому каждого исполнителя пришлось обучить работе с ним и передать всю документацию. Они справились отлично и за короткое время сделали на коммерческой основе множество скинов. Скины покупаются за внутриигровую валюту, и играть можно известными персонажами: Бэтменом, Спанч Бобом, Марио и другими.

Воксельный скин PlayDino 1
Воксельный скин PlayDino 2

Три из них: скин начальной категории в ранней версии, скин по «Звёздным войнам» и скин Mario, показанный дважды - до и после доработки анимации.

Монеты

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

Монета PlayDino 1
Монета PlayDino 2

Стикерпак

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

Стикер PlayDino 1
Стикер PlayDino 2
Стикер PlayDino 3
Стикер PlayDino 4
Стикер PlayDino 5
Стикер PlayDino 6
Стикер PlayDino 7
Стикер PlayDino 8
Стикер PlayDino 9
Стикер PlayDino 10
Стикер PlayDino 11
Стикер PlayDino 12
Стикер PlayDino 13
Стикер PlayDino 14
Стикер PlayDino 15
Стикер PlayDino 16
Стикер PlayDino 17
Стикер PlayDino 18
Стикер PlayDino 19

Партнёры по продвижению

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

Созвон с партнёром по продвижению PlayDino 1
Созвон с партнёром по продвижению PlayDino 2
Созвон с партнёром по продвижению PlayDino 3
Созвон с партнёром по продвижению PlayDino 4
Созвон с партнёром по продвижению PlayDino 5
Созвон с партнёром по продвижению PlayDino 6

Последняя версия

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

Результат

Работающий пресейл с поддержкой нескольких валют, прозрачным отслеживанием статуса и интерфейсом, который осилит игрок без опыта в крипте. Экономика и античит работают под нагрузкой в 10 000+ одновременных пользователей, попытки мошенничества и эксплойтов ловятся автоматически.

Проекты

ROXL - портфолио, блог и каталог ИИ-решений на трёх языках

ROXL - портфолио, блог и каталог ИИ-решений на трёх языках

До: у кейсов, статей и ИИ-решений не было общего дома, и каждое добавление означало ручную работу на каждом языке. После: сайт на Next.js на трёх языках, где новый кейс или статья, часто написанные вместе с coding-агентом, выходят одним коммитом.

Q-BitX, постквантовый биткоин: майнинг-пул, кошелёк и нода

Q-BitX, постквантовый биткоин: майнинг-пул, кошелёк и нода

До: новый постквантовый блокчейн на Proof-of-Work без запущенных нод, без пула и без простого способа подключиться. После: первая нода в сети, Stratum-пул на Go в бета-версии на pools.qbitx.org, доработанный кошелёк и быстрый старт ноды в Docker под macOS.

MEV-боты - исследования и разработка в Ethereum

MEV-боты - исследования и разработка в Ethereum

До: паттерны MEV-атак в Ethereum были чёрным ящиком, и строить бота приходилось наугад, не зная, как ведут себя контракты и пулы. После: проверенная связка на Hardhat, Foundry и тестовой сети Sepolia, ответы от контрибуторов Artemis и паттерны стратегий, переданные обратно в Artemis и mev-template-rs.

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок