init c# backend
This commit is contained in:
parent
40806deaa6
commit
d2621e2aec
4 changed files with 160 additions and 0 deletions
50
backend/.gitignore
vendored
Normal file
50
backend/.gitignore
vendored
Normal 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
16
backend/Backend.csproj
Normal 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
12
backend/Program.cs
Normal 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
82
backend/README.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue