chore: Updates readme files (#2247)
This commit is contained in:
parent
d6bb8316d0
commit
52e309ef95
4 changed files with 24 additions and 148 deletions
43
README.md
43
README.md
|
|
@ -15,16 +15,16 @@ ModernUO [](https://www.microsoft.com/en-US/evalcenter/evaluate-windows-server-2022)
|
[](https://www.microsoft.com/en-US/evalcenter/evaluate-windows-server-2022)
|
||||||

|

|
||||||
[](https://www.debian.org/distrib/)
|
[](https://www.debian.org/distrib/)
|
||||||
[](https://ubuntu.com/download/server)
|
[](https://ubuntu.com/download/server)
|
||||||
<br/>
|
<br/>
|
||||||
[](https://alpinelinux.org/downloads/)
|
[](https://alpinelinux.org/downloads/)
|
||||||
[](https://getfedora.org/en/server/download/)
|
[](https://getfedora.org/en/server/download/)
|
||||||
[](https://access.redhat.com/downloads)
|
[](https://access.redhat.com/downloads)
|
||||||
[](https://www.centos.org/download/)
|
[](https://www.centos.org/download/)
|
||||||
[](https://get.opensuse.org/)
|
[](https://get.opensuse.org/)
|
||||||
[](https://www.suse.com/download/sles/)
|
[](https://www.suse.com/download/sles/)
|
||||||
[](https://linuxmint.com/download.php)
|
[](https://linuxmint.com/download.php)
|
||||||
[](https://archlinux.org/download/)
|
[](https://archlinux.org/download/)
|
||||||
|
|
@ -38,19 +38,16 @@ ModernUO [](https://git-scm.com/downloads)
|
[](https://git-scm.com/downloads)
|
||||||
[](https://dotnet.microsoft.com/download/dotnet/9.0)
|
[](https://dotnet.microsoft.com/download/dotnet/9.0)
|
||||||
|
|
||||||
#### Supported IDEs
|
#### Supported IDEs
|
||||||
|
<p align="left">
|
||||||
<p align="left"><a href="https://www.jetbrains.com/rider/download"><img height="64" title="Jetbrains Rider 2024.3+"
|
<a href="https://www.jetbrains.com/rider/download"><img height="64" title="Jetbrains Rider 2025+" alt="Jetbrains Rider 2025+" src="https://github.com/user-attachments/assets/456dc87e-a7e7-467b-81b6-ba9c8e227f86"></a>
|
||||||
alt="Jetbrains Rider 2024.3+"
|
<img alt="space" width="32" src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png">
|
||||||
src="https://user-images.githubusercontent.com/3953314/133473479-734e425c-fbb6-433a-af2d-2cc8444398e8.png"></a><img
|
<a href="https://code.visualstudio.com/download"><img height="64" title="VSCode" alt="VSCode" src="https://user-images.githubusercontent.com/3953314/200161017-7697171f-8f13-4829-95d0-8a25b59ee4c9.png"></a>
|
||||||
alt="space" width="32" src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png"><a href="https://code.visualstudio.com/download"><img height="64" title="VSCode"
|
<img alt="space" width="32" src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png">
|
||||||
alt="VSCode"
|
<a href="https://visualstudio.microsoft.com/vs/community/"><img height="64" title="Visual Studio 2022 v17.12+" alt="Visual Studio 2022 v17.12+" src="https://user-images.githubusercontent.com/3953314/133473556-35fd48b4-6460-49b1-b7c5-b4a8c529cc04.png"></a>
|
||||||
src="https://user-images.githubusercontent.com/3953314/200161017-7697171f-8f13-4829-95d0-8a25b59ee4c9.png"></a><img alt="space" width="32"
|
</p>
|
||||||
src="https://user-images.githubusercontent.com/3953314/200151935-3c1521ec-16cb-487b-85a2-7454d347c585.png"><a href="https://visualstudio.microsoft.com/vs/community/"><img height="64" title="Visual Studio 2022 v17.12+"
|
|
||||||
alt="Visual Studio 2022 v17.12+"
|
|
||||||
src="https://user-images.githubusercontent.com/3953314/133473556-35fd48b4-6460-49b1-b7c5-b4a8c529cc04.png"></a></p>
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
- Install prerequisite [requirements](https://github.com/modernuo/ModernUO#requirements)
|
- Install prerequisite [requirements](https://github.com/modernuo/ModernUO#requirements)
|
||||||
|
|
@ -60,9 +57,9 @@ ModernUO [] [os] [arch (default: x64)]`
|
- Run `./publish.cmd [release|debug (default: release)] [os] [arch (default: x64)]`
|
||||||
- `os` - [Supported operating systems](https://github.com/dotnet/core/blob/main/release-notes/7.0/supported-os.md)
|
- `os` - [Supported operating systems](https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md)
|
||||||
- `win` - Windows 10/11/2019/2022
|
- `win` - Windows 10/11/2019/2022/2025
|
||||||
- `osx` - MacOS 12/13/14 (Sonoma, Big Sur, Monterey)
|
- `osx` - MacOS 13/14/15 (Sequoia, Sonoma, Big Sur)
|
||||||
- `linux` - Linux
|
- `linux` - Linux
|
||||||
- `arch`
|
- `arch`
|
||||||
- `x64` - Intel 64-bit
|
- `x64` - Intel 64-bit
|
||||||
|
|
@ -107,7 +104,7 @@ Thank you for supporting us! You can find out how by visiting the [sponsors](./S
|
||||||
- [Voxpire](https://github.com/Voxpire), the ServUO Team & Community
|
- [Voxpire](https://github.com/Voxpire), the ServUO Team & Community
|
||||||
- [Karasho](https://github.com/andreakarasho), [Jaedan](https://github.com/jaedan) and the ClassicUO Community
|
- [Karasho](https://github.com/andreakarasho), [Jaedan](https://github.com/jaedan) and the ClassicUO Community
|
||||||
|
|
||||||
</br></br>
|
<br/><br/>
|
||||||
<p align=center>Development Tools & Plugins provided with ♥ by <br /><a href="https://www.jetbrains.com/?from=ModernUO"><img align=middle src="https://github.com/user-attachments/assets/07b12bd0-ca00-472f-8a47-ab48461f3f1d" height="64px" alt="JetBrains" title="JetBrains" /></a><br />
|
<p align=center>Development Tools & Plugins provided with ♥ by<br/><br/><a href="https://www.jetbrains.com/?from=ModernUO"><img align=middle src="https://github.com/user-attachments/assets/13752e36-87a4-4faf-8359-122c5f39d6e7" height="64px" alt="JetBrains" title="JetBrains" /></a><br/>
|
||||||
<a href="https://material-theme.com/"><img align=center src="https://material-theme.com/img/logo/material-oceanic.svg" width="64px" alt="Material Theme" title="Material Theme"></a>
|
<a href="https://material-theme.com/"><img align=center src="https://material-theme.com/img/logo/material-oceanic.svg" width="64px" alt="Material Theme" title="Material Theme"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
# From RunUO to ModernUO
|
|
||||||
RunUO was built using C# from .NET 1.1 in 2002. There have been massive changes to technology in the past 20+ years.
|
|
||||||
We believe it is time for Ultima Online to take advantage of this technology so a server can provide a richer experience with never before seen scale.
|
|
||||||
|
|
||||||
While it is possible (and many have done it) to migrate an _active server_ from RunUO to ModernUO, it is a daunting task.
|
|
||||||
Please ask for help in our discord!
|
|
||||||
|
|
||||||
## Technology
|
|
||||||
| | RunUO | ModernUO |
|
|
||||||
|:-------------|:------------------------------------------------------------------------------------------------------|:------------------------------------------------------------|
|
|
||||||
| Language | C# 4 | C# 11 (.NET 8) |
|
|
||||||
| Supported OS | 32 & 64bit Windows or Mono | 64bit Windows, MacOS & Linux |
|
|
||||||
| IDEs | [VS](https://visualstudio.microsoft.com/downloads/), [VSCode](https://code.visualstudio.com/download) | VS 2022+ or [Rider 2023+](https://www.jetbrains.com/rider/) |
|
|
||||||
|
|
||||||
## Code API Changes
|
|
||||||
* **ModernUO can use source generators to [serialization/deserialization](https://github.com/modernuo/SerializationGenerator#basic-usage) automatically.**
|
|
||||||
* This is the biggest change to the API! While intimidating and different, it unlocks the ability for ModernUO to only serialize _data that has changed_.
|
|
||||||
* We estimate a world save with 10mill objects on a busy server will take less than 1 second.
|
|
||||||
* This feature is _optional and will remain optional indefinitely_.
|
|
||||||
* `Serialize(GenericWriter writer)` and equiv deserialize was changed to `Serialize(IGenericWriter writer)`.
|
|
||||||
* The following now use generics, e.g. `BeginAction(typeof(X))` is now `BeginAction<X>`.
|
|
||||||
* CanBeginAction, BeginAction and EndAction
|
|
||||||
* FindRegion and IsPartOf
|
|
||||||
* FindGump, HasGump, and CloseGump
|
|
||||||
* Functions such as `OnAdded(object)` for both Items/Mobiles are now `OnAdded(IEntity)`.
|
|
||||||
* Most `delegate` have been changed to `Action`.
|
|
||||||
* Example: `EventSink.PlayerDeath += new PlayerDeathEventHandler(EventSink_PlayerDeath);` is now `EventSink.PlayerDeath += EventSink_PlayerDeath;`.
|
|
||||||
* `ObjectPropertyList` is now `IPropertyList`,
|
|
||||||
* Example: `GetProperties(ObjectPropertyList list)` is now `GetProperties(IPropertyList list)`.
|
|
||||||
* `[Constructable]` attribute is now `[Constructible]`.
|
|
||||||
|
|
||||||
### Object Property List API Changes
|
|
||||||
ObjectPropertyList has been drastically optimized, which means the API has been modernized:
|
|
||||||
|
|
||||||
❌ _Not valid_
|
|
||||||
```cs
|
|
||||||
list.Add(1061837, "{0}\t{1}", m_CurArcaneCharges, m_MaxArcaneCharges);
|
|
||||||
```
|
|
||||||
✅
|
|
||||||
```cs
|
|
||||||
list.Add(1061837, $"{_curArcaneCharges}\t{_maxArcaneCharges}");
|
|
||||||
```
|
|
||||||
|
|
||||||
Clilocs that use arguments:
|
|
||||||
|
|
||||||
❌ _Not valid_
|
|
||||||
```cs
|
|
||||||
list.Add(1060659, "Level\t{1}", m_Level);
|
|
||||||
```
|
|
||||||
✅ - _Note the string as an argument, this is mandatory!_
|
|
||||||
```cs
|
|
||||||
list.Add(1060659, $"{"Level"}\t{Level}"); // ~1_val~: ~2_val~
|
|
||||||
```
|
|
||||||
|
|
||||||
Clilocs that use other clilocs as an argument:
|
|
||||||
|
|
||||||
❌ _Do not prepend #_
|
|
||||||
```cs
|
|
||||||
list.Add(1060830, $"#{dirt.ToString()}");
|
|
||||||
```
|
|
||||||
✅ _Use the new custom cliloc argument formatter_
|
|
||||||
```cs
|
|
||||||
list.Add(1060830, $"{dirt:#}");
|
|
||||||
```
|
|
||||||
|
|
||||||
## Core Changes
|
|
||||||
* ModernUO is not inherently thread safe. Overall infrastructure improved with CPU and minimizing memory garbage in mind.
|
|
||||||
* Timer system improved drastically by using [Timer Wheels](http://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing-wheels.pdf).
|
|
||||||
* Networking is 5-10x faster by using fixed [Circular Buffers](https://en.wikipedia.org/wiki/Circular_buffer).
|
|
||||||
* Network packets are no longer objects and write directly to the network buffer, improving performance by 10x.
|
|
||||||
* World saves are 30x faster by saving to memory and flushing to disk in the background.
|
|
||||||
* Improved RNG accuracy and performance by 5x using [Xoshiro256++](https://prng.di.unimi.it/)
|
|
||||||
* Converted quite a bit of configuration to JSON with a central settings file.
|
|
||||||
* Logging changed from Console.WriteLine to Serilog (still work in progress).
|
|
||||||
* Eliminated calling `DateTime.Now` which had a huge performance penalty.
|
|
||||||
* Accounts are now saved to a binary file (will eventually change to a databse) to improve world save performance by eliminating XML.
|
|
||||||
* Strings are now built using the new interpolated string syntax, and highly performant string builders.
|
|
||||||
|
|
||||||
## New Features
|
|
||||||
* IPv6 support.
|
|
||||||
* Generic serialization that is automatically done in parallel with the world save.
|
|
||||||
* The [faction system](https://github.com/modernuo/ModernUO/blob/7adf52ef48df7ae2b034c27e67b0c332b37fb053/Projects/UOContent/Engines/Factions/Core/FactionSystem.cs#L15) is no longer powered by a single item and instead uses generic persistence.
|
|
||||||
* Timezone support for custom scripts that might need it.
|
|
||||||
* Hourly/daily/weekly/monthly backups & archiving using [Z-Standard](https://facebook.github.io/zstd).
|
|
||||||
* Client version detection (including CUO) for easy configuration.
|
|
||||||
* Localization (Cliloc) support.
|
|
||||||
* Better encryption for passwords using [Argon2](https://en.wikipedia.org/wiki/Argon2).
|
|
||||||
* Packet throttling that is configurable per packet and per connection.
|
|
||||||
* Enable packet logging per connection.
|
|
||||||
* Owner accounts can be protected from being locked out. The first account created is automatically added to this list.
|
|
||||||
* Use optional arguments from constructors for Add command.
|
|
||||||
* Captures Razor version and displays it in client gump
|
|
||||||
* Spawners can be exported/imported using commands and use a GUID for replacement.
|
|
||||||
|
|
||||||
## Major Feature Changes
|
|
||||||
* By default, world saves are now every 5th minute of a real world hour.
|
|
||||||
* E.g. 5:00, 5:05, 5:10, regardless of when the server is booted.
|
|
||||||
* Some items have their constructor arguments rearranged.
|
|
||||||
|
|
||||||
## Changes to UO Mechanics
|
|
||||||
* Min/max skill requirements for magery adjusted to be accurate to OSI
|
|
||||||
* Buffs/Curses now apply appropriately
|
|
||||||
|
|
||||||
## Removed Features
|
|
||||||
* Reporting
|
|
||||||
* Remote Admin
|
|
||||||
* My RunUO
|
|
||||||
* Event Log
|
|
||||||
* DocsGen command
|
|
||||||
|
|
||||||
## New Development Features & Changes
|
|
||||||
* Added a shared list/queue for temporary processing such as accumulating players to damage/kill.
|
|
||||||
* [PooledRefList](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Collections/PooledRefList.cs)
|
|
||||||
* [PooledRefQueue](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Collections/PooledRefQueue.cs)
|
|
||||||
* Adds HashSet that is ordered by insertion time
|
|
||||||
* [OrderedHashSet](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Collections/OrderedHashSet.cs)
|
|
||||||
* [PooledOrderedHashSet](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Collections/PooledOrderedHashSet.cs)
|
|
||||||
* Adds [StringBuilder](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Buffers/ValueStringBuilder.cs) that is fast and does not impose garbage collection.
|
|
||||||
* Adds performant [JSON](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Json/JsonConfig.cs) support with simple API.
|
|
||||||
* Adds performant, thread _unsafe_, [ArrayPool](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Buffers/STArrayPool.cs)
|
|
||||||
* Adds highly performant and easy to use converters for [HexString](https://github.com/modernuo/ModernUO/blob/main/Projects/Server/Text/HexStringConverter.cs) representation of data
|
|
||||||
|
|
@ -5,6 +5,7 @@ Thank you to all of our generous sponsors that make ModernUO possible.
|
||||||
**A special thank you to the following sponsors for their considerable contributions:**
|
**A special thank you to the following sponsors for their considerable contributions:**
|
||||||
* [Age of Shadows](https://ageofshadows.gg)
|
* [Age of Shadows](https://ageofshadows.gg)
|
||||||
* [UO Outlands](https://uooutlands.com)
|
* [UO Outlands](https://uooutlands.com)
|
||||||
|
* [UO Sagas](https://uosagas.com)
|
||||||
* Prayer ([MagnUm-Opus](https://discord.gg/CzDEq3vv2N))
|
* Prayer ([MagnUm-Opus](https://discord.gg/CzDEq3vv2N))
|
||||||
|
|
||||||
### Looking to sponsor ModernUO?
|
### Looking to sponsor ModernUO?
|
||||||
|
|
@ -31,6 +32,5 @@ xch1vzk93t538m4xukg955v3ltjtgz6rapev3evnmnxdzf4hjj5y7cuq7tkf6z
|
||||||
#### Bitcoin
|
#### Bitcoin
|
||||||
37QmRWTCjVoNWycMpo1t5JnYVDmJTGSJ9W
|
37QmRWTCjVoNWycMpo1t5JnYVDmJTGSJ9W
|
||||||
|
|
||||||
|
|
||||||
#### Ethereum
|
#### Ethereum
|
||||||
0x7A9D76F497d4Ee150Ada0ea0455fF3f6e8F3b6b8
|
0x7A9D76F497d4Ee150Ada0ea0455fF3f6e8F3b6b8
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"sdk": {
|
"sdk": {
|
||||||
"version": "9.0.101",
|
"version": "9.0.100",
|
||||||
"rollForward": "latestMajor",
|
"rollForward": "latestMajor",
|
||||||
"allowPrerelease": false
|
"allowPrerelease": false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue