Skip to main content

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

The server reads configuration from prototype/server/appsettings.json using the standard ASP.NET configuration pipeline. The Prototype section contains all game-specific options and is bound at startup to a PrototypeOptions instance via builder.Services.Configure<PrototypeOptions>(...). Standard ASP.NET keys control logging behaviour and the database connection string.

Full appsettings.json

{
  "Prototype": {
    "ProtocolVersion": "v1",
    "SessionIdleTimeoutMinutes": 30,
    "DroppedItemPrivateVisibilitySeconds": 180,
    "MovementDebugEnabled": false,
    "MaxIncomingMessageBytes": 65536
  },
  "ConnectionStrings": {
    "PrototypeDatabase": "Host=localhost;Port=5432;Database=mmo_project_proto;Username=postgres;Password=8921"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

Prototype options

These keys live inside the Prototype JSON object and map directly to properties on PrototypeOptions in prototype/server/host/PrototypeOptions.cs.
ProtocolVersion
string
default:"v1"
The WebSocket protocol version string sent during the session handshake. Clients must present a matching version or the handshake is rejected. Increment this value when making a breaking change to the shared protocol contract.
SessionIdleTimeoutMinutes
integer
default:"30"
How long, in minutes, a session may remain idle before it expires. The debug endpoint POST /debug/sessions/{accountName} uses this value to compute the expires_at timestamp when creating a test session.
DroppedItemPrivateVisibilitySeconds
integer
default:"180"
Seconds after an item is dropped on the ground during which only the character who dropped it can see it. Once this window elapses, the GroundItemVisibilityWorker background service makes the item publicly visible to all players in the zone.
MovementDebugEnabled
boolean
default:"false"
When true, the server emits a verbose log entry for every individual movement step resolved by the authoritative movement system. Leave this false in normal operation — it produces significant log volume during active gameplay.
MaxIncomingMessageBytes
integer
default:"65536"
Maximum allowed size, in bytes, of a single incoming WebSocket message. Messages larger than this limit are rejected. 65 536 bytes (64 KiB) is the default; adjust downward to tighten the attack surface or upward only if a specific protocol message requires it.

Connection string

ConnectionStrings.PrototypeDatabase
string
required
A standard Npgsql connection string used by PrototypeDatabase to open connections to PostgreSQL. The minimum required parameters are Host, Database, Username, and Password. Example:
Host=localhost;Port=5432;Database=mmo_project_proto;Username=postgres;Password=yourpassword

Logging

The Logging.LogLevel section follows the standard Microsoft.Extensions.Logging hierarchy. The defaults are:
LoggerDefault level
Default (all namespaces)Information
Microsoft.AspNetCoreWarning
To increase verbosity for a debugging session without switching to Development mode, set a lower level for your target namespace:
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "MMO.Project.Prototype.Server": "Debug"
    }
  }
}

Environment overrides

appsettings.Development.json is layered on top of appsettings.json automatically when ASPNETCORE_ENVIRONMENT=Development. Only the keys present in the override file are changed; everything else falls through to the base file. The committed development override lowers log levels to ease debugging:
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft.AspNetCore": "Information"
    }
  }
}
To override the connection string for a local development database without touching appsettings.json, add it to appsettings.Development.json:
{
  "ConnectionStrings": {
    "PrototypeDatabase": "Host=localhost;Port=5432;Database=mmo_project_proto_dev;Username=dev_user;Password=dev_password"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft.AspNetCore": "Information"
    }
  }
}
Never commit production credentials to appsettings.json. Use environment variables (e.g. ConnectionStrings__PrototypeDatabase=...) or a secrets manager for production deployments.

Build docs developers (and LLMs) love