Updates GOALS and RUNUO_MIGRATIONS.md files
This commit is contained in:
parent
b34bb90cdf
commit
57bec96827
2 changed files with 48 additions and 36 deletions
36
GOALS.md
36
GOALS.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue