Server emulator for Shadowbound, published globally by R2Games, closed in 2021.
The server is not working and this project is already abandoned. Last progress was stuck on loading screen and still figuring out serialization. We were also gathering game assets.
This project tries to reconstruct the game server-side behavior. Client files and assets are not included. This project is not official and is not associated with the original creators.
Made with Encore.
This guide assumes default settings set from the venue.xml file.
- Java 25+
- MongoDB v8.0+
- Node v18.20.8 or v20.3.0, v22.0.0+ (only for docs)
To run the server, ensure MongoDB is running on mongodb://localhost:27017. Then, run the following command:
.\gradlew run- File and API server runs on
127.0.0.1:8080 - Socket server runs on
127.0.0.1:7777
You can also run the server from IntelliJ IDE run plugin on Application.kt.
To build the server, simply run the build.bat/sh script. Output will be in deploy/. Run the deployment server using java -jar shadowbound-server.jar.
For manual build:
.\gradlew shadowJarServer will be available on the same port as development mode. The documentation website, if built, will be available on 127.0.0.1:8080/docs.
Various server settings can be configured from venue.xml. Secret version of the variables can be set from venue.secret.xml.
Every variables can be overriden from OS environment variables. For example, in PowerShell (Windows):
$env:ENCORE_DEV_MODE = "false"
$env:ENCORE_SERVER_PORT = "1234"
java -jar shadowbound-server.jarMore information in Venue.kt
Empty documentation template (built with Starlight, based on sl-obsidian-starter) is available on docs/
To run the website locally on development mode:
cd docs
npm install
npm run devDocs runs on http://localhost:4321/docs.
For more info on setup and configuration, please see the official Starlight documentation.
- A page must be
.mdfile and is enforced to have this on top of them (frontmatter):
---
title: Subfolder Example
slug: folderA/folderB/example
description: example
---
- Replace the title appropriately. The description is optional; you can set it to be the same as the title. Any images or videos should be placed in
src/assets/. - The slug is produced from the directory structure. For instance, this page is named
example.mdand is under thefolderBwithin thefolderA. - Next, add the page to the sidebar.
- Begin by editing the
astro.config.mjs. - Follow the existing sidebar link format. More details on official documentation.
- Begin by editing the
Open
.
├── src/main/kotlin/
│ ├── bootstrap/ # Framework startup and bootstrap components
│ ├── encore/ # Core framework source
│ │ ├── account/ # Account management system
│ │ ├── acts/ # Scheduled task system
│ │ ├── annotation/ # Custom application annotations
│ │ ├── auth/ # Authentication components
│ │ ├── backstage/ # Developer tooling utilities
│ │ ├── context/ # Dependency container and player state management
│ │ ├── datastore/ # Persistence and database components
│ │ ├── definition/ # Gameplay rules and data abstractions
│ │ ├── fancam/ # Logging system
│ │ ├── network/ # Server networking components
│ │ │ ├── fanchant/ # Game message abstractions
│ │ │ ├── handler/ # Message handler abstractions
│ │ │ ├── lifecycle/ # Connection lifecycle hooks
│ │ │ ├── stage/ # Game server implementation
│ │ │ └── transport/ # Network transport mechanisms
│ │ ├── presence/ # Player activity and presence tracking
│ │ ├── route/ # REST API system
│ │ ├── security/ # Security components
│ │ ├── serialization/ # Serialization utilities
│ │ ├── session/ # User session management
│ │ ├── subunit/ # Service-repository layer abstractions
│ │ ├── time/ # Centralized time utilities
│ │ ├── utils/ # General utility functions
│ │ ├── venue/ # Configuration system
│ │ ├── websocket/ # WebSocket communication components
│ │ ├── EncoreConfig.kt # Encore configuration
│ │ └── EncoreIdentity.kt # Encore version and flavor metadata
│ ├── game/ # Game server implementation source
│ │ ├── config/ # User-defined configuration
│ │ ├── FileRoutes.kt # Static file serving routes
│ │ ├── GameIdentity.kt # Implementation version and flavor metadata
│ │ ├── Globals.kt # Global application constants
│ │ └── RealContextFactory.kt # Player state factory
│ └── Application.kt # Application entry point and wiring
│
├── src/test/kotlin/
│ ├── encoreTest/ # Framework test suite
│ ├── example/ # Example implementation samples
│ ├── gameTest/ # Server implementation test suite
│ ├── testUtils/ # Test utilities and helpers
│ ├── InitMongo.kt # MongoDB test initialization
│ └── Playground.kt # Quick experimentation and test runner
│
├── .logs/ # Runtime log files
├── assets/ # Game files and assets (untracked, use git subrepo)
├── backstage/ # Developer tool assets
├── docs/ # Documentation skeleton
├── deploy/ # Build output directory
├── build.bat / build.sh # Build scripts
├── SocketSimulation.ps1 # Socket connection simulation script
├── venue.xml # Framework and application configuration
└── venue.secret.xml # Secret configuration
