Git Product home page Git Product logo

arrowgene.dragonsdogmaonline's Introduction

Dragons Dogma Online - Server

Server Emulator for the Game Dragons Dogma Online.

Table of contents

Disclaimer

The project is intended for educational purpose only.

Setup

1) Clone the repository

git clone https://github.com/sebastian-heinz/ddo-server.git

2) Install .Net 6.0 SDK or later

https://dotnet.microsoft.com/download

3) Use your IDE of choice:

3.1) Visual Studio

Notice:

Minimum version of "Visual Studio 2022" or later.

Open Project:

Open the DragonsDogmaOnline.sln-file

3.2) VS Code

Download IDE: https://code.visualstudio.com/download
C# Plugin: https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp

Open Project:

Open the Project Folder:
\Arrowgene.DragonsDogmaOnline

3.3) IntelliJ Rider

https://www.jetbrains.com/rider/

Notice:

Minimum version of "IntelliJ Rider 2021.3" or later.

Open Project:

Open the DragonsDogmaOnline.sln-file

4) Debug the Project

Run the Ddon.Cli-Project

Server

With default configuration the server will listen on following ports:

80 - http/download
52100 - tcp/server

Ensure that no other local services listen on these ports.

Client

Launch the client with the following args: "DDO.exe" "addr=localhost port=52100 token=00000000000000000000 DL=http://127.0.0.1/win/ LVer=03.04.003.20181115.0 RVer=3040008"

Development

Project

Cli

Entrypoint to the application, allows to start different components via parameters.

Server

  • Read / Write network packages.
  • Manage Connections.

Asset

  • Static Assets that can be loaded on startup.

LoginServer

  • Handling of Login related packets.

GameServer

  • Handling of Game related packets.

WebServer

  • Handling http/https requests.
  • Client version request.
  • Account creation API.
  • Login / Token retrieval API.

Database

  • Persistent storage.
  • Supports different implementations via IDatabase interface.
  • SQLite concrete implementation.

Shared

Extension.cs -> Useful C# extension methods. Util.cs -> Static Utility functions.

Crypto

Components related to cryptography, for network protocol, token generation or random oracle.

Csv

Reading and parsing of CSV files.

Entity

Representing the packet structure of the network protocol, including serialization adn deserialization.

Model

Classes that can be used by multiple components, usually just to hold data in a structured way.

PacketLibrary

  • Read pcap files (experimental).
  • Read (custom) json format of packet data.
  • Format and annotate packets with internal packet names.

Test

  • Unit test to lock in functionality.

Guidelines

Git

Workflow

The work on this project should happen via feature-branches.

Feature branches (or sometimes called topic branches) are used to develop new features for the upcoming or a distant future release. When starting development of a feature, the target release in which this feature will be incorporated may well be unknown at that point. The essence of a feature branch is that it exists as long as the feature is in development, but will eventually be merged back into develop (to definitely add the new feature to the upcoming release) or discarded (in case of a disappointing experiment).

  1. Create a new feature/feature-name or fix/bug-fix-name branch from master.
  2. Push all your changes to that branch.
  3. Create a Pull Request to merge that branch into master.

Best Practise

C# Coding Standards and Naming Conventions

Object Name Notation Char Mask Underscores
Class name PascalCase [A-z][0-9] No
Constructor name PascalCase [A-z][0-9] No
Method name PascalCase [A-z][0-9] No
Method arguments camelCase [A-z][0-9] No
Local variables camelCase [A-z][0-9] No
Constants name PascalCase [A-z][0-9] No
Field name _camelCase [A-z][0-9] Yes
Properties name PascalCase [A-z][0-9] No
Delegate name PascalCase [A-z] No
Enum type name PascalCase [A-z] No

Attribution

Contributors / Making It Happening

Let me preface with that this work could not exist without the excellent work of various individuals.

  • Ando - Reverse Engineering & Tooling (Session Splitter, Camellia Key Cracker)
  • David - Reverse Engineering (unpacking PC Executable, defeating Anti Debug and CRC checks)
  • The White Dragon Temple
  • Nothilvien @sebastian-heinz - Reverse Engineering & Server Code

(if you have been forgotten please reach out)

3rd Parties and Libraries

arrowgene.dragonsdogmaonline's People

Contributors

sebastian-heinz avatar alborrajo avatar sacredwhitearrow avatar andoryuuta avatar alvaronovaes-br avatar aakeyxbm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.