Найти в Дзене

Как я ушёл с игровых движков, заблудился в коде и нашёл новые инсайты

Сначала был Phaser JS. Потом я решил, что удобнее использовать Construct 3 с его визуальным редактором. Затем перевёл игру с Event Sheets на TypeScript — больше контроля, меньше ограничений. А теперь… пишу свой движок под конкретные задачи. Вот так получилось. В путешествии никогда не знаешь куда приведет тебя новая дорога. Мне хотелось лёгкости, мобильности и минимального веса билда. Казалось, что чистый TypeScript — идеальный вариант. Глубже в рендеринг: когда начинаешь понимать, как браузер рисует игру За это время я гораздо лучше разобрался в том, как браузер обрабатывает и отрисовывает контент. Теперь вся эта кухня выглядит куда понятнее: • Critical Rendering Path показывает, как браузер превращает HTML, CSS и JS в пиксели на экране и какие шаги замедляют этот процесс. • requestAnimationFrame помогает синхронизировать отрисовку с кадровой частотой экрана и избегать лишних перерисовок. • Event loop управляет выполнением кода, а тяжёлые вычисления в основном потоке легко блокируют

Сначала был Phaser JS. Потом я решил, что удобнее использовать Construct 3 с его визуальным редактором. Затем перевёл игру с Event Sheets на TypeScript — больше контроля, меньше ограничений. А теперь… пишу свой движок под конкретные задачи. Вот так получилось. В путешествии никогда не знаешь куда приведет тебя новая дорога.

Мне хотелось лёгкости, мобильности и минимального веса билда. Казалось, что чистый TypeScript — идеальный вариант.

Глубже в рендеринг: когда начинаешь понимать, как браузер рисует игру

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

• Critical Rendering Path показывает, как браузер превращает HTML, CSS и JS в пиксели на экране и какие шаги замедляют этот процесс.

• requestAnimationFrame помогает синхронизировать отрисовку с кадровой частотой экрана и избегать лишних перерисовок.

• Event loop управляет выполнением кода, а тяжёлые вычисления в основном потоке легко блокируют интерфейс. Разгрузить его можно с помощью Web Workers и OffscreenCanvas.  

Теперь понимаю, где можно оптимизировать работу игры, где прячутся потенциальные проблемы с производительностью. Всё это полезные знания. Но вот факт: игра вообще не сдвинулась. Последнее обновление на площадке было 22 декабря 2024.

Когда вместо фич изучаешь, как их правильно делать

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

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

А потом я ещё решил использовать ИИ в разработке. Это добавило интересных инсайтов, но в какой-то момент я так сильно запутал кодовую базу, что проще было начать с нуля, чем пытаться всё разгрести.

Теперь у меня хотя бы есть понимание:

- как строить архитектуру движка и игры без хаоса,  

- как не надо работать с ИИ,  

- почему промптинг — это отдельный навык, который ближе к программированию, чем кажется.

Игры делают не идеальным кодом, а выпущенными релизами

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

Если хочется пилить HTML5 игры, то берите Construct 3 и не морочьте себе голову. А я пока еще повожусь.