mirror of
https://github.com/SoDOff-Project/sodoff.git
synced 2025-10-12 00:38:48 -07:00
update readme
This commit is contained in:
parent
582bb7cf92
commit
136eaabab3
63
README.md
63
README.md
@ -1,62 +1,57 @@
|
|||||||
# SoD-Off - School of Dragons, Offline
|
# SoDOff - School of Dragons, Offline
|
||||||
|
|
||||||
On 7th June, 2023, School of Dragons announced they were "sunsetting" the game, and turning the servers off on the 30th of June.
|
On 7th June 2023, School of Dragons announced they were "sunsetting" the game, and turning the servers off on the 30th of June.
|
||||||
At that time, SoD-Off was born. Currently, it is an (almost) complete implementation of the API server for SoD (and some other JS games).
|
At that time, SoDOff was born. Currently, it is an almost complete implementation of the School of Dragons API server (and some other JS games).
|
||||||
It allows you to run SoD offline as well as host private online servers.
|
It allows you to run SoD offline as well as host private online servers.
|
||||||
|
|
||||||
We provide also MMO server implementation for SoD (https://github.com/SoDOff-Project/sodoff-mmo).
|
We also provide MMO server implementation for SoD (https://github.com/SoDOff-Project/sodoff-mmo).
|
||||||
We recommend using it even in offline mode, as some aspects of the single-player game depend on the MMO connection.
|
It is recommended to use the MMO server even when offline, as some aspects of the single player game depend on MMO.
|
||||||
|
|
||||||
## Discord
|
## License
|
||||||
[](https://discord.gg/bqHtMRbhM3)
|
|
||||||
|
|
||||||
## Licence
|
|
||||||
|
|
||||||
SoD-Off is open source, distributed under [AGPL](LICENSE) license.
|
|
||||||
This license does not cover resources obtained from the game or from responses of original api distributed with the API server, especially:
|
|
||||||
`missions.xml`, `items.xml`, `allranks.xml` and `store.xml` files from `src/Resources` directory and files inside `src/assets` directory.
|
|
||||||
|
|
||||||
|
SoDOff is open source, distributed under the [AGPL](LICENSE) license.
|
||||||
|
This license does not cover resources obtained from the game or from responses of the original API distributed with the API server, especially:
|
||||||
|
`missions.xml`, `items.xml`, `allranks.xml` and `store.xml` files from the `src/Resources` directory and files inside the `src/assets` directory.
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
You need dotnet 6.0 SDK to build api server from sources. To do this (and start server) just run:
|
To build the API server from sources, you'll need the dotnet 6.0 SDK. Simply run the following command to build and start the server:
|
||||||
|
|
||||||
```
|
```
|
||||||
dotnet run --project src/sodoff.csproj
|
dotnet run --project src/sodoff.csproj
|
||||||
```
|
```
|
||||||
|
|
||||||
### Modify client
|
### Modifying the Client
|
||||||
|
|
||||||
To play game you need to modify game client to use `http://localhost:5001/.com/DWADragonsUnity/` instead `http://media.jumpstart.com/DWADragonsUnity/` for getting main XML config file (`DWADragonsMain.xml`).
|
To play the game you need to modify the game client to use `http://localhost:5001/.com/DWADragonsUnity/` instead of `http://media.jumpstart.com/DWADragonsUnity/`.
|
||||||
You can do this editing `DOMain_Data/resources.assets` in hex-editor and replace those URLs.
|
You can do this by editing `DOMain_Data/resources.assets` in a hex-editor and swapping the URLs.
|
||||||
|
|
||||||
### Server configuration
|
### Server Configuration
|
||||||
|
|
||||||
Most configuration of server is set in `appsettings.json`. See `"// ..."` keys in this file for options description.
|
Most of the server configuration is stored in `appsettings.json`. Check out the "// ..." keys in there for descriptions of different options.
|
||||||
|
|
||||||
#### supported clients
|
#### Supported Clients
|
||||||
|
|
||||||
Each version of supported client need own file `assets/DWADragonsUnity/{PLATFORM}/{VERSION}/DWADragonsMain.xml`.
|
For each supported client version, there must be a corresponding file located at `assets/DWADragonsUnity/{PLATFORM}/{VERSION}/DWADragonsMain.xml`.
|
||||||
By default (can be changed in `appsettings.json`) files for version 2.5.0 and newer will be automatically encrypted (in accordance with the client's expectations).
|
By default (modifiable in appsettings.json), files for version 2.5.0 and newer will be automatically encrypted to meet the client's requirements.
|
||||||
|
|
||||||
Sample file for `{PLATFORM} = WIN`, `{VERSION} = 3.31.0` is provided.
|
A sample file is provided for `{PLATFORM} = WIN`, `{VERSION} = 3.31.0`.
|
||||||
It assumes that the server address is `localhost:5000` (for api) and `localhost:5000` (for assets). When running a public server, the addresses must be adjusted.
|
It assumes that the server address are `localhost:5000` (API) and `localhost:5001` (assets).
|
||||||
|
|
||||||
#### asset server
|
#### Asset Server
|
||||||
|
|
||||||
Multiple options of asset server can be customized. Most important of them is `ProviderURL` indicating the source of assets downloading in `partial` mode.
|
Various settings for the asset server are customizable, with the key one being `ProviderURL`, which specifies the source for downloading assets in `partial` mode. By default, it's configured to use archive.org
|
||||||
By default it's set to archive.org. Please do not abuse this server (especially do not disable `UseCache` option and do not get rid of `asset-cache` dir content).
|
Please do not abuse the archive.org server, do not disable the `UseCache` option and do not delete the contents of the `asset-cache` directory.
|
||||||
|
|
||||||
#### listening address/port
|
#### Listening address/port
|
||||||
|
|
||||||
By default server listening on all IPv4 and IPv6 addresses on ports 5000 (api) and 5001 (assets).
|
By default, the server listens on all IPv4 and IPv6 addresses on ports 5000 (API) and 5001 (assets).
|
||||||
This can be changed in `appsettings.json`, but it can also requires changes in `DWADragonsMain.xml` and in clients (on change assets server address)
|
You can tweak this in `appsettings.json`, but it might also mean adjusting `DWADragonsMain.xml` and updating clients to reflect the changes in the asset server address.
|
||||||
|
|
||||||
### Server side modding
|
### Server Side Modding
|
||||||
|
|
||||||
Server support server side modding like adding new items, adding them to store without modification server source.
|
|
||||||
For details see [src/mods/README-MODDING.md](src/mods/README-MODDING.md).
|
|
||||||
|
|
||||||
|
The server supports server side modifications, which includes adding new items and putting them in the store without having to modify the server source code.
|
||||||
|
For more information, check out [src/mods/README-MODDING.md](src/mods/README-MODDING.md).
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -1,47 +1,47 @@
|
|||||||
# Server side modding
|
# Server Side Modding
|
||||||
|
|
||||||
## Mod installations
|
## Mod Installation
|
||||||
|
|
||||||
Place mods as directory inside `src/mods`.
|
Place mods as individual directories inside `src/mods`.
|
||||||
The mod directory must contain `manifest.xml` file in the first directory tree level.
|
Each mod folder must contain a `manifest.xml` file at its top directory level.
|
||||||
For example: `src/mods/MyFirstMod/manifest.xml`
|
For example: `src/mods/MyFirstMod/manifest.xml`
|
||||||
|
|
||||||
## `manifest.xml` syntax
|
## `manifest.xml` syntax
|
||||||
|
|
||||||
Root node for `manifest.xml` is `<sodoffmod>`. It can contain child nodes:
|
The root node in `manifest.xml` is `<sodoffmod>`. It can include the following child nodes:
|
||||||
|
|
||||||
* `<items>` - item database manipulation
|
* `<items>` - item database manipulation
|
||||||
* `<store>` - store database manipulation (not implemented yet)
|
* `<store>` - store database manipulation (not implemented yet)
|
||||||
* ...
|
* ...
|
||||||
|
|
||||||
### item database manipulation
|
### Item Database Manipulation
|
||||||
|
|
||||||
`<items>` may contain may `<item>` child nodes. Each of them define one item modification. Modification type can be specified by `action` attribute, supported values:
|
`<items>` may contain `<item>` child nodes. Each of them defines one item modification. The modification type can be specified by the `action` attribute. The supported values are:
|
||||||
|
|
||||||
* `add` - add new item
|
* `add` - add new item
|
||||||
* default when no `action` attribute
|
* default if the `action` attribute is not present
|
||||||
* `remove` - remove item
|
* `remove` - remove item
|
||||||
* `replace` - replace item definition for existed item id
|
* `replace` - replace item definition for an existed item ID
|
||||||
|
|
||||||
`<item>` node may contains subnodes:
|
`<item>` may contain the following subnodes:
|
||||||
|
|
||||||
* `<id>` - specify item id
|
* `<id>` - item ID
|
||||||
* if not used item id will be read from item definition in `<data>`
|
* if not used, the item ID will be retrieved from the item definition within `<data>`
|
||||||
* `<storeID>` - specify store id to add item to them
|
* `<storeID>` - specifies the store ID to which the item will be added
|
||||||
* can occur multiple times
|
* can be used multiple times
|
||||||
* if not used item will be not added to any store
|
* if not used, the item will not be added to any store
|
||||||
* `<data>` - item definition (syntax like `<I>` node in [src/Resources/items.xml](../Resources/items.xml))
|
* `<data>` - item definition (syntax like the `<I>` node in [src/Resources/items.xml](../Resources/items.xml))
|
||||||
* can be committed in `remove` action`
|
* can be omitted in the `remove` action
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
* remove Toothless ticket item (item id `8034`)
|
* remove the Toothless ticket item (item ID `8034`)
|
||||||
* add Night Furry Egg item (item id `29999`) and add it to store (store id `92`, for store description see comment in [src/Resources/store.xml](../Resources/store.xml).
|
* add a Night Furry Egg item (item ID `29999`) and add it to store (store ID `92`, for store description see comment in [src/Resources/store.xml](../Resources/store.xml))
|
||||||
* item id (for new items) should be unique to avoid mod collision, recommended format to use: `prefix * 10000 + private_id`, where:
|
* The item ID for new items should be unique to prevent mod collisions. The recommended format is: `prefix * 10000 + private_id`, where:
|
||||||
* `prefix` must be grater than 2 to avoid collision with original game and official SoDOff items
|
* `prefix` must be grater than 2 to avoid collision with the original game and official SoDOff items
|
||||||
* `prefix` is unique mod author prefix (see SoDOff discord for details)
|
* `prefix` is a unique mod author prefix
|
||||||
* `private_id` is for digit number (0-9999) to free use by the this author
|
* `private_id` ranges from 0 to 9999 and is available for unrestricted use by the author
|
||||||
* for example for `prefix = 789` and `private_id = 13` item id will be `7890013`
|
* for instance, if `prefix = 789` and `private_id = 13`, the item ID would be `7890013`
|
||||||
|
|
||||||
```
|
```
|
||||||
<sodoffmod>
|
<sodoffmod>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user