Highly Performant & Scalable Ultima Online Server Emulator https://www.modernuo.com
Find a file
Harley Holt be19d9aae6
fix: Optimizes Point2D by implementing ISpanFormattable (#1203)
Point2D implements a basic TryFormat function. Only a single format is supported: "(X, Y)" where X and Y are base 10 integers.

Uses recent improvements in string interpolation to write the characters to the destination without first allocating memory for boxed arguments or intermediate strings.

This is a partial solution to issue #1067. A similar solution well be implemented in other classes in Geometry if it looks promising.

Benchmarks
---
d6f8dabf3c/Program.cs

Before change:
```
BenchmarkDotNet=v0.13.2, OS=ubuntu 22.04
Intel Core i7-9700K CPU 3.60GHz (Coffee Lake), 1 CPU, 8 logical and 8 physical cores
.NET SDK=6.0.402
  [Host]     : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2


|                           Method |      Mean |    Error |   StdDev |   Gen0 | Allocated |
|--------------------------------- |----------:|---------:|---------:|-------:|----------:|
|                     CallToString |  44.27 ns | 0.068 ns | 0.063 ns | 0.0063 |      40 B |
|               InterpolatedString | 110.64 ns | 0.316 ns | 0.295 ns | 0.0126 |      80 B |
| InterpolatedStringMultiplePoints | 211.36 ns | 0.349 ns | 0.326 ns | 0.0293 |     184 B |
```

After change:
```
BenchmarkDotNet=v0.13.2, OS=ubuntu 22.04
Intel Core i7-9700K CPU 3.60GHz (Coffee Lake), 1 CPU, 8 logical and 8 physical cores
.NET SDK=6.0.402
  [Host]     : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2

|                           Method |      Mean |    Error |   StdDev |   Gen0 | Allocated |
|--------------------------------- |----------:|---------:|---------:|-------:|----------:|
|                     CallToString |  55.13 ns | 0.826 ns | 0.772 ns | 0.0063 |      40 B |
|               InterpolatedString |  55.73 ns | 0.954 ns | 0.892 ns | 0.0063 |      40 B |
| InterpolatedStringMultiplePoints | 105.42 ns | 0.151 ns | 0.134 ns | 0.0101 |      64 B |
```
2022-10-25 12:08:35 -07:00
.config fix: Fixes code gen of nested classes (#1190) 2022-10-15 19:58:34 -07:00
.github fix: Updates Github Actions & Azure Pipelines (#1192) 2022-10-16 10:10:55 -07:00
Distribution/Data fix: Adds expansion specific mobile status version (#1145) 2022-08-22 21:04:59 -07:00
docs docs: Documentation update (#941) 2022-04-04 13:39:16 -07:00
Projects fix: Optimizes Point2D by implementing ISpanFormattable (#1203) 2022-10-25 12:08:35 -07:00
.editorconfig Adds ModernUO docs skeleton (#243) 2020-09-13 15:21:28 -07:00
.gitattributes fix(git): Updates git attributes (#477) 2021-02-06 21:15:29 -08:00
.gitignore fix: Fixes disallowed features enum serialization (#1093) 2022-06-27 18:30:31 -07:00
azure-pipelines.yml fix: Updates Github Actions & Azure Pipelines (#1192) 2022-10-16 10:10:55 -07:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2020-05-05 08:51:39 -07:00
CONTRIBUTING.md chore: Updates discord links (#394) 2021-01-07 01:04:05 -08:00
Directory.Build.props fix: Removes SetTypeRef for generated code. (#1189) 2022-10-15 15:12:49 -07:00
FAQ.md chore: Updates whats changed (#1082) 2022-06-19 19:55:55 -07:00
global.json fix: Fixes compiling with .NET 7 SDK (#1176) 2022-09-28 21:17:30 -07:00
LICENSE Fixes more line ending issues (#267) 2020-09-27 13:54:56 -07:00
mkdocs.yml docs: Documentation update (#941) 2022-04-04 13:39:16 -07:00
ModernUO.sln chore: Removes benchmarks. (#985) 2022-03-31 10:37:33 -07:00
publish.cmd fix: Fixes detecting linux distro during build (#997) 2022-04-14 17:39:57 -07:00
publish.sh Release Version 0.6.1 (#205) 2020-08-30 23:15:47 -07:00
README.md docs: Adds contributors section to readme 2022-09-30 14:49:28 -07:00
rider-settings.zip Cleanup/Housekeeping (#242) 2020-09-12 15:31:21 -07:00
Rules.ruleset Cleanup & Fixes for .NET 5 (#309) 2020-11-15 10:03:50 -08:00
RUNUO_TO_MODERNUO.md chore: Adds changed mechanics (#1117) 2022-07-14 21:13:03 -07:00
SPONSORS.md fix: Updates sponsors links 2022-03-23 00:08:01 -07:00
stylecop.json Updates formatting rules (#199) 2020-08-25 18:00:51 -07:00
THIRD-PARTY-NOTICES chore: Updates 3rd party notices (#1042) 2022-06-01 09:42:11 -07:00
version.json fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00

ModernUO Discord Subreddit subscribers Twitter Follow Gitter

Ultima Online Server Emulator for the modern era!

GitHub license GitHub stars GitHub issues
GitHub build AzurePipelines build

Requirements

Supported Operating Systems

Windows 10/11/2016/2019/2022 MacOS 10.15/11/12 Debian 10/11 Ubuntu 16/18/20 LTS Linux Mint 17/18/19/20 CentOS 7/8 Fedora 32/33/34/35/36 RedHat 7/8

Running the server

.NET

Development

git .NET

Supported IDEs

    Jetbrains Rider 2022.2.2                           Visual Studio 2022
Rider 2022.2.2+             Visual Studio 2022+

Note: VS Code is not currently supported.

Getting Started

  • Install prerequisite requirements
  • Clone this repository (or download the latest):
    • git clone https://github.com/modernuo/ModernUO.git
  • Open ModernUO.sln to start developing

Building/Publishing

  • Run ./publish.cmd [release|debug (default: release)] [os]
    • os - Supported operating systems
      • win - Windows 10/11/2016/2019/2022
      • osx - MacOS 10.15/11.0+/12.0+ (Catalina, Big Sur, Monterey)
      • ubuntu.16.04, ubuntu.18.04 ubuntu.20.04 - Ubuntu LTS
      • linuxmint.17, linuxmint.18, linuxmint.19 - Linux Mint
      • debian.10, debian.11 - Debian
      • centos.7, centos.8 - CentOS
      • fedora.32, fedora.33, fedora.34, fedora.35, fedora.36 - Fedora
      • rhel.7, rhel.8 - Redhat
      • linux - Other linux distros
      • If blank, the operating system running the build is used. Linux Mint 20 is not supported directly yet, so build explicitly against ubuntu.20.04 instead.

Running the Server

  • Follow the publish instructions
  • Run ModernUO.exe or dotnet ModernUO.dll from the Distribution directory on the server

Note: If you are running a version of linux that isn't listed above, then you may have to install the following using a package manager:

  • libargon2-dev, libz-dev, and zstd

Troubleshooting / FAQ

Want to sponsor?

Thank you for supporting us! You can find out how by visiting the sponsors page.

Collaborators

Kamron Batman Mark1145

Thanks

  • RunUO Team & Community
  • Voxpire, the ServUO Team & Community
  • Karasho, Jaedan and the ClassicUO Community



Development Tools & Plugins provided with ♥ by
JetBrains Material Theme