Многопользовательская 2D MMORPG в стиле Chibi с открытым миром, транспортом, прокачкой, крафтом, квестами, диалогами с NPC, мировыми боссами и сетевым коопом в реальном времени.
Основной репозиторий игры, desktop-клиента и production multiplayer-сервера. Больше не нужно вручную переносить изменения между отдельными папками: веб-игра живёт в корне, Rust-сервер — в
server/, Windows-клиент WebView — вdesktop/.
Создай и отправь тег — GitHub Actions соберёт .exe, встроит в него текущий веб-бандл и создаст GitHub Release. По умолчанию клиент подключается к wss://testgame.zei.su/ws.
git tag v0.1.0
git push origin v0.1.0В Release публикуются portable chibimadness-desktop.exe и рекомендуемый ChibiMadness-Setup-<version>.exe. Setup позволяет выбрать папку установки, создаёт Start Menu/опциональный desktop shortcut и удаляется из Windows Apps. Это per-user установщик без UAC; стандартная папка — %LOCALAPPDATA%\Programs\ChibiMadness.
Также workflow можно запустить вручную во вкладке Actions: в этом случае .exe будет доступен как artifact запуска. Чтобы вручную указать другой сервер при старте, используй:
.\chibimadness-desktop.exe --server wss://example.com/wsНачиная с desktop-клиента с updater, каждый GitHub Release содержит web-patch.zip и patch-manifest.json. При запуске клиент берёт последнюю проверенную web-версию: TS/JS-логику, карту, объекты, UI и ассеты можно менять последующими релизами без новой загрузки .exe.
Patch cache находится в %LOCALAPPDATA%\ChibiMadness\web-patches. Bundle проверяется по списку файлов, размеру и SHA-256 перед запуском; неполная загрузка игнорируется, а после успешного обновления остаётся только активная версия cache. Изменения Rust desktop-host всё ещё требуют нового .exe.
Rust-сервер в server/ — authoritative для общего мира: игроков, мобов, урона, снарядов и Nullspace. Инвентари, квесты и дропы намеренно остаются локальными. Инструкция для Linux, Nginx и PM2 находится в server/README.md.
- Node.js: версия 18.x или 20.x+ (LTS) или Bun (1.0+)
- Менеджер пакетов:
npm,pnpmилиbun - Браузер: Любой современный браузер с поддержкой HTML5 Canvas и WebSockets
Откройте терминал в корне проекта и выполните:
npm install
# или если используете bun:
# bun installВ корне проекта находится файл .env:
GEMINI_API_KEY=""
APP_URL="http://localhost:3000"
PORT=3000npm run dev
# или bun run devПосле запуска откройте в браузере: http://localhost:3000
💡 Мультиплеер: Чтобы протестировать сетевую игру, откройте сайт в двух разных вкладках или браузерах — персонажи появятся в одном мире и смогут взаимодействовать в реальном времени.
| Команда | Описание |
|---|---|
npm run dev |
Запуск dev-сервера (Express + WebSockets + Vite HMR) на порту 3000 |
npm run build |
Сборка фронтенда (vite build) и бэкенда (esbuild server.ts) в папку dist/ |
npm run start |
Запуск собранного продакшн-сервера из dist/server.cjs |
npm run lint |
Проверка типов TypeScript (tsc --noEmit) |
npm run clean |
Очистка папки сборки dist |
chibimadness-main/
├── .env # Настройки окружения (порт, API ключи)
├── index.html # Главный HTML-шаблон
├── package.json # Зависимости и скрипты
├── server.ts # Express + WebSocket бэкенд сервер
├── tsconfig.json # Конфигурация TypeScript
├── vite.config.ts # Конфигурация сборщика Vite
└── src/
├── main.tsx # Точка входа React
├── App.tsx # Главный компонент (игровой цикл, модалки)
├── index.css # Базовые стили Tailwind CSS
├── types/
│ └── game.ts # Интерфейсы TypeScript (Player, Item, Mob, Quest и т.д.)
├── components/ # UI компоненты интерфейса
│ ├── CharacterCreator.tsx # Создание и кастомизация персонажа
│ ├── HUD.tsx # ХП, мана, полоса опыта, горячие клавиши
│ ├── InventoryModal.tsx # Инвентарь и экипировка
│ ├── CraftingModal.tsx # Меню крафта предметов
│ ├── ShopModal.tsx # Магазин торговца
│ ├── SkillTreeModal.tsx # Дерево навыков
│ ├── WorldMapModal.tsx # Карта мира
│ ├── DialogueModal.tsx # Диалоги с NPC
│ ├── ChatAndEmotes.tsx # Чат и эмоции
│ ├── BossBar.tsx # Полоса здоровья босса
│ └── MobileControls.tsx # Сенсорное управление для мобильных
└── game/ # Игровой движок (Canvas 2D)
├── constants.ts # Баланс, базы данных мобов, предметов, классов
├── chibiRenderer.ts # Процедурная отрисовка чиби-персонажей и экипировки
├── worldRenderer.ts # Отрисовка мира, биомов, погоды и освещения
├── useGameEngine.ts # Физика, коллизии, бой, стейт игры
├── audioEngine.ts # Процедурные звуки и музыка (Web Audio API)
└── multiplayerClient.ts # WebSocket клиент для синхронизации игроков