Design Proposal: StarCraft II 1v1 Random Race Selection

Поділитися
Вставка
  • Опубліковано 9 чер 2018
  • Facebook: / brownbeargaming
    Twitter: / brownbear_47
    Twitch: / grizzlybrownbeargaming
    UA-cam: / brownbeargaming
    Hey folks,
    A design proposal regarding random race selection. Hope you enjoy.
    Production Notes:
    1. One idea I considered was implementing random as a user interface feature. Here the player queues "as Random", but behind the scenes, the game client picks one race and searches for it. The advantage of this approach is that it's much simpler to implement because it's just a UI feature - it's similar to the player rolling a die at their desk to select their race, except the selection is hidden until the game launches. I decided against it for a couple reasons:
    -- It has bad edge cases which makes it hard to re-use. For example, in the case of an "Any of the Above" to search all team game types, a two-person party may get queued against Archon, a game mode with longer waiting times than 2v2 or 4v4. This actually worsens waiting times even though from the player's perspective they are searching across more game modes - lose-lose.
    -- It loses information. A Random player is signaling intent to play as any one of three races. This should be an opportunity for the matchmaker to create better matches - e.g. given 4800/4500/4200 and two potential opponents at 5000 and 4150, what's the best match to make? A lot of factors could go into this - the difficulty at finding matches at 5000, the closeness of 4200 and 4150, the length of the time the two opponents have been searching, etc. But you take this data away from the matchmaker if you only queue as one race instead of all three. This reduces the quality of created matches.
    2. "Effort Required: Medium" is optimistic, and the more I think about it the more I think it should be a question mark. The fact that the data models do not need to change is a big deal because it means that the underlying business logic can change without modifying the APIs, which avoids a lot of churn.
    However, I've realized that the solution I presented is still non-optimal. The idea presented here is a naive multi-queue solution in which a player queues to N different slots. It's similar to a leader-election algorithm. Each slot goes off and tries to find a match. When they do, they try to obtain a lock. The first client to obtain the lock confirms its match with the matchmaker. Once the matchmaker hears confirmation from all slots in a game, it notifies each slot. The slots then tell the slots they queued with (if any) to stop searching (who, in turn, will notify the matchmaker of this, which will instruct any other slots they've been matched with to release locks they might be holding and to keep searching). The matchmaker then pools the matched slots' game clients into a lobby and starts the game. There's synchronization issues to think about - esp. live lock - but I think they're solvable.
    The issue is that this still loses information. For example, consider again the example from 1) - 4800/4500/4200 and two opponents, 5000 and 4150. If the 5000 player has been searching for awhile and instantly matches the 4800, that's a win over today (searching at 4500 and not matching) or 1) (where 4800 may not be searching at all). But it's only a partial win, because it assumes smallest time-to-match always finds the most optimal match. However, if you consider both pieces of information simultaneously, you might come to a different conclusion - e.g. maybe the 4800 has already been matched in the previous game, so let's give more weight to the 4200/4150 match. But it's hard to do that in a non-hacky and scalable way when matching decisions are made in isolation.
    I actually think there are three approaches: the hacky solution presented in 1), the clean but only partially optimal solution presented here, and the "best" solution in which all of a player's intent information is considered simultaneously against all other players' intent information. I'd need to learn more about how matchmakers work to decide how much work the "best" solution is, if it's even feasible.
    3. Impact is relative to the development team's priorities. This is a good change but if there are 25 other more useful changes then this would automatically become low priority.
    FAQ:
    -- "What if I queue as Random and end up with a race I haven't done placements for?" A: It's the same as if you had queued with that race to begin with. Battle.net provisions you with a provisional MMR when you're doing placements.
    References:
    -- / 784983541117390849
    -- • Josh Menke presents Bl... (Blizzard’s matchmaking rating system)
    -- liquipedia.net/starcraft2/Bat...
    -- imgur.com/a/Suj8E (MMR win rates)
    -- us.battle.net/sc2/en/blog/2016... (patch 3.4)
    -- us.battle.net/sc2/en/blog/2030... (patch 3.7)
  • Ігри

КОМЕНТАРІ • 18

  • @josephsmith1149
    @josephsmith1149 6 років тому +22

    I think it would be better if, when selecting random, a race is choosen first, and only matches for that race are searched for. If all three races search at the same time and whichever one finds a game first is selected, the race whose MMR falls within the most populated range will be selected disproportionately often.

    • @brownbeargaming
      @brownbeargaming  6 років тому +2

      This is a good idea as well. I thought about this approach, but decided its edge cases are worse than the idea in the video. For instance in the case of searching in a game mode where no match is possible (e.g. Archon sometimes) the player is stuck until the search widens. This would lead to more waiting time; there are workarounds but they feel hacky and hard to scale. See the description of the video.
      I think a better solution would be to weight the slots that you multi-queue so that you can adjust distributions as you see fit e.g. to try to achieve equal distribution with 1v1 random. Ideally the weight would be self-adjusting, like time since last game with this configuration. The advantage of a weight is that it can flexibly incorporate any goal the designer has for how games are distributed - it could also be used to prioritize players that haven't played in a long time, say. With no change (all weights equal) it minimizes waiting time, which is a good state but (as you mentioned) can have drawbacks.

  • @MisterL2_yt
    @MisterL2_yt 6 років тому +3

    LOL I just randomly came across this video to see my winchance calculator in it :D
    Also noticed I subbed to your channel for one of your previous SC2 videos... nice :)

    • @brownbeargaming
      @brownbeargaming  6 років тому +1

      Thanks, and thanks for that analysis on win chance!

    • @MisterL2_yt
      @MisterL2_yt 6 років тому

      np ;)
      besides the screenshot there is actually a python script that you can run as well. it's fairly accurate for mmr gaps

  • @dj_koen1265
    @dj_koen1265 6 років тому +3

    i agree from the matchmaking balance point of view, but an important question might be "why do poeple play random" and whether or not this new method serves the same experience. you would for example need to play 3 times as many matches to get a ranking with random whereas the convenience of the current random may be a big selling point.
    just spitballing some thoughts

    • @dj_koen1265
      @dj_koen1265 6 років тому

      btw glad to see you making videos again, i always enjoy them

  • @DevinDTV
    @DevinDTV 6 років тому

    You clearly did your research. Great video.

  • @MisterL2_yt
    @MisterL2_yt 6 років тому

    I like the idea of using random as matchmaking mechanism, I imagine that can be a little tricky though from the technical side if two matches are found at the same time ;D
    Also, for 4 player maps they should just show where your opponent spawned if anything.

  • @dizzt19
    @dizzt19 6 років тому +1

    If each race has an individial MMR, what's the point of the random mode? I'm not saying it's good as is but if you want fairer matchmaking, why not just pick race at random yourself?

    • @ktvindicare
      @ktvindicare 6 років тому

      Because Random is its own race. It doesn't make sense until you play it for yourself. Everyone treats you differently and you in turn treat the game differently when your race is Random.

  • @elitemadness7497
    @elitemadness7497 6 років тому

    Yeeee

  • @Shuffleblade
    @Shuffleblade 6 років тому +1

    I think having "random" as its own race this way it works now is the only way for it to work. The reason for that is the "league placement", what you are proposing is that while playing random you are actually playing either diamond zerg on ladder, terran plat on ladder or protoss master on ladder. You are not playing "random" the same way as you are now, the beauty of playing random now is that your league ranking actually reflect your skill with random. Your proposed change changes that, you can go up in into dia just because you are winning a lot as zerg in silver league, weird.
    I think the best option is to keep the "random race" as is but give players a button "queue with random race" which basically does what you proposing but goes towards the mmr of the race that gets picked.
    Your idea changes the whole reason for random existing as a race, might as well remove it as a separate race in that case.

    • @MrXaoras
      @MrXaoras 6 років тому

      i dont htink you understood the video

    • @Shuffleblade
      @Shuffleblade 6 років тому

      I do understand the video, I'm saying brownbear is looking at the race "random" the wrong way. It is not simply "queue as random race" if that is what someone wants just add that option but if you do the proposed change there will no longer be any reason to have random as its own race.

  • @ktvindicare
    @ktvindicare 6 років тому +1

    Nice idea, but your assumption as to WHY people play random is wrong, and thus your whole conclusion is without its foundation.
    People don't pick random so they can queue as whatever off race they want. People queue as Random because it's a unique experience playing as the game's 4th race. Playing Random has a different meta, different tactics are usually involved and it quite deservedly has its own MMR.
    People that don't play Random don't understand this. Why would I queue up as Random when I can just pick whichever race I want to off race? It doesn't make sense. Random as it is now is a unique experience, your change would essentially remove it altogether.
    The game doesn't need an overhaul to random like this. You can already pick whichever race you want. Leave Random as it is.

    • @brownbeargaming
      @brownbeargaming  6 років тому

      I don't agree with this characterization of Random. It doesn't have its own meta at all - you're playing the same races as everyone else. What's different is that your opponent can't see what race you are until they scout you. After that it's no different than playing the match-up normally.
      So, let's think about that early game period where your race is hidden. Every match-up has different scouting timings and scouting patterns. Much of StarCraft II's interesting early game design comes from how players choose to open and how that influences their scouting. A great example is early game Terran - many Terran builds are balanced around the idea that worker scouting is inefficient, so the Terran player opens in such a way that they can be safe against cheeses while still expanding and looking forward to the mid-and-late game. The widow mine drop opening vs. 1-base oracle is a perfect example of this balance - nobody "just dies", but there's a ton of mechanical and strategic depth to this interaction because the timings (esp proxy oracle vs. first widow mine, 1st phoenix vs 1st medivac drop) time out perfectly.
      That fine-tuned balance is just not possible with Random, especially on a 4-player map. You're effectively forced into a less efficient opener because you can't see your opponent's race. It's not what competitive StarCraft was designed or balanced for - e.g. before the Oracle nerf, if you opened wrong against proxy Oracle on a 4-player map, you were just dead. The only reason it's not a big deal is because it's very hard to play all three races at a high level, so Random players get "out-muscled" by their opponents. It's true that this is a "unique experience", but it's not what the game was designed or balanced for.

    • @ktvindicare
      @ktvindicare 6 років тому +1

      For starters, I get cheesed a LOT as Random. I think it's either because people think I'm going to cheese them or because not having a set build order from the outset due to having to scout first triggers people into cheesing as a default option.
      For second, playing 9 match ups everyone has stronger and weaker match ups. For me my ZvZ was always hands down my weakest, so I'd play uber defensively in order to get it into the mid and late game because I know I'd lose to an even MMR Zerg player in a Baneling duel.
      The mirror match ups especially just tend to play out very differently the way Random works now. That's not always a good thing in my personal opinion but it's noticeably different from when I have my race selected.
      I mean it when I say that playing Random is truly a unique experience. There's nothing to be gained from changing that to be honest, if I want to play a specific off race then the system already lets me do that. Random is unique and I don't think it needs to be changed.