GPT Сгенерировал картинку игры, пытаюсь ее разработать. Часть 2
3 день соло разработки. Рассказываю, как я решил разработать 3д игру без опыта в геймдев, с какими проблемами столкнулся.
Читать далее3 день соло разработки. Рассказываю, как я решил разработать 3д игру без опыта в геймдев, с какими проблемами столкнулся.
Читать далееКаждый день мы пишем JSX, используем хуки и стараемся не нарушать их строгие правила. Но как вся эта «магия» работает под капотом? Почему условный рендер ломает useState, а индексы массива в key приводят к багам? Зачем React перешел на архитектуру Fiber и как алгоритм обходит дерево элементов, не блокируя браузер?
Чтобы перестать воспринимать React как черный ящик, лучший способ — написать его с нуля.
В этой статье мы шаг за шагом воссоздадим собственный движок React. Мы реализуем функцию createElement, разберем Fiber-архитектуру с асинхронным рендерингом, напишем алгоритм Reconciliation и создадим систему хуков, разобравшись в логике их работы.
Читать далееНа официальном сайте Deno (раздел Built for the real world) красуется любопытная табличка. Согласно их замерам, Deno уходит в отрыв от Node.js по HTTP аж в 1.65 раза:
Независимые тесты (denosaurs/bench, pkgpulse 2026, jsmanifest 2026) показывают похожую картину: Deno стабильно быстрее на HTTP-нагрузке. Я решил копнуть глубже и понять, где Deno получает преимущество по сравнению с Node.js.
Читать далееЗа две недели ко мне зарегистрировалось 176 ботов. Я полез разбираться, как они прошли мимо трёх уровней защиты, — и вылез с двенадцатью дырами, к ботам отношения не имевшими: хранимый XSS через JSON-LD, чужие задачи по одному идентификатору, сессия, которую нельзя погасить сменой пароля.
И одна, из-за которой до сих пор стыдно: все мои лимиты по IP обходились одной строкой в HTTP-заголовке. Проверил на собственном проде — сорок запросов, ноль отказов.
Внутри: разбор атаки и аудит с кодом, ИИ-помощник на ключе пользователя (и асинхронный генератор, молча съедавший ответы), 334 статьи как инженерная задача.
Читать разборЯ честно пошёл изучать шейдеры, чтобы сделать игру красивее. Получилось. А потом посмотрел на два скриншота рядом и понял: большую часть разницы дали не шейдеры.
Её дали пять довольно тупых правок от двух до тридцати строк каждая. Самая полезная - две строки в конфиге камеры.
Внутри: таблица «цена / что чинит», формулы контактной тени, детерминированный хэш против одинаковых плиток, запечённый AO на стыках. И честный список того, что стоило дорого, а дало меньше.
Читать далееУмереть в моей игре нельзя. Можно только похудеть.
У героя нет полоски здоровья, ключей и очков - есть масса. Она же здоровье, она же размер, она же ключ от двери, она же оценка за уровень. Одно число вместо трёх систем.
Внутри: как из этого правила сами собой выросли все механики, почему прыжок специально не зависит от массы, и как безобидная просьба «сделай камни процентов на десять покрупнее» закончилась правкой геймдизайна.
Читать далееЧтобы сказать Яндексу «страница изменилась, приди посмотреть», аккаунт в Вебмастере не нужен. Есть протокол IndexNow: вы кладёте в корень сайта файл с ключом, шлёте POST со списком адресов — и поисковик приходит за часы вместо недель. Ни регистрации, ни OAuth, ни капчи. Реализуется тридцатью строками на Node.js без единой зависимости.
Ниже — рабочий скрипт целиком, шесть кодов ответа, которые он может получить, и три грабли, на которые я наступил, пока доводил его до состояния «запустил и забыл». Одна из них интереснее прочих: fetch в Node падает с fetch failed на том же запросе, который curl отправляет с первого раза.
Встроенный граф Obsidian хорош ровно до момента, когда vault разрастается и превращается в клубок линий. Я решил сделать из базы знаний место, которое можно запомнить, — и собрал open-source плагин CosmoGraph 3D на Three.js и WebGL. В статье разбираю весь путь от metadataCache и wikilinks до сферической раскладки по золотому углу, процедурного рельефа, кратеров, bloom и нативного ItemView внутри Obsidian. Без облачной обработки заметок и без рассказов о «магии»: только код, архитектурные компромиссы и честный список того, что ещё предстоит ускорить.
Заглянуть под поверхность