Как я случайно Cheat Engine для браузерных игр написал

Как-то ковыряясь в очередной самопальной браузерной игре, я задумался о том, где она хранит свои переменные. Очень уж хотелось бабосиков себе в ней намутить. Да, подобные приколы умерли вместе с Artmoney и многие считают, что такие выкрутасы в однопользовательских логальных играх — удел неудачников. Но, пытливый ум он иногда просто бесит 🙁
Читать дальшеКак заставить ESP32 петь: аудио через I2S
Решил разобраться, как вывести звук с ESP32. В моих проектах часто использую эту плату, но с аудио раньше не сталкивался. Оказалось, всё не так сложно, как кажется на первый взгляд.
Как я в Unity под капотом оптимизировал шейдеры для Android
Недавно я столкнулся с интересной задачей: нужно было оптимизировать шейдеры для Android-версии игры на Unity. Дело в том, что на некоторых устройствах игра начинала прилично тормозить из-за сложных шейдеров. Я решил разобраться, как можно улучшить производительность без потери качества графики.
Асинхронность в C#: как не запутаться в потоке
Введение: зачем нам асинхронность?
В моих проектах я часто сталкиваюсь с задачами, которые требуют длительного времени для выполнения, например, загрузка данных из сети или обработка больших объёмов информации. Если такие задачи выполняются синхронно, приложение может «зависнуть», пока они не завершатся. Чтобы избежать этого, я использую асинхронное программирование.
Как я ускорил рендер в Godot Engine: оптимизация шейдеров
Когда пиксели бегут быстрее
На днях решил покопаться в шейдерах своего проекта на Godot Engine. У меня там сцена с большим количеством частиц, и рендер начал подтормаживать. Понял, что нужно что-то менять в шейдерах, чтобы всё летало как раньше.
Первым делом я решил оптимизировать фрагментный шейдер для частиц. Убрал ненужные вычисления и заменил несколько операций на более быстрые аналоги. Вот что получилось:
Обновление Godot 4.7.1: что пофиксили
Обновление Godot 4.7.1: что пофиксили
Разработчики выкатили поддерживающий релиз Godot 4.7.1 спустя почти четыре недели после выхода версии 4.7. Команда успела подготовиться к первому релизу для поддержания стабильности. Этот прогресс сделан в тандеме с версией 4.8, первый снимок разработки которой вышел на прошлой неделе.
В релизе 4.7.1-stable исправлены критические ошибки и сбои, о которых сообщало сообщество. Всего 42 участника внесли 78 исправлений. Среди изменений: улучшение кода в 2D-редакторе, исправление ошибок в Curve3D, оптимизация анимации, настройка сортировки в Asset Store и другие улучшения в редакторе и интерфейсе.
Шейдер с эффектом светящегося контура в Unity
Шейдеры в Unity всегда казались мне чем-то вроде тёмного искусства, пока я не решил добавить в свою игру эффект светящегося контура для объектов. Представьте: персонаж подсвечивается, как будто его окружает неоновая аура, — выглядит круто и сразу привлекает внимание. В этой статье расскажу, как я создал такой шейдер, с какими проблемами столкнулся и как вы можете повторить это без боли. Спойлер: это проще, чем кажется!
Читать дальшеКак выбрать библиотеку для визуализации данных в Python
Когда я только начинал работать с данными, выбор библиотеки для визуализации был настоящей головной болью. Matplotlib казался слишком сложным, Seaborn — слишком ограниченным, а Plotly пугал интерактивностью, которая мне вроде бы и не нужна. После десятка проектов я разобрался, что к чему, и теперь делюсь своими выводами, чтобы вы не тратили время на те же грабли.
Читать дальшеКак оптимизировать Python-скрипты для обработки больших данных
Работа с большими данными в Python — это всегда баланс между скоростью, памятью и читаемостью кода. Недавно я столкнулся с задачей обработки логов веб-сервера размером в несколько гигабайт, и, честно говоря, мой первый скрипт работал так медленно, что я успел заварить три чашки кофе, пока он завершился. В этой статье поделюсь несколькими приемами, которые помогли мне ускорить обработку данных, не усложняя код до состояния «кто это вообще писал?».
Читать дальшеРасширяем шейдер PlayStation 1 — Аффинная текстурная интерполяция в Unity
В прошлой статье мы реализовали эффект дрожания вершин, характерный для PlayStation 1, воссоздав ограниченную точность вычислений, свойственную старым консолям. Теперь добавим еще одну ключевую особенность рендеринга PS1 — аффинную интерполяцию текстур.
На оригинальной PlayStation не использовалась перспективная коррекция текстур, что приводило к заметным искажениям при изменении угла наклона полигонов. Этот эффект был побочным результатом работы GPU консоли и активно использовался в таких играх, как Metal Gear Solid и Tomb Raider. Давайте воссоздадим этот визуальный артефакт в Unity!
Читать дальше