[WIP] RFC 1: Legacy Leaderboard #938
Replies: 3 comments 1 reply
-
Main concern on this is that this only allows for one leaderboards. The original concept is that there should be multiple leaderboards. The solution I had in mind was just adding another field to track which leaderboard it is, so something like create table lb (
lb_id serial primary key
-- whatever other info is required
);
create table lb_simulations (
-- same stuff
, lb_id integer references lb(lb_id) not null unique
); Will probably want a couple other helper tables like ones to track which user have maintain role/access to which leaderboard
This already exists actually. It's just called The modified ruleset I'm not concerned about because, like I originally wrote on discord, my intention was to let whoever is the maintainer decide the rules for each of the leaderboard they are responsible for. Outside of that I guess most of this is already in line with what's in place. The challenge is really putting in the time to write out the backend that can handle all those REST end points. An unfortunate side effect with server side filtering though is that it's not something I can (easily) cache away on cloudflare to reduce server workload. This is something I want to think about still. Perhaps I can do the filtering on cloudflare instead (more scalable) or alternatively force the client to do the filtering. If forcing client to do the filtering, will just have to do it in such a way that it doesn't require the user to sit there for a couple second on the initial load. |
Beta Was this translation helpful? Give feedback.
-
I'm not sure how many params are unbounded but I think it would be a pain to find them all and list them in the ruleset. Maybe just a general rule can cover them all like "[1.3.11.4] All params must be bounded to what is possible in game i.e you cannot use edit:
Something to consider is that WoW's SimC calculates a "dps variance percentage" which is stddev/mean dps. So a team with 50k dps and 1500 stddev would evaluate to 3% "dps variance percentage." I'm not educated in statistics to know if this value has meaning beyond an arbitrary comparison to other dps variance percentages but it may be worth being part of the rule, like "your stddev/mean cannot exceed x%" -- we'd still have to determine what % is deemed reasonable. This may help narrow down what configs to reject based on dps variance alone |
Beta Was this translation helpful? Give feedback.
-
Can you also add a definition for what the Sara burst hits and cluster buffs should look like? |
Beta Was this translation helpful? Give feedback.
-
I'm proposing to reinstate the legacy DB ruleset as our first leaderboard.
Rationale
[1] Details
[1.1] Potential Names
Note that we aren't limited to a single name, these can be aliases of each other if necessary.
lb.gcsim.app/legacy
lb.gcsim.app/kc_gst
: KurtC Generic Single Targetlb.gcsim.app/kc_cst
: KurtC Continuous Single Target[1.2] Management
I can volunteer to maintain this leaderboard for now.
#:lb-legacy
.gcsim#leaderboard-management
.Whether this is modified to support multiple leaderboards is an implementation detail.
Commands are listed as follows:
/list
: list all submissions requiring manual review./approve [db_id]
: approve submission with id[db_id]
./reject [db_id] [reason]
: reject submission with id[db_id]
. Send DM to submitter listing failure and[reason]
./info [db_id]
: list reasons for manual review. Should be generated from linter.[1.3] Modified Ruleset
New additions to the ruleset are in bold italics.
Fixed Rotation
APL
Hybrid
APL
andFixed Rotation
. These will be subject to the rules ofFixed Rotation
.serpentspine
.huskofopulentdreams
.yelan
is always allowed to have a stack ofbarb
.klee
skill
cannot attack more than3
times.ningguang
burst
cannot have more than6
self-jades and6
screen-jades.ayato
burst
radius
cannot exceed2
.ganyu
burst
radius
cannot exceed2
.travel
less than10f
will be manually reviewed.weakspot=1
will be manually reviewed.set_particle_delay()
will be manually reviewed.wait()
will be manually reviewed.if () {}
,else () {}
,else if {}
, orswitch {}
will be manually reviewed.set_target_pos()
will be manually reviewed.set_player_pos()
will be manually reviewed.[1.4] REST Implementation
List Leaderboard
endpoint for querying data:GET /lb/[name]
GET /lb/[name]?limit=50&after=100
limit
: max number of configs to send (default: 1)after
: the last config count in the previous page (default: 0)query
: query string to filter configs (default: "")char:[name]
: filter configs with character[name]
.-char:[name]
: filter configs without character[name]
.weapon:[name]
: filter configs with weapon[name]
.-weapon:[name]
: filter configs without weapon[name]
.[1.5] DB Implementation
Pending Design until we hash out rest of work.
Glossary
ttk-def
: TTK fixed rotation sims are high HP sims that auto-calculate duration based off the action list. They are usually configured with something like:Beta Was this translation helpful? Give feedback.
All reactions