No description
Find a file
2026-03-26 14:42:12 -04:00
.agent/skills chore: configure agent skills symlinks 2026-02-14 10:46:43 -04:00
.agents/skills docs: standardize agent documentation and add skills 2026-02-14 10:33:02 -04:00
.claude/skills chore: configure agent skills symlinks 2026-02-14 10:46:43 -04:00
.github chore: add contributing guidelines and pull request template 2025-09-21 10:52:25 -04:00
.husky chore: improve husky 2024-06-21 01:52:24 -04:00
assets Add assets 2023-07-18 01:07:41 -04:00
core fix(reconnection): deep fix of reconnection logic across server and core 2026-02-23 16:19:50 -04:00
docs feat: instrument Node↔C++ IPC metrics in EDOPro and add reproducible performance benchmarks 2026-02-13 21:17:52 -04:00
mercury chore: update mercury 2026-03-18 18:00:55 -04:00
src Added: Message manager in duel 2026-03-26 14:42:12 -04:00
tests/modules Added: Message manager in duel 2026-03-26 14:42:12 -04:00
.dockerignore chore: update gitignore and dockerignore 2026-03-17 20:38:37 -04:00
.env.example fix: rename TCP_PORT and MERCURY_TCP_PORT to HOST_PORT and MERCURY_PORT in .env.example 2025-11-03 17:50:30 -04:00
.gitignore chore: update gitignore and dockerignore 2026-03-17 20:38:37 -04:00
.gitmodules refactor: ♻️ Added submodule for typeorm entities and migrations 2024-11-03 16:15:12 -04:00
AGENTS.md docs: standardize agent documentation and add skills 2026-02-14 10:33:02 -04:00
build_core_integrator.sh build: migrate conan to vcpkg 2026-01-04 14:54:07 -04:00
buildspec.yml chore(build): Download certs from s3 2024-02-16 15:44:09 -06:00
CHANGELOG.md chore(main): release 2.12.0 (#213) 2026-01-26 14:45:06 -04:00
clone_repositories.sh Feature/run without docker (#176) 2025-06-27 16:11:49 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2023-07-14 20:35:16 -04:00
commitlint.config.js chore: added commit lint 2024-06-21 01:49:50 -04:00
CONTRIBUTING.md chore: add contributing guidelines and pull request template 2025-09-21 10:52:25 -04:00
docker-compose.prod.yaml feat: add production Docker Compose file 2026-01-07 12:14:08 -06:00
docker-compose.yaml chore(docker): update docker-compose and remove development Dockerfile 2025-07-14 12:15:35 -04:00
Dockerfile chore: update mercury 2026-03-18 18:00:55 -04:00
eslint.config.mjs docs: standardize agent documentation and add skills 2026-02-14 10:33:02 -04:00
genesys.json feat(genesys): add new cards and adjust points for existing entries 2026-03-07 18:59:28 -04:00
init.sql chore(docker): update docker-compose and remove development Dockerfile 2025-07-14 12:15:35 -04:00
install_dependencies.sh Security audit 2026 01 (#215) 2026-01-28 18:37:05 -04:00
jest.config.js fix: command match m (#216) 2026-01-28 18:43:07 -04:00
package-lock.json chore: update flatted to 3.4.2 and undici to 7.24.4 2026-03-18 18:02:54 -04:00
package.json chore: add zod dependency 2026-02-26 13:12:53 -04:00
README.md Security audit 2026 01 (#215) 2026-01-28 18:37:05 -04:00
setup_resources.sh Feature/run without docker (#176) 2025-06-27 16:11:49 -04:00
tsconfig.eslint.json Alternatives databases and structure (#149) 2025-04-02 19:13:50 -04:00
tsconfig.json Alternatives databases and structure (#149) 2025-04-02 19:13:50 -04:00

Evolution Server 🎮

PR Pipeline

Welcome to Evolution Server, a scalable and modern backend server for Yu-Gi-Oh! matches, compatible with EDOPro, Koishi, and YGO Mobile clients. Unlike traditional implementations, Evolution focuses on code extensibility and data collection, enabling new gameplay features and statistics.


Features

  • 🏰 Room creation through the EDOPro lobby.
  • 📱 Duel creation supported via Koishi and YGO Mobile.
  • 🧪 Cross-client duels between different platforms (experimental).
  • 🔌 Automatic reconnection after disconnection or crash.
  • 📊 Match data collection for future analytics.
  • 🚀 Isolated core logic for each match.

📋 Requirements

  • Node.js (>= 24.11.0)
  • Node.js (>= 24.11.0)
  • CMake (>= 3.18)
  • Vcpkg (handled automatically by build script)
  • System dependencies (Ubuntu/Debian): wget, git, tar, curl, zip, unzip, pkg-config, g++, make , cmake, ninja-build

⚙️ Configuration

Before running the server, you must configure the environment variables.

  1. Copy the example configuration file:

    cp .env.example .env
    
  2. Edit .env with your settings (ports, database credentials, etc.).


🚀 Vcpkg Setup (Linux)

Vcpkg is used to manage C++ dependencies. The build_core_integrator.sh script handles the bootstrapping and installation of Vcpkg automatically.

If you want to manually set it up:

git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh

🛠️ Manual Installation (No Docker)

1 Clone the main project

git clone --recursive https://github.com/diangogav/EDOpro-server-ts
cd EDOpro-server-ts

📝 Install System Dependencies (Optional helper)

You can use the provided script to install system dependencies on Ubuntu/Debian:

sudo bash install_dependencies.sh

2 Clone external dependencies

bash clone_repositories.sh

This will create a repositories/ folder with all required assets (scripts, databases, banlists, etc).

3 Organize assets into their expected locations

bash setup_resources.sh

This mimics the layout used in the Dockerfile (e.g. copying resources to ./mercury, ./scripts/evolution, etc.).

4 Build the CoreIntegrator (native C++)

bash build_core_integrator.sh

This compiles the duel core used by the backend using Vcpkg and CMake.

5 Install Node.js dependencies

npm install

6 Launch the server in development mode

npm run dev

Server should now be running and listening on the configured ports (default: 7911, 7922, 4000).


🐳 Running with Docker (Alternative)

If you'd rather use Docker:

Build the image

docker build -t evolution-server .

Run the container

docker run -p 4000:4000 -p 7911:7911 -p 7922:7922 evolution-server

🙏 Acknowledgments

  • Based on Multirole by @Dyxel
  • Inspired by the amazing work of the Project Ignis, MyCard and Evolution communities