Skip to content

nyarachun/SC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌌 Space Colony: The Reactive Frontier

Бекенд-симулятор космічної колонії на 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

⚙️ Як запустити локально

1. Підготовка бази даних

Для роботи потрібен встановлений 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 );

2. Встановлення залежностей

Відкрийте термінал у папці проекту та встановіть всі потрібні пакети: npm install

3. Налаштування середовища (.env)

Створіть файл .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

4. Запуск сервера

Запускаємо рушій колонії: 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).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors