Блог
Технические заметки об ощущении игры, инженерии производительности и архитектуре движка. Большинство выросло из записей, сделанных во время починки чего-нибудь.
Unreal Engine 5 GAS: building an ability system right
My dash ability fired once on the client and then went silent. The bug was not GAS itself, it was touching an attribute without a GameplayEffect.
Unity Profiler: Find the Real Bottleneck, 22 ms to 8 ms
Frame time hit 22 ms and everyone blamed the shaders. The Unity Profiler capture said otherwise; here is how measuring took it down to 8.7 ms.
Coyote time и jump buffer: двенадцать строк хорошего прыжка
Когда игроки говорят «прыжок ощущается плохо», обычно они имеют в виду две недостающие функции. Обе пишутся за полчаса.
Lag Compensation: Why Your Perfect Shot Did Not Count
How server-side lag compensation is actually built for shooters: the rewind buffer, the numbers that tune it, and the point where the window has to stop.
Управление памятью в C++ в игровом движке: кто съедает кадр?
Вызов new внутри кадра вызывал всплески в 13 мс в профайлере; после арены кадра и пуллинга объектов пик упал до 7,9 мс. Вот как это произошло.
Blueprint или C++ в Unreal: реальная цена в миллисекундах
Виртуальная машина Blueprint незаметна в большинстве сцен, но при десятках тысяч узлов за тик она стоила нам 7 мс. Разбираю гибридное разделение в цифрах.
Чему я научился после миграции на DOTS/ECS
Мы перевели часть продакшен-проекта на ECS, и время кадра упало на 34 %. Но выигрыш пришёл не оттуда, откуда мы ждали.
Оптимизация мобильных игр: draw calls, overdraw и +17 FPS
Сцена tower defense держала всего 41 FPS на среднем Android. Рассказываю, как замеры draw calls, материалов и overdraw подняли ту же сцену до 58 FPS.
GPU-система частиц на HLSL: как перешагнуть миллион частиц
Я перенёс состояние частиц полностью на GPU с помощью StructuredBuffer и DrawProceduralIndirect: от 40 тысяч до миллиона — и замерил, чего это стоило.
Самый простой способ объяснить клиентское предсказание
Мультиплеерное движение выглядит сложным. На деле это три шага: предсказать, сравнить, исправить.
Game engine architecture from scratch: six layers, one loop
Writing your own engine starts with getting the layer order right. Notes on subsystem order, fixed timestep simulation, and when to move to a ready engine.
URP vs HDRP: choosing the right Unity render pipeline
Your target platform list may have already decided; I measured HDRP's volumetric and SSR bill, URP's mobile advantage and what a late pipeline switch really costs.
Стилизованное освещение: дальше cel shading
Ступенчатые тени — первый шаг, который знают все. Настоящий характер живёт в контровом свете и в том, как выбран цвет тени.
Поиск пути в игре: NavMesh, A* и flow field на 200 агентов
Почему поиск пути захлёбывается в сцене осады с 200 агентами, где NavMesh незаметно вас обманывает и где именно проходит граница между A* и flow field.
Архитектура выделенного сервера: 48 игроков на контейнер
Мы отделили авторитетный игровой сервер от бэкенда, переписали матчмейкинг и выделение комнат и измерили реальную стоимость одного онлайн-игрока.
Почему контроллер персонажа кажется скользким в игре
Когда игроки говорят, что персонаж скользит, они описывают четыре разные проблемы: торможение, определение земли, работу с уклонами и интерполяцию.
Behavior Tree или Utility AI?
Верным может быть и то, и другое. Решает то, сколько вещей ваш противник должен взвешивать одновременно.
CI/CD в разработке игр: что меняют ночные сборки проекта
Настройка автоматической сборки в маленькой команде заняла пять дней: средняя жизнь сломанного коммита упала с 2,5 дней до 9 часов, а релизы стали спокойнее.
Как издать игру в Steam: что делать и в какой момент
В первой игре я открыл страницу магазина за три недели до релиза и стартовал с 480 вишлистами; во второй я построил весь календарь в обратном порядке.
Что студии на самом деле ищут в портфолио программиста игр
Я сидел и по другую сторону собеседования. В портфолио, которые выделяются, повторяется несколько вещей.
Результатов: 20
Соберём следующий билд вместе.
Полная занятость, фриланс-проект или технический консалтинг — ящик всегда открыт.