Just dropping by to give you a daily update on some things we’ve been working on. Today I was actually going to work on issues related to one-troop defenses, but due to the way my scheduling has panned out, my day got broken up a bit, and it was more practical to switch to a task involving finishing off some guild wars ranking/bracketing issues to a point where we could deploy them for next week.
TL;DR: We’ve got some new guild war bracket calculations going out next week, that should appear to be a lot more fair at the top end of the the table.
Anyway… here goes the long version, for those interested…
The Problem from Players’ Point of View
There were a number of cases - particularly a few at the top of the table where Guild A would finish with more points than Guild B, but then drop a bracket while Guild B stayed in place. To the human eye that seems weird, obviously… but there were good reasons & intentions for writing the system the way it was done, which I’ll explain below… I’m sure many of you will disagree with me, but I’ll list some of our reasoning behind it.
The Problem from the Devs’ Point of View
Well, your problems are really OUR problems… so everything above counts for us too, BUT we also had two extra considerations:
- Brackets were added late in the schedule due to player feedback. We didn’t have time to write a full and robust bracketing system, so we had to piggyback some of the bracketing code on our existing codebase for guild wars rankings.
- Having to deal with both New Guilds entering the system, as well as guilds who might skip a week, introduces a level of complexity here that is not easy to deal with, and made the whole piggybacking thing really attractive, as it was built to deal with a “fresh” set of guilds each week (EDIT: oh, and before.anyone asks I’m not implying we used the SAME calculation as the week 1 placements… it was basing off of score & trying to standardize the score based on perceived quality of guilds & their opponents… we spent 4 weeks modifying this to get it right, and made some headway, but it just wasn’t getting to the point where we were happy with it)
Why this wasn’t a Trivial Problem
So… It’s pretty simple to look at almost any series of patterns with the awesome supercomputers in our heads, see things, and say "Why don’t you just…"
It’s a whole lot different story to write code that grasps that big concept and gets it 100% correct including all of the wacky obscure corner-cases that can happen
To top that off, every solution to a complex problem has trade-offs.
Here are a couple of potential solutions, and the problems we see:
Q. Why don’t you just rank on points?
A. Because it would cause teams to intentionally lose really hard one week, drop a bunch of brackets, then WIN really hard to rocket up into bracket #1 the following week. The reason for that is the “value” of a point is highly dependent on the opponents you face.
Q. Why don’t you just pick the teams with lower points in a group to demote, and the teams with higher points to promote?
A. Because figuring out what to do with NEW teams, or teams that SKIP a week is really difficult, and we didn’t have enough data on this to make a call whether it was a good idea or a bad idea (for the record we’ve gone with a related solution to this one, now that we have a better idea its effect)
There were a bunch of other suggestions I’ve read, and probably lots I missed. These were just a couple. Honestly, most of them probably came up in our meetings, and EVERY one has trade-offs and potential flaws.
What are we switching to?
We’re switching to a simpler system. Simpler solutions are almost always better… they tend to have less exploits, and are easier to maintain. It still has a couple of trade-offs, which I will mention below.
Basically, at end of every week, each bracket will attempt to do the following:
- Rank 1 guild climbs 2 brackets
- Ranks 2/3 climb 1 bracket
- Ranks 4-7 stay put
- Ranks 8-9 drop 1 bracket
- Rank 10 drops 2 brackets
That is a little different in the top 3 brackets (because we wanted to make bracket 1 a big deal):
- Bracket 1… there are no promotions (obviously) and only rank 9-10 guilds will be demoted to Bracket 2
- Bracket 2… only the top 2 guilds will promote, but the bottom 3 guilds will demote as normal
- Bracket 3… only the top 2 guilds will promote, but the bottom 3 guilds will demote as normal
(basically, we’ve removed any interaction between bracket 3 & 1 to stop any shenanigans of guilds trying to drop into bracket 3 for an easier shot at the top… you want bracket 1? you have to place first or second in bracket 2)
Now that IS JUST A STARTING POINT, and here is where the tradeoffs begin to happen:
- New Guilds (never played a GW before), will try to find an appropriate position down in the lower 25% of the table
- Guilds who missed one or more weeks - you will drop some brackets… more brackets the more weeks you miss
Now because we need to insert those guilds into the system, that means the whole 1/2/3-promote, 8/9/10-demote thing will become more volatile as we move further down the rankings… for example if 5 returning guilds insert above you, you could finish 6th and still end up dropping a bracket.
That’s the big trade-off here really… extra volatility for lower guilds. But we’ve seen guilds returning every week at the top of the table, so we can’t argue with the data. Top guilds should see it running pretty smoothly.
The other tradeoff is, of course, now it’s slower to climb back to where you were if you skip some weeks and drop a bunch of brackets… so if your guild is serious about guild wars, my suggestion is that you’re better off joining the GW and getting 0 points, than just not registering and potentially falling quite a few brackets down.