Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

We need a way to create/restore server gameplay/configuration options/values in the db #753

Closed
Mag-nus opened this issue Apr 20, 2018 · 3 comments

Comments

@Mag-nus
Copy link
Member

Mag-nus commented Apr 20, 2018

As we make more progress on the code, we're constantly coming across things that we're developing to replicate retail, but we know a server operator would prefer to tweak.

A couple examples:

  • Player logout doesn't have to take 5 seconds. It could be configured to be 1 second (Integer)
  • Bonus XP/Luminance (Float)
  • Message Of The Day (String)
  • Casting Impen/Bane on a player can act like an aura instead of affecting only equipped items. (Bool)

There are many many more things that players might want to configure. It would be great if they could just change a database value on a running server to have the change take effect.

We should have a DatabaseConfigurationManager (or similar) class that exposes all of these options.

Perhaps this class periodically (every minute, 5 minutes, ...?) checks the database for updated values.

We could even include an admin command to force resync of the variables.

We could even include admin commands to modify the variables from the command line, and from in-game.

@Scribble1
Copy link

Drop items on death (Bool)
Trophy Drop Rate Increases (Float or Int?)
Quest Timer Multipliers (Float or Int?)
Kill XP Multiplier (Float)
Quest XP Multiplier (Float)

gmriggs pushed a commit that referenced this issue Jun 21, 2018
)

* Added the configuration database base script.

This should initialize the config database to hold different values that can be changed during the server operation.

* Added database models and connection.

This should begin to add in the new configuration database and its models so that it can be accessed from the server.

* Added boolean statistic access methods.

Modified the database file so that it was properly casting to a boolean and added the methods into the server configuration database API.

* Added the ability to access/modify integers in the config database.

* Added the ability to access/modify floating point variables in the configuration database

* Added the ability to access/modify string values in the configuration database

* Added the ServerConfigurationDatabase to the DatabaseManager.

* Added in the initial caching layer for configuration

* Added the ability to modify cached items.

* Changed from regular dictionaries to concurrent dictionaries.

* Added in the ability for the ConfigurationManager to self-update from the database.

* Added fallback parameters instead of forcing a default

* Added customizable vitae statistics.

This is the first big stat that can be modified. It is a float, so more floats should now work when they have support added.

* Updated the configuration manager to separate methods and ensure semantics are correct.

* Added command to fetch float value from server

* Add property for XP/Lum multipler.

* Welcome message/MOTD is now configurable from the database.

* Added string modification commands

* Database is no longer required for server configuration.

* Added in all modification/fetch commands and a resync command

* Renamed ConfigurationManager -> PropertyManager as this removes ambiguity

* Changed logging string to be more consistent

* Pass w/ StyleCop

* Added comments to the property manager

* Added the ability to disable caching fallback values.

This can be used for default settings or if a fetch with the default fallback should not cache (ie fetching xp_multipler before xp_multiplier has been fetched from the DB/the default value has been given, and therefore xp_multiplier is fetched as 0 and cached as 0). This functionality should be used for server commands.

* The admin commands now properly obey cacheFallback restrictions

* Added initial default property handling.

* Moved to using constant values as defaults.

* Switched to using a Dictionary for resolution of default properties

* Added warning when the server configuration database is not loaded.

* Corrected MOTD default string

* Renamed some of the database connection objects and changed float -> double and int -> long

* Fixed admin commands not being named correctly

* Fixed spelling error

* Config tables now lie in the shard database

* Added descriptions to properties across the board that can be analyzed through admin commands

* Removed property from PlayerXP file

* Removed vitae properties from EnchantmentManager

* Added null checks to make output nicer

* Added command to modify property descriptions

* Fixed string not being stored properly in the DB and crashing the server

* Wrapped the old ServerPropertyDatabase into SerializedShardDatabase

* Fixed ShardDbContext having a modified OnConfiguring method
@EvanMerlock
Copy link
Contributor

The basic impl can be found at #820. Now migration for stuff that should be properties but aren't need to be added, and once we have a base set of properties we can create a dump of the tables to place in the shard creation dump.

