Назад к проектам

Lancy Engine

LancyEngine — самописный JS-движок для 2D-игр с компонентной архитектурой. Подходит для платформеров, аркад и проектов, где важны простота и быстрые решения.
Lancy Engine

LancyEngine: самописный 2D-движок на JavaScript

LancyEngine — это авторский игровой движок для создания браузерных 2D-игр на JavaScript. Проект разработан как pet-project и показывает, как можно самостоятельно построить основу игрового фреймворка: от игрового цикла и сцен до компонентов, физики, коллизий, камеры, анимаций, звука и интерфейса. Движок не пытается заменить крупные решения вроде Unity или Phaser, но хорошо подходит для обучения, экспериментов и создания небольших игровых проектов.

Архитектура LancyEngine построена вокруг игровых объектов и компонентов. Вместо того чтобы описывать всю логику объекта в одном большом классе, поведение можно собирать из отдельных частей: трансформации, спрайта, коллайдера, физики, анимации, камеры и других модулей. Такой подход делает код гибким и понятным. Один объект может быть персонажем с управлением, столкновениями и анимацией, другой — статичной платформой, фоном или элементом интерфейса.

Возможности движка

В движке предусмотрены базовые системы, которые нужны для большинства простых 2D-игр. Есть управление сценами, система игровых объектов, загрузчик ассетов, обработка пользовательского ввода, менеджер звука, событийная система, модуль векторной математики, работа со спрайтами и анимациями. Отдельно реализованы коллизии, collision world, collision shapes и spatial hash grid, что помогает организовывать столкновения между объектами и оптимизировать проверку пересечений.

Также в проекте есть набор UI-компонентов: кнопки, панели, изображения и текстовые элементы. Это позволяет создавать не только сам игровой процесс, но и простые меню, интерфейс игрока, экраны паузы, информационные панели и другие элементы, которые часто нужны даже в небольших играх.

Преимущества

Главное преимущество LancyEngine — прозрачность. В отличие от больших движков, здесь проще понять, как устроена каждая система и как данные проходят от ввода пользователя до обновления объектов на экране. Такой проект полезен для разработчика, который хочет глубже разобраться в геймдеве, архитектуре JavaScript-приложений и принципах построения движков.


Ещё один плюс — модульность. Разные части движка разделены по зонам ответственности: core отвечает за основу, components — за поведение объектов, math — за вычисления, ui — за интерфейс. Благодаря этому движок можно постепенно развивать: добавлять новые компоненты, улучшать физику, расширять систему анимаций или подключать собственные инструменты.

Недостатки и ограничения

Как и любой самописный pet-проект, LancyEngine имеет ограничения. Он хорошо подходит для небольших проектов и прототипов, но для крупных коммерческих игр может потребовать серьёзной доработки. В нём нет визуального редактора сцен, готового редактора уровней, большой экосистемы плагинов и инструментов, которые обычно есть у профессиональных движков.


Какие игры можно делать

LancyEngine лучше всего подходит для 2D-платформеров, аркад, раннеров, top-down игр, небольших головоломок, мини-RPG, демо-сцен и учебных проектов. На нём удобно собирать прототипы игровых механик: движение, прыжки, столкновения, сбор предметов, простых врагов, интерфейс, анимации и переходы между сценами.

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

Итог

LancyEngine — это не просто набор JavaScript-файлов, а полноценная демонстрация инженерного подхода к созданию игрового движка. Он показывает навыки проектирования архитектуры, разделения логики на модули, работы с компонентами и построения интерактивных 2D-приложений. Такой проект хорошо смотрится в портфолио, потому что демонстрирует не только умение писать код, но и понимание того, как устроены игровые системы изнутри.

Связаться со мной

Расскажите о задаче, проекте или идее. Отвечу и подскажу, с чего лучше начать.

Написать