TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
Life of Phil

10 Sep 2023, 19:14

Telegram'da ochish Ulashish Shikoyat qilish

00:25
Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Prev Next
Поиграть можно тут (пишите фидбек)!

Видео нарендерил в remotion’e — оказалось удобно, переиспользовал половину компонентов из игры, 90% анимаций — интерполяция каких-то свойств по кардру.

Картинки нарисовал в фигме и анимировал в лотти.

Сама игра написана на реакте, на nextjs, zustand для работы со стейтом, dndkit.com для drag'n'drop'a, jest для тестов, cypress для e2e-тестов. Написал игру довольно быстро, потом посмотрел на производительность в Lighthouse — 27/100. Спасибо Дане за подсказки про оптимизацию фронта.

1. Next использует гидрацию — рендерит статическую страницу, которая показывается пользователю, а потом начинает выполняться JS. Для начальных компонентов (попап и сетка) сверстал статические заглушки (svg вместо лотти, сетка без логики).
2. Компоненты, которые долго не будет видно вроде результаты игры вынес в ssr: false, чтобы они рендерились, когда игра закончится.
3. Самая популярная библиотека для popup-ов работала плохо, так что переписал всё на html5-dialog.
4. Добавил мемоизацию всем компонентам.
5. Lottie анимации — JSON, описывающий все SVG-трансформации, попробовал сжать их gzip’ом — получилось около 90% оптимизации.
6. Оказалось, что большая часть бандла — проигрыватель lottie-анимаций. Переделал всё на dotlottie, который умеет проигрывать только svg-анимации. После этого всё уже было оранжево-зелёным, только советовало мне уменьшить размер бандла.
7. Пошёл смотреть минифицированный бандл глазами — огромная часть была занята quizlet-колодами (для игры нужно всего несколько карточек). Вынес всю эту логику в api-route, чтобы они не включались в бандл.

После этого performance score стал близким к 100, так что я успокоился. Отдельно пришлось развлекаться с e2e тестами: drag'n'drop то не регистрировал перетаскивание фигур, то отпускание.

168 0 3 2 11
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot