* Update output of DateTime strings
Define and use explicit formatting for DateTime objects used throughout source
* Update Player.cs
* Update GameActionQueryBirth.cs
* Update DateTimeExtensions.cs
* Update GameActionQueryBirth.cs
match the backpack panel output
* Update EF Nuget Packages
This requires ACE.Adapter and ACE.Database to be updated from .net standard 2.0 to 2.1
* Update ACE.Database.csproj
* fix merge
* Step 1. Add new adapter classes and models
All classes and objects added are in new namespaces.
This add has 0 interraction on existing ACE code.
This sets the groundwork for Step 2. Moving World DB caching to the new models
* first part of the world entity usage
* almost there
* final part
* update WeenieExtensions
* fix
* merge fixes and improvements
* ACE.Database new code
* it compiles
* InitializePropertyDictionaries
* WOrldDatabaseWithEntityCache cleanup
* ShardDatabaseWithCaching
* ShardDatabase Cleanup
* todo
* cache counts reported in serverstatus
* House InitializePropertyDictionaries
* improve ServerStatus
* BiotaModel change HousePermissions to Dictionary<uint, bool>
* PropertiesAllegiance to dictionary
* BiotaUpdater improvements
* Shard Database Cache Reporting
* More code ported from Step 3
* Remove stub CharacterCache
* Update WorldDatabaseWithEntityCache.cs
* build fixes
* code audit
* Remove non-callback functions from SerializedShardDatabase
* BiotaUpdater progress.. only emote left
* Emotes done... now need to test
* fix
* Burden/Value fix for containers
* fat fingered EncumbranceVal
* add some safety
* Don't cache player biotas for initial PlayerManager load
* Step 4. Don't duplicate common properties when copying weenie to biota
This builds on Step 3.
This is a run time optimization. It reduces RAM allocation and in turn also makes less work for the garage collector.
When a biota is instantiated from a weenie (not from a database biota), the biota will point to the weenie for the following collections nstead of duplicating them:
PropertiesCreateList
PropertiesEmote
PropertiesEventFilter
PropertiesGenerator
* Collection capacitys added to ctors (reduce resizing)
* fix override_encounter_spawn_rates
* new Projectile() -> static ProjectileCollisionHelper methods
* disable by default, working out issues...
* Fix for referencing weenie collections directly
* Reduce EnchantmentManager ToList() and clone usage
* fix
* Set ChangesDetected only when a property actually changes
* fix build
* fix
* Fix nullable Order for AnimPart and TextureMap
* FixAnimPartAndTextureMapFromPR2731
Limit number of threads used by database parallel work. This helps avoid "too many connections" errors on larger threaded machines. It also helps reduce memory consumption.
Use parallel for PlayerManager.Initialize()
ForceGC at the end of Startup, before the world is open. ForceGC is a pretty controversial thing. Typically if you're forcing gc, you're doing something wrong. In this case, we're forcing gc before the world starts up so that the work is done in an off-line state. This work will be done eventually, natrually by the gc, so better to get it done before the world is active. We force gc 10 times to make sure we get all objects. On a large server with many players and world precaching, this can free up 4 GB - 6 GB.