This page walks through getting the C#/.NET prototype backend running locally against a PostgreSQL database. The server is an ASP.NET minimal-API host that uses Npgsql to talk to PostgreSQL, exposes HTTP health endpoints, and maps the primary game connection as a WebSocket endpoint atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/TaylorZaneKirk/MMO-Project/llms.txt
Use this file to discover all available pages before exploring further.
/session.
Prerequisites
- .NET 10 SDK — the project targets
net10.0(download) - PostgreSQL 14+ running locally
- git
Setup
Apply migrations
Run each SQL file against the new database in order. Every file is additive — applying them in sequence brings the schema up to the current prototype slice.
Edit the connection string
Open See Configuration for a full description of every option in this file.
prototype/server/appsettings.json and update ConnectionStrings.PrototypeDatabase to match your local PostgreSQL credentials:Development debug endpoints
The following endpoints are only registered when the server starts in
Development mode (ASPNETCORE_ENVIRONMENT=Development). They are not available in a production build.| Method | Path | Purpose |
|---|---|---|
GET | /debug/accounts/{accountName} | Look up an account record by name |
POST | /debug/sessions/{accountName} | Create a session for the named account |
POST | /debug/login | Exercise the login flow and receive a session token |
POST | /debug/accounts/password | Set a plaintext password (hashed server-side) for an account |
POST | /debug/characters/{accountName}/stats | Upsert health, concentration, and special stat values for a character |
POST | /debug/characters/{accountName}/inventory/{slotIndex} | Place or clear an item in a specific inventory slot |
POST | /debug/characters/{accountName}/equipment/{slotId} | Place or clear an item in a specific equipment slot |
POST | /debug/items/{itemId} | Upsert an item definition (name and icon path) |
WebSocket session endpoint
The primary game connection is the WebSocket endpoint atWS /session, mapped via SessionEndpoint.MapSessionEndpoint(app) in Program.cs. SessionEndpoint owns the full WebSocket lifecycle: login and reconnect authentication, session cleanup, and the server movement tick loop. Once authenticated, gameplay messages are routed through AuthenticatedMessageRouter into focused handlers for movement, inventory, ground items, equipment, and world resyncs.