@coverpixi/core
v0.1.0
Published
Движок для HTML5-игр на PixiJS: экраны, цикл, ассеты, ввод, UI, темы и система плагинов
Maintainers
Readme
@coverpixi/core
Движок для HTML5-игр на PixiJS: экраны, игровой цикл, ассеты, ввод, UI с темами, физика, анимация, частицы, сохранения и система плагинов.
Ставится пакетом и обновляется версией. Игра содержит только свой код.
npm install @coverpixi/core pixi.jsПроще начать с готового проекта — он приезжает со сборкой, конфигом и парой экранов:
npm create coverpixi-game@latest my-gameЗачем
PixiJS — это рендерер. Он рисует спрайты и не отвечает на вопросы, из которых состоит разработка игры: как переключать экраны, когда грузить ассеты, как сделать физику независимой от частоты кадров, где хранить прогресс, как не показать рекламу поверх работающей симуляции.
Coverpixi отвечает на них один раз, а не в каждом проекте заново.
Что внутри
import { GameApplication, GameLoop, ScreenManager, Tweens } from '@coverpixi/core'
const game = new GameApplication()
await game.init(document.querySelector('#app'))
const loop = new GameLoop()
const screens = new ScreenManager(game.pixi.stage, game.scale)
const tweens = new Tweens()
loop.onFixed((step) => screens.fixedUpdate(step))
loop.onFrame((frame) => {
tweens.update(frame.dt, frame.unscaledDt)
screens.update(frame.dt, frame.alpha)
})
loop.attach(game.pixi.ticker)Цикл с фиксированным шагом. Симуляция считается 60 раз в секунду независимо
от частоты кадров — на 144 Гц прыжок не станет ниже, а на просадке персонаж не
проскочит сквозь платформу. Рендер идёт отдельно, с интерполяцией по alpha.
Пауза и timeScale — часть цикла, а не костыль поверх него.
Экраны с переходами и загрузкой. Экран объявляет нужные бандлы ассетов; менеджер догружает их с прогрессом и строит экран уже с готовыми текстурами — внутри View нет ни одной проверки «а картинка приехала?». Смена перекрывается затемнением; экран, упавший при построении, снимается со сцены, а не остаётся сыпать ошибками каждый кадр.
Ввод как карта действий. Игра спрашивает input.wasPressed('jump'), а не
«нажат ли пробел». Клавиатура, геймпад, экранный стик и кнопки под палец —
источники сигналов; переназначение клавиш меняет таблицу, а не код.
UI с темами. Кнопки, карточки, списки, ползунки, поля ввода, Flex и Grid. Оформление вынесено в JSON: тема ставится пакетом и настраивается из конфига проекта, не требуя форка.
Анимация и таймеры. tweens.to(panel, { y: 0 }, { duration: 0.3 }),
цепочки, параллели, задержки, 20 кривых. Время берётся из кадра, поэтому
анимации подчиняются паузе — иначе они доигрывали бы под рекламой.
Физика. Тела, столкновения с тайлмапом, пространственный хеш для широкой фазы, отладочная отрисовка коллайдеров. Уровни импортируются из Tiled.
Сохранения. JSON с версией и миграциями: формат сейва меняется на втором обновлении игры, и без версии старые сохранения либо ломают игру, либо молча стираются. Чтение не бросает — при любой поломке вернётся значение по умолчанию.
Частицы и пул. Эмиттер на данных (конфиг кладут в JSON) и переиспользование объектов: залп на двести частиц не должен давать сборку мусора посреди боя.
Звук с шинами и микшером, камера со следованием и тряской, слои и параллакс, счётчик кадров с худшим временем за интервал.
Плагины
Возможности, нужные не каждой игре, подключаются отдельно и кладут себя в контекст:
npx coverpixi add platform # реклама, облачные сохранения, рекорды, покупки
npx coverpixi add i18n # словари, подстановки, склоненияconst reward = await ctx.platform.ads.rewarded()
if (reward.ok) grantLife()Свой плагин — это объект с name и setup; ядро при его добавлении не
меняется. Подробности — в документации.
Точки входа
| Импорт | Что отдаёт |
|---|---|
| @coverpixi/core | всё, что нужно игре в рантайме |
| @coverpixi/core/build | вклад плагинов в конфиг Vite; выполняется в Node |
Вторая вынесена отдельно намеренно: она знает про сборщик, и в игровом бандле ей делать нечего.
Требования
- Node 20.19+ для сборки
pixi.js8 как peer-зависимость@pixi/sound6 — если пользуетесь звуком
TypeScript не обязателен, но движок написан на нём и отдаёт полные типы: состав подключённых плагинов виден компилятору, а не только в рантайме.
Документация
Полное описание — в репозитории: устройство MVVM, темы, вёрстка, настройки графики, работа с площадками.
Лицензия
MIT
