SalvationDevelopment / YGOCore

A server system for the game YGOPro.
8 stars 3 forks source link

YGOCore

YGOCore is a duel server for the popular game YGOPro written in C#.

Beta Details

The main goal of this project is to lower the entry level for new and experienced programmers. The server now runs on windows and linux systems when compiled with mono and supplyed with the native ocgcore.dll/so for that system. A sample client to work with the server can be found here.

Supported Features

How to use

To run the server you will require the card scripts, database and the banlist, check the following file/folder structure for a better understanding:

alt text

In order for users out side your LAN to connect to the server you will need to port forward the relevant port, in this case port 8911 is used by default.

The server is designed in such a way that when new card effects and rulings are added to the game just recompiling ocgcore.dll from Fluorohydride/ygopro/ocgcore will continue keep the server compatible with all YGOPro clients. You can download a precompiled version of ocgcore from the release section but this version might not be the latest version available, if possible always recompile. If you have handshuffling enabled you will need a ocgcore.dll from Buttys/ygopro after the relivant and latest changes have been merged down.

Configuration

ygoserver.exe takes two parameters, a port, and a *.ini format configuration file with these configurations. Without parameters YGOCore will look for the above file structure after tying to load config.txt. For example c:\ygocore\ygoserver.exe 9101 alternative-configuration.ini. Will start the server on port 9101 ignoring the configuration files serverport and load alternative-configuration.ini and not config.ini.

Standard Streams API

The ygocore and the management software communicate via standard streams or TCP network. The core signals the management software its current state via a specific API, standard out stream comes via the console/terminal, these signals should not be confused with debug messages. Each call starts with :::: to check for if you are programming against it, this is an indication of a standard stream API call and not a debug message.

By default these commands are off. Requires stdoutsupport = true in the config.txt be set to true. For more information see the wikipedia article about it.

Request Strings

When YGOCore recieves a game request command from a connecting client it will parse and handle the request in one of 3 ways. First it will see if a game using that sting is currently active and then conncect the requesting client to that game. If not it will parse the request

Percy/FH/TDOANE Notation

0-2 0-2 O/T O/T O/T Lifepoints, Initial Draw Count, Draws per turn, Password nnOOOnnnn,n,n,n,xxxxx

DevPro Notation

0-2 0-2 O/T O/T O/T Lifepoints, Initial Draw Count, Draws per turn, Ranked/Unranked [Locked], Password nnOOOnnnn,n,n,,n,nN,xxxxx

M/F Notation