82 lines
2.6 KiB
Markdown
82 lines
2.6 KiB
Markdown
# ENET Gaming Backend
|
|
|
|
A multiplayer game server written in C# using ENet for networking.
|
|
Designed to support mutiple of my LÖVE2D game experiments at once.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ LÖVE2D Game Clients │
|
|
│ (Fennel/Lua with Love2D Framework) │
|
|
└────────────────────────────────┬────────────────────────────┘
|
|
│ (UDP via ENet)
|
|
│
|
|
┌────────────┴────────────┐
|
|
│ ENet-CSharp Server │
|
|
│ (Multiplayer Backend) │
|
|
└────────────┬────────────┘
|
|
│
|
|
┌────────────┴────────────┐
|
|
│ Game State Manager │
|
|
│ Session Storage │
|
|
│ Player Coordination │
|
|
└────────────────────────┘
|
|
```
|
|
|
|
## Technology Stack
|
|
|
|
- **Language**: C# (.NET)
|
|
- **Networking**: [ENet-CSharp](https://github.com/nxrighthere/ENet-CSharp) - reliable UDP multiplayer protocol
|
|
- **Deployment**: Docker + Nomad
|
|
- **Port**: `7777` (UDP, configurable)
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- .NET 8.0 or later
|
|
- ENet-CSharp (vendored or via NuGet)
|
|
- Docker (for containerization)
|
|
|
|
### Local Development
|
|
|
|
```bash
|
|
cd backend
|
|
dotnet build
|
|
dotnet run
|
|
```
|
|
|
|
The server will start and listen on `127.0.0.1:7777` by default.
|
|
|
|
### Testing Connection
|
|
|
|
With a LÖVE2D client configured to connect to `localhost:7777`:
|
|
|
|
```bash
|
|
love ../two_player_cleaning_game
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Server behavior is controlled via environment variables:
|
|
|
|
```bash
|
|
ENET_HOST=0.0.0.0 # Bind address
|
|
ENET_PORT=7777 # UDP port
|
|
```
|
|
|
|
## Resources
|
|
|
|
- [Learn X In Y C#](https://learnxinyminutes.com/csharp/)
|
|
|
|
## Next Steps
|
|
|
|
- [ ] Set up C# project structure
|
|
- [ ] Integrate ENet-CSharp dependency
|
|
- [ ] Implement basic server startup
|
|
- [ ] Define message protocol
|
|
- [ ] Create player session management
|
|
- [ ] Build Docker image
|
|
- [ ] Test Nomad deployment
|
|
- [ ] Implement game state synchronization
|