ghost pushed a commit that referenced this issue Jun 23, 2018
* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* add ability to /tele players by name (#823)

* add ability to /tele players by name

* command parsing resiliency

* Give Request fix (#824)

* Give Request fix

Selected Wielded Objects as well as Inventory Objects. This fixes crash of gioving wielded objects to the town crier.

* Deleted unnecessary semicolons

* requested return for null

* UI panel refresh, apply XP earned by vassals on login

* Unequip and burden correction (#826)

* Add a configurable property storing database to resolve issue #753 (#820)

* Added the configuration database base script.

This should initialize the config database to hold different values that can be changed during the server operation.

* Added database models and connection.

This should begin to add in the new configuration database and its models so that it can be accessed from the server.

* Added boolean statistic access methods.

Modified the database file so that it was properly casting to a boolean and added the methods into the server configuration database API.

* Added the ability to access/modify integers in the config database.

* Added the ability to access/modify floating point variables in the configuration database

* Added the ability to access/modify string values in the configuration database

* Added the ServerConfigurationDatabase to the DatabaseManager.

* Added in the initial caching layer for configuration

* Added the ability to modify cached items.

* Changed from regular dictionaries to concurrent dictionaries.

* Added in the ability for the ConfigurationManager to self-update from the database.

* Added fallback parameters instead of forcing a default

* Added customizable vitae statistics.

This is the first big stat that can be modified. It is a float, so more floats should now work when they have support added.

* Updated the configuration manager to separate methods and ensure semantics are correct.

* Added command to fetch float value from server

* Add property for XP/Lum multipler.

* Welcome message/MOTD is now configurable from the database.

* Added string modification commands

* Database is no longer required for server configuration.

* Added in all modification/fetch commands and a resync command

* Renamed ConfigurationManager -> PropertyManager as this removes ambiguity

* Changed logging string to be more consistent

* Pass w/ StyleCop

* Added comments to the property manager

* Added the ability to disable caching fallback values.

This can be used for default settings or if a fetch with the default fallback should not cache (ie fetching xp_multipler before xp_multiplier has been fetched from the DB/the default value has been given, and therefore xp_multiplier is fetched as 0 and cached as 0). This functionality should be used for server commands.

* The admin commands now properly obey cacheFallback restrictions

* Added initial default property handling.

* Moved to using constant values as defaults.

* Switched to using a Dictionary for resolution of default properties

* Added warning when the server configuration database is not loaded.

* Corrected MOTD default string

* Renamed some of the database connection objects and changed float -> double and int -> long

* Fixed admin commands not being named correctly

* Fixed spelling error

* Config tables now lie in the shard database

* Added descriptions to properties across the board that can be analyzed through admin commands

* Removed property from PlayerXP file

* Removed vitae properties from EnchantmentManager

* Added null checks to make output nicer

* Added command to modify property descriptions

* Fixed string not being stored properly in the DB and crashing the server

* Wrapped the old ServerPropertyDatabase into SerializedShardDatabase

* Fixed ShardDbContext having a modified OnConfiguring method

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* UI panel refresh, apply XP earned by vassals on login
ghost pushed a commit that referenced this issue Jun 23, 2018
* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* UI panel refresh, apply XP earned by vassals on login

* Updating Fellowship system

* Fixing tabs

* Unequip and burden correction (#826)

* Add a configurable property storing database to resolve issue #753 (#820)

* Added the configuration database base script.

This should initialize the config database to hold different values that can be changed during the server operation.

* Added database models and connection.

This should begin to add in the new configuration database and its models so that it can be accessed from the server.

* Added boolean statistic access methods.

Modified the database file so that it was properly casting to a boolean and added the methods into the server configuration database API.

* Added the ability to access/modify integers in the config database.

* Added the ability to access/modify floating point variables in the configuration database

* Added the ability to access/modify string values in the configuration database

* Added the ServerConfigurationDatabase to the DatabaseManager.

* Added in the initial caching layer for configuration

* Added the ability to modify cached items.

* Changed from regular dictionaries to concurrent dictionaries.

* Added in the ability for the ConfigurationManager to self-update from the database.

* Added fallback parameters instead of forcing a default

* Added customizable vitae statistics.

This is the first big stat that can be modified. It is a float, so more floats should now work when they have support added.

* Updated the configuration manager to separate methods and ensure semantics are correct.

* Added command to fetch float value from server

* Add property for XP/Lum multipler.

* Welcome message/MOTD is now configurable from the database.

* Added string modification commands

* Database is no longer required for server configuration.

* Added in all modification/fetch commands and a resync command

* Renamed ConfigurationManager -> PropertyManager as this removes ambiguity

* Changed logging string to be more consistent

* Pass w/ StyleCop

* Added comments to the property manager

* Added the ability to disable caching fallback values.

This can be used for default settings or if a fetch with the default fallback should not cache (ie fetching xp_multipler before xp_multiplier has been fetched from the DB/the default value has been given, and therefore xp_multiplier is fetched as 0 and cached as 0). This functionality should be used for server commands.

* The admin commands now properly obey cacheFallback restrictions

* Added initial default property handling.

* Moved to using constant values as defaults.

* Switched to using a Dictionary for resolution of default properties

* Added warning when the server configuration database is not loaded.

* Corrected MOTD default string

* Renamed some of the database connection objects and changed float -> double and int -> long

* Fixed admin commands not being named correctly

* Fixed spelling error

* Config tables now lie in the shard database

* Added descriptions to properties across the board that can be analyzed through admin commands

* Removed property from PlayerXP file

* Removed vitae properties from EnchantmentManager

* Added null checks to make output nicer

* Added command to modify property descriptions

* Fixed string not being stored properly in the DB and crashing the server

* Wrapped the old ServerPropertyDatabase into SerializedShardDatabase

* Fixed ShardDbContext having a modified OnConfiguring method

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* UI panel refresh, apply XP earned by vassals on login

* Updating Fellowship system

* Fixing tabs

* Adding Allegiance system (#825)

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* add ability to /tele players by name (#823)

* add ability to /tele players by name

* command parsing resiliency

* Give Request fix (#824)

* Give Request fix

Selected Wielded Objects as well as Inventory Objects. This fixes crash of gioving wielded objects to the town crier.

* Deleted unnecessary semicolons

* requested return for null

* UI panel refresh, apply XP earned by vassals on login

* Unequip and burden correction (#826)

* Add a configurable property storing database to resolve issue #753 (#820)

* Added the configuration database base script.

This should initialize the config database to hold different values that can be changed during the server operation.

* Added database models and connection.

This should begin to add in the new configuration database and its models so that it can be accessed from the server.

* Added boolean statistic access methods.

Modified the database file so that it was properly casting to a boolean and added the methods into the server configuration database API.

* Added the ability to access/modify integers in the config database.

* Added the ability to access/modify floating point variables in the configuration database

* Added the ability to access/modify string values in the configuration database

* Added the ServerConfigurationDatabase to the DatabaseManager.

* Added in the initial caching layer for configuration

* Added the ability to modify cached items.

* Changed from regular dictionaries to concurrent dictionaries.

* Added in the ability for the ConfigurationManager to self-update from the database.

* Added fallback parameters instead of forcing a default

* Added customizable vitae statistics.

This is the first big stat that can be modified. It is a float, so more floats should now work when they have support added.

* Updated the configuration manager to separate methods and ensure semantics are correct.

* Added command to fetch float value from server

* Add property for XP/Lum multipler.

* Welcome message/MOTD is now configurable from the database.

* Added string modification commands

* Database is no longer required for server configuration.

* Added in all modification/fetch commands and a resync command

* Renamed ConfigurationManager -> PropertyManager as this removes ambiguity

* Changed logging string to be more consistent

* Pass w/ StyleCop

* Added comments to the property manager

* Added the ability to disable caching fallback values.

This can be used for default settings or if a fetch with the default fallback should not cache (ie fetching xp_multipler before xp_multiplier has been fetched from the DB/the default value has been given, and therefore xp_multiplier is fetched as 0 and cached as 0). This functionality should be used for server commands.

* The admin commands now properly obey cacheFallback restrictions

* Added initial default property handling.

* Moved to using constant values as defaults.

* Switched to using a Dictionary for resolution of default properties

* Added warning when the server configuration database is not loaded.

* Corrected MOTD default string

* Renamed some of the database connection objects and changed float -> double and int -> long

* Fixed admin commands not being named correctly

* Fixed spelling error

* Config tables now lie in the shard database

* Added descriptions to properties across the board that can be analyzed through admin commands

* Removed property from PlayerXP file

* Removed vitae properties from EnchantmentManager

* Added null checks to make output nicer

* Added command to modify property descriptions

* Fixed string not being stored properly in the DB and crashing the server

* Wrapped the old ServerPropertyDatabase into SerializedShardDatabase

* Fixed ShardDbContext having a modified OnConfiguring method

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Commenting debug messages

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* UI panel refresh, apply XP earned by vassals on login

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* Updating Fellowship system

* Allegiance WIP

* Ranks, XP passup calcs

* Granting Allegiance XP passup to patrons

* Fixing Allegiance tab

* Adding Allegiance exceptions

* Adding break allegiance

* Updating Fellowship system

* Fixing tabs
@LtRipley36706
Copy link
Member

#820 resolves this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants