robot_cleaning_game/backend
2026-04-12 21:48:24 +02:00
..
.gitignore init c# backend 2026-04-12 21:48:24 +02:00
Backend.csproj init c# backend 2026-04-12 21:48:24 +02:00
Program.cs init c# backend 2026-04-12 21:48:24 +02:00
README.md init c# backend 2026-04-12 21:48:24 +02:00

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 - 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

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:

love ../two_player_cleaning_game

Configuration

Server behavior is controlled via environment variables:

ENET_HOST=0.0.0.0              # Bind address
ENET_PORT=7777                 # UDP port

Resources

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