# 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