back to home

sebastian-heinz / Arrowgene.DragonsDogmaOnline

Server for Dragons Dogma Online

View on GitHub
216 stars
80 forks
25 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing sebastian-heinz/Arrowgene.DragonsDogmaOnline in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/sebastian-heinz/Arrowgene.DragonsDogmaOnline)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

:toc: :toclevels: 1 :toc-placement!: = Dragons Dogma Online - Server image::https://github.com/sebastian-heinz/Arrowgene.DragonsDogmaOnline/actions/workflows/build.yaml/badge.svg[] Server Emulator for the Game Dragons Dogma Online. ''' toc::[] ''' == Disclaimer The project is intended for educational purpose only. == Quick Start === Developer Setup . Clone: . Install https://dotnet.microsoft.com/download[.NET 10.0 SDK] or later . Open the project in your IDE of choice: .. *Visual Studio* -- Open (minimum Visual Studio 2022) .. *VS Code* -- Install the https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp[C# plugin], then open the project folder .. *IntelliJ Rider* -- Open (minimum Rider 2021.3) . Run the project with arguments === User Setup . Clone: . Install https://dotnet.microsoft.com/download[.NET 10.0 SDK] or later . Run (Windows) or (Linux/macOS) to build . Launch with from the publish output directory . See the https://github.com/sebastian-heinz/Arrowgene.DragonsDogmaOnline/blob/develop/docs/faq.md[FAQ] for common questions NOTE: When updating from a previous build, ensure is in and run if needed. == Architecture The server consists of four components, all started automatically with the default configuration: [cols="1,1"] |=== | Web Server | HTTP/download on port | Login Server | TCP on port | Game Server | TCP on port | Database | SQLite (file or in-memory) or PostgreSQL |=== === Persistence • **SQLite** via System.Data.SQLite -- file-based or in-memory with auto-backup on start/close. Best for development. • **PostgreSQL** via Npgsql -- recommended for production and parallel write operations. Sample configurations, schemas, and containerization setups are provided for both. === Container Setup A xref:./Dockerfile[Dockerfile] builds & publishes the server from source. Docker Compose files: • -- SQLite (xref:./docker-compose.yml[config]) • -- PostgreSQL (xref:./docker-compose.psql.yml[config]) .Useful commands [source,bash] ---- docker-compose up --build # force rebuild docker-compose down -v # clean up with volumes RUNTIME=linux-arm64 docker-compose build # build for arm64 ---- == Client Launch the client with: [source] ---- "DDO.exe" "addr=localhost port=52100 token=00000000000000000000 DL=http://127.0.0.1:52099/win/ LVer=03.04.003.20181115.0 RVer=3040008" ---- == Server Settings Reference Configuration properties defined in . These control server identity, networking, and diagnostic logging. [cols="2,3,5", options="header"] |=== | Purpose | Description | Use Case / Example | | Unique server identifier (int) | Distinguishes server instances. Defaults to (invalid). Set to a positive integer when registering the server, e.g. for a primary game server. | | Human-readable server name | Displayed in server lists or logs. For example to label a game world instance. | | IP address the server binds to | Defaults to (all interfaces). Set to a specific IP like to restrict which network interface accepts connections. | | TCP port the server listens on | Defaults to . Change to avoid port conflicts or run multiple instances, e.g. for a second login server. | | Verbosity of log output (int) | = default. Increase for more verbose output during development and debugging. | | Log packets with no registered handler | Defaults to . Useful for reverse engineering new packet types. Disable in production to reduce log noise. | | Log headers of sent packets | Defaults to . Helps trace server responses. Disable for performance in high-traffic environments. | | Log full payload of sent packets | Defaults to . Enable to inspect exact bytes sent to clients, e.g. when debugging malformed response data. | | Log structured breakdown of sent packets | Defaults to . Enable to see field-by-field decoded output of outgoing packets during protocol development. | | Log headers of received packets | Defaults to . Helps trace client requests. Disable in production to reduce log volume. | | Log full payload of received packets | Defaults to . Enable to inspect raw bytes from clients, e.g. when reverse engineering a new client action. | | Log structured breakdown of received packets | Defaults to . Enable to see decoded fields of incoming packets, useful for verifying parser correctness. | | Max queued items per consumer lane | Defaults to . Increase if the server handles high throughput and packets are being dropped due to queue saturation. | | Low-level TCP socket configuration https://github.com/sebastian-heinz/Arrowgene.Networking?tab=readme-ov-file#configuration[(Link to Configuration)] | Wraps . Tune buffer sizes, backlog, and socket options for production deployments. |=== .Suggested settings for DDON: [cols="2,1,3", options="header"] |=== | Setting | Value | Note | | | Must remain at 1 as the DDON server is single-threaded and not threadsafe | | | Maximum bytes (~8 MB) that can be buffered for sending before back-pressure is applied | | | Maximum number of events that can be queued per lane before networking stalls |=== == Progress See the https://github.com/sebastian-heinz/Arrowgene.DragonsDogmaOnline/wiki/What-Works%3F[wiki]. == Guidelines === Git Workflow Work via feature branches: . Create or from master . Push changes to that branch . Create a Pull Request into === Best Practices • Use the project logger -- not • Own the code: extract solutions, discard libraries • Annotate with https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/documentation-comments[documentation comments] === Naming Conventions [cols="1,1,1,1", options="header"] |=== | Object | Notation | Char Mask | Underscores | Class | PascalCase | [A-z][0-9] | No | Constructor | PascalCase | [A-z][0-9] | No | Method | PascalCase | [A-z][0-9] | No | Method arguments | camelCase | [A-z][0-9] | No | Local variables | camelCase | [A-z][0-9] | No | Constants | PascalCase | [A-z][0-9] | No | Fields | _camelCase | [A-z][0-9] | Yes | Properties | Pas…