Бекенд-симулятор космічної колонії на Node.js з елементами виживання, мультиплеєром через вебсокети та збереженням прогресу в базу даних MySQL.
- Справжній ігровий рушій (Engine): Бекенд самостійно крутить цикли гри, розраховує споживання кисню, їжі, енергії та зношеність корпусу.
- Розумні колоністи: Кожен член екіпажу має свою роль (Командир, Інженер, Вчений, Медик), рівень здоров'я, витривалості та настрою. Їм можна роздавати таски
- Мультиплеєр (Socket.io): Підтримка кількох гравців у сесії, ріл-тайм чат та синхронізація дій між користувачами.
- Випадкові події: Від сонячних спалахів до метеоритних дощів — колонія має виживати в суворих умовах космосу.
- Автентифікація & БД: Реєстрація, логін через JWT-токени, хешування паролів (Bcrypt) та збереження сесій в MySQL через пул з'єднань (mysql2/promise).
- Бекенд: Node.js, Express.js
- База даних: MySQL (через mysql2 Connection Pool)
- Real-time зв'язок: Socket.io
- Безпека: JSON Web Tokens (JWT), Bcrypt
- Фронтенд: Vanilla JS, HTML5, TailwindCSS
Для роботи потрібен встановлений MySQL сервер (наприклад, через XAMPP). Зайдіть у консоль MySQL та виконайте цей SQL-скрипт для створення таблиць:
CREATE DATABASE IF NOT EXISTS space_colony; USE space_colony;
CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE IF NOT EXISTS game_sessions ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, station_name VARCHAR(50), cycle INT DEFAULT 0, terraforming_level INT DEFAULT 0, resources_oxygen FLOAT, resources_energy FLOAT, resources_food FLOAT, resources_hull FLOAT, resources_research_points FLOAT, game_data JSON, started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE );
Відкрийте термінал у папці проекту та встановіть всі потрібні пакети: npm install
Створіть файл .env у корені проекту і додайте туди свої налаштування. Приклад:
PORT=3001 NODE_ENV=development
DB_HOST=localhost DB_PORT=3306 DB_USER=space_colony_user DB_PASSWORD=твій_пароль DB_NAME=space_colony
JWT_SECRET=super-secret-key-change-me JWT_EXPIRE=7d
Запускаємо рушій колонії: npm start
Сервер підніметься, підключиться до бази та почне симуляцію. Відкрийте браузер і перейдіть за адресою: http://localhost:3001
- src/api/ - Express-роутери (автентифікація, ігрові ендпоінти).
- src/core/ - Ядро симуляції (Colony.js, Colonist.js, Engine.js). Тут живе вся математика гри.
- src/database/ - Підключення до пулу MySQL.
- src/services/ - Сервіси роботи з юзерами та вебсокетами.
- public/ - Фронтенд (HTML/JS/CSS).