Mod Engine — это модульный игровой движок для создания многопользовательских 2D-игр прямо в браузере.
Построен на чистом JavaScript, без фреймворков, с фокусом на гибкость, модульность и реальное время.
- Модульная архитектура — каждый объект состоит из набора модулей (спрайты, движение, инвентарь, коллизии и др.)
- Многопользовательский режим — синхронизация через WebSocket в реальном времени
- Динамическая загрузка модулей — можно добавлять новые поведения без перезаписи ядра
- Canvas-рендеринг — отрисовка спрайтов, анимаций, сетки мира
- Физика и коллизии — система обнаружения столкновений
- Инвентарь и предметы — подбор, хранение, выброс предметов
- Камера с плавным следованием — привязка к игроку или объекту
- Конфигурируемые карты — редактирование через JSON-файлы
🧩 Как работают модули?
Модуль — это независимый компонент, который определяет поведение объекта.
Пример модуля `square.js`:
javascript
export function create(params) {
const finalParams = Object.assign({ color: 'red', size: 1 }, params);
return {
draw(ctx, x, y, cellSize) {
ctx.fillStyle = finalParams.color;
ctx.fillRect(x * cellSize, y * cellSize,
finalParams.size * cellSize,
finalParams.size * cellSize);
},
params: finalParams
};
}
## Объект может комбинировать несколько модулей:
{
"player": {
"modules": ["sprite", "move", "collision", "inventory"],
"params": {
"spriteName": "hero",
"speed": 1,
"size": 2
}
}
}
🚀 Быстрый старт
Клонируйте репозиторий
bash
git clone https://github.com/zareyn/ModEngine-OpenSource.git
cd ModEngine-OpenSource
Установите зависимости
bash
npm install
Запустите сервер
bash
npm start
Откройте в браузере
text
http://localhost:3000
📖 Примеры использования
Создание нового модуля
Добавьте файл в public/modul/myModule.js
Экспортируйте функцию create(params)
Добавьте методы (draw, update, setupControls и т.д.)
Укажите модуль в example.json
Добавление объекта на карту
Определите объект в example.json
Разместите его в map.json:
json
{
"name": "myObject",
"x": 10,
"y": 10
}
🌐 Мультиплеер
Движок поддерживает синхронизацию:
Позиций игроков
Состояний модулей
Инвентаря
Предметов на карте
Сервер отправляет обновления 20 раз в секунду, клиенты интерполируют движения.
Автор
Zareyn Emanachi
Разработчик игр и open-source энтузиаст.
