/P3D-Legacy-Server

Server for the P3D-Legacy game

Primary LanguageC#MIT LicenseMIT

P3D-Legacy-Server

CodeFactor Code Climate maintainability
Latest Build Latest QA Build Swagger Validator
GitHub deployments GitHub deployments GitHub deployments

The new 'enterprise grade' © server for P3D-Legacy based on ASP.NET Core and Project Bedrock.

How To Get It

Executable

We provide statically compiled binaries for every supported by .NET platform.
Check the Releases tab for the latest release available.

Docker Image

We provide the image ghcr.io/p3d-legacy/p3d-legacy-server with two main tags:

  • latest/latest-qa for Windows(x64)/Debian(x64, ARM64, ARM32) based images. They contain the full ASP.NET Core runtime.
  • latest-alpine/latest-alpine-qa for slimmed down Alpine(x64, ARM64, ARM32) images. They contain the statically compiled application and also uses MUSL for the C runtime.

The -qa stands for pre-release builds.
We recommend to use a docker-compose.yml file for deployment.

Configuration

You can directly modify the appsettings.json or use environment variables. So Server:Name will be Server__Name as an env variable.

UI

The server has a basic UI. Type /uimode when the server is running. image

About

Project uses guidelines from Clean Architecture with CQERS (CQRS with Events). Features:

  • Custom Mediator for proper DI integration of Commands, Queries and Events
  • Terminal.Gui for a console UI
  • OpenTelemetry for Metrics and Tracing. Metrics are based on Application Events
  • FluentValidation for IOptions validation at startup
  • Two main Repository implementations - LiteDb for player hosted and pokemon3d.net API for the official server
  • WebSocket endpoint for custom integrations - the ability to create bots
  • Game Commands
  • Direct Discord integration
  • Performance oriented implementation of the P3D-Legacy game protocol
  • REST API based on Queries