Updates GOALS and RUNUO_MIGRATIONS.md files

This commit is contained in:
Kamron Batman 2019-08-07 13:23:07 -07:00
parent b34bb90cdf
commit 57bec96827
2 changed files with 48 additions and 36 deletions

View file

@ -1,23 +1,26 @@
# GOALS # GOALS
### Architecture ### Architecture
- [x] Upgrade Server/Scripts compiler to use Roslyn/C# 7 - [x] Upgrade Server/Scripts to target .NET Core 3
- [ ] Upgrade the code to use C# 7 standards - [X] Upgrade the code to use C# 8 standards
- [X] Remove compilation of scripts at startup in favor of loading DLLs.
### Networking
- [ ] Replace Packet classes with functions
- [ ] Improve asynchronous socket handling using Pipes
- [ ] Improve socket handling (2-5x) and event loop using libuv
### Administration ### Administration
- [ ] Move IP logging and account data to SQL - [ ] Move IP logging and account data to SQL
- [ ] Move account management to web - [ ] Move account management to web
### Serialization & World Saves ### Serialization & World Saves
- [ ] Remove Serialization/Deserialization entirely
- [ ] Create a flag to indicate when objects will be serialized. - [ ] Create a flag to indicate when objects will be serialized.
* Players, all items held by players, houses, etc. * Players, all items held by players, houses, etc.
- [ ] Create transactions which handle changes to objects including: - [ ] Create transactions which handle changes to objects including:
* Transitioning from not serialized to serialized (created) * Transitioning from not serialized to serialized (created)
* Transitioning from serialized to not serialized (deleted) * Transitioning from serialized to not serialized (deleted)
* Property value changes * 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 - [ ] Create asynchronous request from cold storage
* External system must provide objects and their nested objects (e.g. containers) * External system must provide objects and their nested objects (e.g. containers)
@ -32,20 +35,27 @@
* Pools should be elastic and adjust according to nominal usage. For example, if thousands of gold objects are created and destroyed in a small period of time, the pool should be expanded and replenished properly so it is never empty, or full. * Pools should be elastic and adjust according to nominal usage. For example, if thousands of gold objects are created and destroyed in a small period of time, the pool should be expanded and replenished properly so it is never empty, or full.
- [ ] Replace timer system with a [wheel](https://github.com/runuo/runuo/pull/42) implementation - [ ] Replace timer system with a [wheel](https://github.com/runuo/runuo/pull/42) implementation
- [X] Create `DefaultName` for mobiles - [X] Create `DefaultName` for mobiles
- [ ] Improve asynchronous socket handling
### Code Architecture Fixes ### Plugins (Separate Repos & Optional)
- [ ] Create a LayeredItem child and move related code to that class. All layered items should inherit that. - [ ] RunUO 2.0 Migration Utility
* Items that are placed on the paperdoll will need to inherit this. * Template code for updating serializations
- [ ] Create a StackedItem child and move related code to that class. * Convert World file and dump to new serialization technique if there is one
* Items that have an amount will need to inherit this. - [ ] Login/Auth Gateway (Like OSI!)
* Use central AuthID via redis or similar
* Support 2FA Auths via at login gump
- [ ] 2FA Auth at Login to prevent password theft
* Support Authy via universal interface
* Support external app/device, magic number email, SMS, and FCM
* Support user identity via web browser to curb flooding
- [ ] Serialization via Database (no world saves)
* Asynchronously offload the transaction to another service for permanent serialization
* Support basic KVP databases such as MongoDB, RocksDB, and Redis, etc.
### Bugs & Misc ### Bugs & Misc
- [ ] Naked corpses (container display issue) - [ ] Naked corpses (container display issue)
- [X] Rounding errors with new bank system - [X] Rounding errors with new bank system
- [ ] Replace `double` with `int` for skills to fix rounding errors and optimize code
- [X] Replace specific checks for `Item`/`Mobile` by extended `IEntity` and mainstreaming the `NEWPARENT` code - [X] 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 - [ ] 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()` - [ ] Consumable items are deleted directly in several places instead of using `Item.Consume()`
- [ ] Content displaying for newer clients is not working properly in several situations - [ ] Content displaying for newer clients is not working properly in several situations
- [ ] Stack/Hold checks are broken in certain situations - [ ] Stack/Hold checks are broken in certain situations

View file

@ -3,11 +3,14 @@ There are several considerations before migration from RunUO 2.0 to ModernUO.
Many of these issues can be fixed by writing scripts that do world file fixes. Many of these issues can be fixed by writing scripts that do world file fixes.
Others will require careful code review to fix compile/runtime issues. Others will require careful code review to fix compile/runtime issues.
#### Deserialization Issues We will introduce templates to create migration scripts in a future iteration.
#### Deserialization Issues (Startup Issues)
* All BODs will fail to deserialize due to the introduction of BaseBOD * All BODs will fail to deserialize due to the introduction of BaseBOD
* Recommend a migration script to fix this.
* Serial is now a `uint` which could break certain scripts expecting negative numbers or fixed encoding. * Serial is now a `uint` which could break certain scripts expecting negative numbers or fixed encoding.
#### Constructor Inheritence Issues #### Constructor Inheritance (Runtime Errors, Corruption, or Crashes)
* Items that inherit `Food` will pass the wrong arguments to their parent constructor. * Items that inherit `Food` will pass the wrong arguments to their parent constructor.
* Items that inherit spells or scrolls will pass the wrong arguments to their parent constructors. * Items that inherit spells or scrolls will pass the wrong arguments to their parent constructors.
@ -20,17 +23,28 @@ Others will require careful code review to fix compile/runtime issues.
* Various functions such as `OnAdded` which previously took `object parent` now take `IEntity` * Various functions such as `OnAdded` which previously took `object parent` now take `IEntity`
* Functions that utilized non-generic structures (ArrayList, etc) have been changed to use generics. * Functions that utilized non-generic structures (ArrayList, etc) have been changed to use generics.
### Profiling
* Disabled
#### Reports
* Removed
#### RemoteAdmin
* Removed
#### MyRunUO
* Removed
#### EventLog
* Removed
### Future Migration Concerns ### Future Migration Concerns
#### Account System #### Account System
* Accounts from the XML format will need to be migrated to the new database. * Accounts from the XML format will need to be migrated the new interface/format.
* IP Logs from the Accounts XML will need to be offloaded to a new database. * IP Logs from the Accounts XML will need to be offloaded to a new database.
#### Deserialization #### Deserialization
* All layered/stackable items will need to be migrated/fixed since the new hierarchy will look like this:
* Item -> LayeredItem -> Armor/Weapon/etc
* Item -> StackableItem -> Food/etc
* All resources including but not limited to the following will need to be migrated: * All resources including but not limited to the following will need to be migrated:
* Gold, Silver, Platinum * Gold, Silver, Platinum
* Arrow, Bolt, Feature, Shaft * Arrow, Bolt, Feature, Shaft
@ -49,23 +63,11 @@ Others will require careful code review to fix compile/runtime issues.
#### Timers #### Timers
* Scripts that rely on Timers, TimerPriority, etc will need to be fixed to work with the format. * Scripts that rely on Timers, TimerPriority, etc will need to be fixed to work with the format.
#### Skills
* Scripts that use or do math against `double` type Skill values will need to be fixed.
#### Fastwalk #### Fastwalk
* Other fastwalk/speedhack detection systems will need to be deleted or fixed. * Other fastwalk/speedhack detection systems will need to be deleted or fixed.
#### Reports #### Packets
* These will be removed. * Packet, ByteQueue, PacketWriter, and PacketReader have been removed.
* `ns.Send(packet)` has been changed to `Packets.Send(ns, PacketFunc, arg1, arg2...)`
#### RemoteAdmin * Packets that are not used in the core have been moved to content distribution
* This will also be removed. Discussion about a replacement as a plug-in is encouraged. * God client packets have been removed
#### MyRunUO
* This will be removed. Discussion about a replacement using an external database is encouraged.
#### EventLog
* This will be changed to be cross platform compatible. What form it will take is still up for discussion.
#### Packets (Maybe)
* Packets will be changed to be stateless functions that do not require instantiation.