diff --git a/GOALS.md b/GOALS.md new file mode 100644 index 000000000..0c6343b93 --- /dev/null +++ b/GOALS.md @@ -0,0 +1,40 @@ +# GOALS + +### Architecture +- [x] Upgrade Server/Scripts compiler to use Roslyn/C# 7 +- [ ] Upgrade the code to use C# 7 standards + +### Administration +- [ ] Move IP logging and account data to SQL +- [ ] Move account management to web + +### Serialization & World Saves +- [ ] Remove Serialization/Deserialization entirely +- [ ] Create a flag to indicate when objects will be serialized. + * Players, all items held by players, houses, etc. +- [ ] Create transactions which handle changes to objects including: + * Transitioning from not serialized to serialized (created) + * Transitioning from serialized to not serialized (deleted) + * Property value changes +- [ ] Asynchronously offload the transaction to another service for permanent serialization + * Support basic KVP databases such as MongoDB, RocksDB, and Redis +- [ ] Create asynchronous request from cold storage + * External system must provide objects and their nested objects (e.g. containers) + +### Optimizations for large shards +- [ ] Eject inactive players and their items after they are serialized to cold storage +- [ ] Create hydration techniques for non-persisted systems (e.g. spawners, decorations, static, champions, etc) +- [ ] Create object pools for high availability items such as gold and reagents +- [ ] Replace timer system with a [wheel](https://github.com/runuo/runuo/pull/42) implementation +- [X] Create `DefaultName` for mobiles and use it for all items +- [ ] Improve asynchronous socket handling + +### Bugs & Misc +- [ ] Naked corpses (container display issue) +- [X] Rounding errors with new bank system +- [ ] Replace `double` with `int` for skills to fix rounding errors and optimize code +- [ ] Replace specific checks for `Item`/`Mobile` by extended `IEntity` and mainstreaming the `NEWPARENT` code +- [ ] TryDropItem dropping items until it fails when it should be all-or-nothing +- [ ] Consuming items are deleted directly in several places instead of using `Item.Consume()` +- [ ] Content displaying for newer clients is not working properly in several situations +- [ ] Stack/Hold checks are broken in certain situations diff --git a/README.md b/README.md index f2c1125d6..1ada41297 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ ModernUO ===== +### Goals +- See [Goals](./GOALS.md) + ### Requirements - .NET Framework 4.7 or Mono 5.10+ - zlib (Linux only) @@ -17,4 +20,6 @@ ModernUO `mcs -optimize+ -unsafe -t:exe -out:RunUO.exe -win32icon:Server/runuo.ico -nowarn:219,414 -d:NEWTIMERS -d:NEWPARENT -d:MONO -reference:System.Drawing -recurse:Server/*.cs` ### Running on Mac/Linux (MONO) -`mono RunUO.exe` \ No newline at end of file +`mono RunUO.exe` + +### Contribution