Files
2024-09-23 09:58:52 +02:00

89 lines
4.1 KiB
Markdown

# Multikill Server (for Ultrakill 0.9.0)
---
# Why even make this when Jaket exists?
- **Jaket does not Support dedicated 24/7 lobbies** since it uses the Steamworks API.
- **Multikill aims to be as customizable as possible** meaning that the Server might be able to give the client instructions for custom Physics.
- **Map Streaming** I want Multikill to be able to Stream maps from the Server / download them when joining a game, so you don't have to worry about not having the right map installed.
- **Educational Purposes** Multikill is a project for Educational Purposes.
- **i don't even know what i'm yapping about**
---
The **Multikill Server** is a dedicated server for the **Multikill** mod for **Ultrakill version 0.9.0**, allowing players to connect and engage in **PvP combat** across different maps. The server is responsible for handling client connections, managing player synchronization, and broadcasting data to all connected players.
## Features
- **Dedicated Server**: Host multiplayer games with multiple players.
- **Basic Movement Sync**: Sync player positions and basic movements across all connected clients.
- **Map Syncing**: The server sets the map, and it is replicated across all connected clients.
- **LiteNetLib Networking**: Uses **LiteNetLib** for reliable and efficient network communication.
> **Note**: The current version only includes **basic movement syncing** and **map syncing**. Additional features like advanced combat mechanics, PvP functionality, and team-based modes are planned for future updates.
---
## Requirements
- **.NET Framework 4.7.2 or higher** (for the server application)
- **LiteNetLib** (for handling client connections)
---
## Installation
### 1. Download and Build the Server
1. Clone or download the **Multikill Server** repository.
2. Download the **latest stable version** of the **Multikill Server** executable from the [server release page](https://github.com/ApfelTeeSaft/Multikill-Server/releases).
3. Open the project in **Visual Studio 2022** or any compatible IDE if building from source.
4. Ensure **LiteNetLib** is installed via NuGet:
- Right-click the project > **Manage NuGet Packages** > Search for **LiteNetLib** and install the latest version.
### 2. Run the Server
1. After compiling or downloading the server, run the server executable.
2. The server will listen on port `9050` by default. You can change this by modifying the code or providing a different port when launching.
3. The server console will log connected clients, disconnected clients, and data being sent/received.
---
## Server Configuration
The server settings can be configured via code or by adding configuration options in future updates:
- **Port**: The default port is `9050`, but this can be changed in the source code.
- **Max Players**: You can set the maximum number of players in the server code.
- **Map Management**: Load different maps for PvP combat (future feature).
---
## Server Commands
The server is controlled via the console:
- **ESC**: Press ESC to safely shut down the server.
- **Logs**: Monitor connections, disconnections, and game events via the server logs.
---
## Contributing
The **Multikill Server** project is open for contributions! You can help by reporting bugs, suggesting features, or submitting code improvements.
To contribute:
1. Fork the **server repository**.
2. Make your changes and submit a pull request.
---
# Contact and Support
For any questions, feedback, or support:
- **Issues**: Use the GitHub issue tracker to report bugs and request features for both the **client** and **server**.
- **Community**: Join our community (Discord server to be provided) for matchmaking, support, and discussions.
---
# Future Roadmap
The **Multikill** project is actively being developed to bring additional features:
- **Team Modes**: Play with others in team-based game modes like **Team Deathmatch**.
- **Map Customization**: Allow for custom maps and rotations during gameplay.
- **Advanced Synchronization**: Improve latency handling and player action synchronization for a seamless experience.
- **Leaderboards and Stats**: Track player performance across games and show competitive leaderboards.