init c# backend

This commit is contained in:
Travis Shears 2026-04-12 21:37:53 +02:00
parent 40806deaa6
commit d2621e2aec
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469
4 changed files with 160 additions and 0 deletions

50
backend/.gitignore vendored Normal file
View file

@ -0,0 +1,50 @@
# Build results
bin/
obj/
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
# Visual Studio
.vs/
.vscode/
*.sln.iml
*.sln.docstates
*.user
*.userprefs
*.userosscache
*.sln.user
# ReSharper
.idea/
*.resharper
*.resharper.user
*.DotSettings.user
_ReSharper*/
*.[Rr]e[Ss]harper
*.sln.iml
# Local environment
.env
.env.local
appsettings.Development.json
# NuGet
.nuget/
*.nupkg
*.snupkg
packages/
# Rider
.idea/
*.sln.iml
*.log
# macOS
.DS_Store

16
backend/Backend.csproj Normal file
View file

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<RootNamespace>Love2DBackend</RootNamespace>
<AssemblyName>Backend</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ENet-CSharp" Version="2.4.8" />
</ItemGroup>
</Project>

12
backend/Program.cs Normal file
View file

@ -0,0 +1,12 @@
using System;
namespace Love2DBackend
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello from LÖVE2D Backend!");
}
}
}

82
backend/README.md Normal file
View file

@ -0,0 +1,82 @@
# 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