A modern C# server emulator for Endless Online, built with .NET 10 and Entity Framework Core
_ Acorn Endless-Online Server Software
_/-\_
.-`-:-:-`-.
/-:-:-:-:-:-\
\:-:-:-:-:-:/
|` , `|
| ( |
`\ ` /'
`-._.-'
| Category | Features |
|---|---|
| Database | Entity Framework Core 10, SQLite, PostgreSQL, MySQL/MariaDB, SQL Server |
| Networking | WebSocket & TCP dual protocol support |
| Deployment | Docker multi-arch images (amd64/arm64), docker-compose profiles |
| NPCs | Randomized movement system based on eoserv spawn types |
| CI/CD | GitHub Actions for builds, tests, and container publishing |
- .NET 10 SDK
- Docker (optional)
git clone https://github.com/do4k/acorn.git
cd acorn/src/Acorn
dotnet runThe server starts with SQLite by default—no database setup required.
Default Login:
acorn/acorn
# MySQL (default)
docker-compose up
# SQLite
docker-compose --profile sqlite up acorn-sqlite
# PostgreSQL
docker-compose --profile postgres up
# SQL Server
docker-compose --profile sqlserver updocker pull ghcr.io/do4k/acorn:latest
docker run -p 8078:8078 -p 8079:8079 ghcr.io/do4k/acorn:latest# Development
docker build -t acorn:dev ./src/Acorn
# Multi-platform
docker buildx build --platform linux/amd64,linux/arm64 -t acorn:latest ./src/Acorn| Engine | Use Case | Configuration |
|---|---|---|
| SQLite | Development, testing | dotnet run (default) |
| MySQL | Docker default, production | docker-compose up |
| PostgreSQL | Production with JSON support | --profile postgres |
| SQL Server | Enterprise environments | --profile sqlserver |
dotnet run --environment=PostgreSQL
dotnet run --environment=MySQL
dotnet run --environment=SqlServerOr edit appsettings.json:
{
"Database": {
"Engine": "PostgreSQL",
"ConnectionString": "Host=localhost;Database=acorn;Username=acorn;Password=password;"
}
}# Create a migration
dotnet ef migrations add MigrationName
# Apply migrations (automatic on startup)
dotnet ef database update
# Rollback
dotnet ef database update PreviousMigrationName📖 See docs/DATABASE.md for detailed configuration options.
On first startup, Acorn creates:
| Type | Value |
|---|---|
| Account | acorn / acorn |
| Character | acorn (Admin, Level 100, Map 192) |
NPCs use spawn types based on eoserv's behavior system:
- Types 0-6 — Movement speeds from 0.6s to 15s
- Type 7 — Stationary (never moves)
- Movement — 60% walk, 30% turn, 10% idle
- Spawn — Randomized within 2 tiles of spawn point
dotnet build # Debug
dotnet build -c Release # Releasedotnet test- EthanMoffat — eolib-dotnet, EndlessClient
- Cirras — eo-protocol
- Sorokya — reoserv
- Sausage — EOSERV
- Vult-r — Original software
MIT License — see LICENSE for details.
