A zone server for the multiplayer game Subspace based on A Small Subspace Server.
This is a cross-platform server written in C#. It was developed based on the A Small Subspace Server (ASSS) open-source project and can be considered a derivative. As such, the modular design closely resembles that of ASSS and is meant to be extended in very much the same ways.
This project provides everything needed to host a zone. It has all of the essential functionality from ASSS and also many of the extras.
- See asss-equivalents for a detailed listing and comparison of included parts.
- Also, see additional-features for information about features that this server adds, which are not in ASSS.
Download the latest release.
- Follow the Quickstart for instructions on how to get up and running from scratch.
- If you already have a zone running using ASSS, see Quickstart from ASSS instead. It has instructions on how to use your existing files.
- Read the User Manual for more information.
The built-in functionality of the server is more than enough to host a zone. It's highly configurable and supports all the regular gameplay modes. However, the true power of this project is in how it can be extended by writing plugins.
For guidance on how to develop your own plugins to extend the server, see the Developer Guide.
To build the server,
-
Get the code:
git clone https://github.com/gigamon-dev/SubspaceServer.git
-
Open the solution:
"src/SubspaceServer.sln"
to build and run it. -
Remember to place a copy of Continuum.exe (currently 0.40) into the zone's 'clients' folder:
"src/SubspaceServer/Zone/clients"
before running.
- CommunityToolkit.HighPerformance - for reducing string allocations by using StringPool
- Google.Protobuf - for serializing data
- Microsoft.Data.Sqlite - for an embedded database that persists player and arena data
- Microsoft.Extensions.ObjectPool - object pooling to reduce allocations and the need to garbage collect
- Microsoft.IO.RecyclableMemoryStream - for an improved MemoryStream with regards to performance and garbage collection
- Npgsql - for connecting to a PostgreSQL database (optional matchmaking functionality)
- SkiaSharp - for creating images of maps
- System.IO.Hashing - for a CRC-32 implementation compatible with zlib's
GNU GPLv2, since that's what A Small Subspace Server uses and much of this can be considered as being a derivative of it.
This project exists by standing on the shoulders of giants. Thank you to Grelminar for creating A Small Subspace Server. This would not have been possible without his work and the inspiration it provided. Thank you to everyone that contributed to the A Small Subspace Server project. All of your efforts can be considered as being part of this project as well. Thank you to POiD for all the knowledge and help he has provided. Thank you to the creators of Subspace for making this great game, to everyone that has ever contributed in keeping the game going over the years, and to everyone that helps keep the game alive today.
- Repository: A Small Subspace Server