Follow us on Twitter @LiquipediaSC2 if you'd like to be kept up to date on all things StarCraft II!

How-To: New Bracket System on the SC2 wiki

From Liquipedia StarCraft 2 Wiki


Introduction[edit]

The new Bracket System comes with several changes in how we have to fill in the Data for Brackets and MatchLists.

This Documentation is supposed to give an overview of how Data will be entered with the new Bracket/MatchList System.

The Changes have some disadvantages:

  • New System and Structure, so people will have to adjust.
  • Somewhat more complicated names for Brackets.
  • Worse Lua runtime for Brackets and MatchLists.

But on the other Hand it also brings several advantages:

  • More Standardization across the wikis.
  • Way easier creation of new Brackets. (Restricted to Reviewer+)
  • All Matches (independent if in Bracket or MatchList) use the same Structure.
  • Better adaptability, we do not need different Brackets for different kinds of MatchUps. All of 1v1, 2v2, Archon, 3v3, 4v4 and Team Matches can be handled via the same base Brackets, Templates and Modules. In addition we now are able to easily display 1v2, 1vTeam or even 1v4 (any combination of the above mentioned MatchUps is possible).
  • The new Brackets will provide automated score sums from map/game data. (Manually set scores still naturally overwrite the automated scores.) And even the Winner of a Match can be determined automatically if the bestof is set and map/game data is entered.
  • In the future this system also might enable automated progression in Brackets.
  • Each MatchGroup (Bracket/MatchList) has a dedicated ID and hence can be referenced on other pages way easier.
  • One big other advantage that was shortly mentioned in a half sentence at piddycon and will be revealed soon (TM) after the new Bracket System has been rolled out to the wikis.


The biggest Problem with implementation of this new Bracket System were Matches with Team involvement. The Structure for Team Matches is more complicated, due to its Submatch Structure. As that already affects the Match as soon as one of the Opponents is a Team we from now on use the following Definition:
A Match is considered a Team Match iff1 at least one of the Opponents has the Type team.

1if and only if

General Structure of the New Bracket System[edit]

New Brackets/MatchLists are now generally entered the following way:

Bracket[edit]

{{#invoke:MatchGroup|bracket|<<<which bracket>>>|id=<<<unique MatchGroupID>>>
|RxMy={{Match
	|date=
	|other match params (Streams, Links to Reviews/..., Vetos, ...)
	|opponent1={{<<<OpponentTemplate>>>|<<<OpponentData>>>}}
	|opponent2={{<<<OpponentTemplate>>>|<<<OpponentData>>>}}
	|map1={{Map|map=<<<Mapname>>>|winner=
		|additional MapPlayerData (e.g. for Team Matches or for Race switching)|comment=|vod=}}
}}

}}
  • RxMy (e.g. R1M1) indicates it is Match y of Round x. (Just like the RxGydetails (e.g. R1G1details) we used for the Match details in the old brackets.)

MatchList[edit]

{{#invoke:MatchGroup|matchlist|id=<<<unique MatchGroupID>>>
|My={{Match
	|date=
	|other match params (Streams, Links to Reviews/..., Vetos, ...)
	|opponent1={{<<<OpponentTemplate>>>|<<<OpponentData>>>}}
	|opponent2={{<<<OpponentTemplate>>>|<<<OpponentData>>>}}
	|map1={{Map|map=<<<Mapname>>>|winner=
		|additional MapPlayerData (e.g. for Team Matches or for Race switching)|comment=|vod=}}
}}

}}
  • My indicates it is Match y of the MatchList.


As one can easily see regarding entering Data the differences between Brackets and MatchLists become marginal.

Examples[edit]

Bracket[edit]

{{#invoke:MatchGroup|bracket|Bracket/2|id=ZZZZZZZZZZ
|R1M1={{Match
	|date=2021-03-26 11:11:11 {{abbr/CET}}
	|bestof=1
	|lrthread=TESTME.com
	|twitch=HeRoMaRinE
	|opponent1={{1v1Opponent|TestA|race=t|flag=de|link=HeRoMaRinE|score=}}
	|opponent2={{1v1Opponent|TestB|race=z|flag=us|score=}}
	|veto1=Jagannatha|vetoplayer1=1|veto2=TEST|vetoplayer2=2
	|map1={{Map
		|map=Deathaura
		|winner=1
		|race1=p
		|race2=t
		|comment=Test
		|vod=https://www.youtube.com/watch?v=0z0B-sr8LPs
	}}
}}
}}
{{#get_bracket:Liquipedia_ZZZZZZZZZZ
|hideRoundTitles=true
}}
will Result in

Lua error in Module:MatchGroup at line 245: Bracketid 'Liquipedia_ZZZZZZZZZZ' is used more than once on this page.. Bracket appears empty for bracketid Liquipedia_ZZZZZZZZZZ. You might need to purge the page.

MatchList[edit]

{{#invoke:MatchGroup|matchlist|id=ZZZZZZZZZY
|M1={{Match
	|date=2021-03-26 11:11:11 {{abbr/CET}}
	|bestof=1
	|lrthread=TESTME.com
	|twitch=HeRoMaRinE
	|opponent1={{1v1Opponent|TestA|race=t|flag=de|link=HeRoMaRinE|score=}}
	|opponent2={{1v1Opponent|TestB|race=z|flag=us|score=}}
	|veto1=Jagannatha|vetoplayer1=1|veto2=TEST|vetoplayer2=2
	|map1={{Map
		|map=Deathaura
		|winner=1
		|race1=p
		|race2=t
		|comment=Test
		|vod=https://www.youtube.com/watch?v=0z0B-sr8LPs
	}}
}}
}}
{{#get_bracket:Liquipedia_ZZZZZZZZZY
|hideRoundTitles=true
}}
will Result in

Lua error in Module:MatchGroup at line 245: Bracketid 'Liquipedia_ZZZZZZZZZY' is used more than once on this page.. Bracket appears empty for bracketid Liquipedia_ZZZZZZZZZY. You might need to purge the page.

Remarks:
  • Note that the MatchSummary Module is not yet finished. Warnull is working on that, big thanks to him.^^
  • There will most likely be an implementation where the additional #get_bracket Parser Function will not be needed.
  • The huge white space below the Bracket is a bug and will hopefully be fixed soonish.
  • The Liquipedia_ in the #get_bracket Parser Function is due to this page being in the Liquipedia Name Space
  • The display Bugs for Brackets (race color not filling the whole container, score border not having full height of the container) are known and fixes already have been proposed.

How-To: Copy-Paste[edit]

The provided Copy-Paste-Code is just a rudimentary framework, you can always add additional information with the parameters explained in the following sections.
Into the |opponent1 (and |opponent2) parameter you have to fill in the OpponentTemplate according to the OpponentType, for more information see here.

MatchLists[edit]

For MatchLists in the context of 1v1 Groups please use the GroupGenerator.
For other MatchLists just copy the below Copy-Paste-Template:
{{#invoke:MatchGroup|matchlist|id=<<<unique ID>>>
|M1={{Match
	|date=
	|opponent1=
	|opponent2=
	|map1={{Map|map=|winner=}}
	|map2={{Map|map=|winner=}}
	|map3={{Map|map=|winner=}}
}}
}}

Brackets[edit]

For Brackets the new System provides a Copy-Paste-Template on the Brackets Page on Commons. (e.g. for 2SE Brackets (independent if it is 1v1/2v2/.../Team) the Copy-Paste-Code can be found at Template:Bracket/2#Template.)
There you only need to select "starcraft2" from the "Select Wiki" DropDown and you can already copy the Bracket you need. (Please keep in mind that Brackets get assigned unique IDs, hence if you should want to use the same Bracket several times you have to use the "Refresh" Button between copy pasting so that a new ID is generated.)

A List that provides the new Names for Brackets (if you know the old (e.g. 2SE) ones) can be found at Liquipedia:BracketUpdate/Legacy

Please keep in mind that the unique ID has to have exactly 10 Signs and those signs can be letters (A-Z, a-z) or numbers (0-9).

Transcluding a page that contains Brackets or MatchLists[edit]

with the new System transclusions of Brackets/MatchLists are not possible anymore. It would generate the same Bracket/MatchList with the same id and hence throw errors. (This is to prevent bad entries in LPDB.)

With the new System you just use {{#get_bracket:<<<id>>>}} (with the unique id of the bracket that should be displayed) instead.

Opponents[edit]

With the New Bracket System any Opponent Type can be matched against each other, this way it enables 1v2, 1v4, 1vTeam, ... Matches and Brackets.

For user purposes there exist 7 Types of Opponents:

  1. solo (One-Player Opponents, these are the Opponents you want to use for 1v1 Matches.)
  2. duo (Standard Two-Player Opponents, these are the Opponents you want to use for 2v2 Matches.)
  3. Archon-duo (Archon Opponents, these are the Opponents you want to use for Archon Matches.)
    • Warning: "Archon" is not a supported type in the code, hence we need to use the workaround of defining them as duo Opponents and setting an "isarchon" flag in extradata for these.
  4. trio (Three-Player Opponents, these are the Opponents you want to use for 3v3 Matches.)
  5. quad (Four-Player Opponents, these are the Opponents you want to use for 4v4 Matches.)
  6. team (Team Opponents, these are the Opponents you want to use for Team Matches.)
  7. literal (Literal Opponents, these can e.g. be used to indicate how Players drop down to the Lower Bracket.)


For Team Opponents the Player Data is retrieved automatically from {{TeamCard}}s. So for those Opponent Types to work the usage of Team Cards is a Requirement! For other Opponent Types the Player Data is specified in the Opponent Template call.

Usage[edit]

Opponents are defined by calling the according templates and entering the needed Data. You can either use the general {{Opponent}} template and specify the type (and in case of Archon the |isarchon=true) yourself or use the according Opponent Type templates, which already set the type (even the Archon "flag"):

  1. for solo Opponents: {{SoloOpponent}} or {{1Opponent}} or {{1v1Opponent}}
  2. for duo (non Archon) Opponents: {{DuoOpponent}} or {{2Opponent}} or {{2v2Opponent}}
  3. for Archon Opponents: {{ArchonOpponent}} or {{Archon}}
  4. for trio Opponents: {{TrioOpponent}} or {{3Opponent}} or {{3v3Opponent}}
  5. for quad Opponents: {{QuadOpponent}} or {{4Opponent}} or {{4v4Opponent}}
  6. for team Opponents: {{TeamOpponent}}
  7. for literal Opponents: {{LiteralOpponent}} or {{Literal}}

Parameters[edit]

|score= (Optional)
Overwrite the automatically calculated score with the set value for this Opponent. (Needed if you want to use score2 in case of Score Resets.)
For Team Matches with Sub-Matches scores become mandatory again.
|score2= (Optional)
Set the score2 for this Opponent. This is needed for Score Resets.
|advantage= (Optional)
Set a default advantage for this Opponent. (E.g. if the player coming from the Winners Bracket gets a 1-0 map advantage for the Grand Finals.)
solo Opponent[edit]

|name= or |p1= or |1=

Specify the DisplayName of the Player/Opponent.
|link= (Optional)
Used to specify the link of the Player should it not coincide with the DisplayName. (If the link is not specified AND a {{ParticipantTable}} is used the link will also be retrieved via the Variables the ParticipantTable sets.)
|flag= (Optional)
Used to specify the flag of the Player. If this is not set AND a {{ParticipantTable}} is used the flag will also be retrieved via the Variables the ParticipantTable sets.
|race= (Optional)
Used to specify the race of the Player. If this is not set AND a {{ParticipantTable}} is used the race will also be retrieved via the Variables the ParticipantTable sets.
duo / trio / quad Opponent[edit]
|pX= (X = 1; ...; Y, where Y is the number of Players for this Opponent)
Specify the DisplayName of the Xth Player.
|pXlink= (Optional)
Used to specify the link of the Xth Player should it not coincide with the DisplayName. (If the link is not specified AND a {{ParticipantTable}} is used the link will also be retrieved via the Variables the ParticipantTable sets.)
|pXflag= (Optional)
Used to specify the flag of the Xth Player. If this is not set AND a {{ParticipantTable}} is used the flag will also be retrieved via the Variables the ParticipantTable sets.
|pXrace= (Optional)
Used to specify the race of the Xth Player. If this is not set AND a {{ParticipantTable}} is used the race will also be retrieved via the Variables the ParticipantTable sets.
Archon[edit]
|pX= (X = 1; 2)
Specify the DisplayName of the Xth Player.
|race=
Used to specify the race of the Archon Opponent.
|pXlink= (Optional)
Used to specify the link of the Xth Player should it not coincide with the DisplayName. (If the link is not specified AND a {{ParticipantTable}} is used the link will also be retrieved via the Variables the ParticipantTable sets.)
|pXflag= (Optional)
Used to specify the flag of the Xth Player. If this is not set AND a {{ParticipantTable}} is used the flag will also be retrieved via the Variables the ParticipantTable sets.
TeamOpponent[edit]

|template= or |1=

Specify the TeamTemplate from which the Opponent link/name and Display should be retrieved.
Players are added via {{TeamCard}}
Literal[edit]
|1=
The to be displayed Text.

Map Parameters[edit]

|winner=
Use this to set the winner of this Map/Game.
  • For a draw set it to 0.
  • If Opponent1 won the Map set it to 1.
  • If Opponent2 won the Map set it to 2.
  • For a not played map (e.g. 3rd Map in a Bo3 that went 2-0) use skip.
|walkover=
Use this to indicate a walkover took place and possibly who won by default.
  • 1 indicates that Opponent1 won by default.
  • 2 indicates that Opponent2 won by default.
  • FF indicates that a forfeit took place. In this Case the Map-Winner is determined by the |winner parameter.
  • DQ indicates that a disqualification took place. In this Case the Map-Winner is determined by the |winner parameter.
|comment= (Optional)
If you want to add a Comment to this Map/Game.
|header= (Optional)
If you want to add a Header to this Map/Game.
|vod= (Optional)
If you want to add a VoD to this Map/Game.

Non-Team Opponents[edit]

|tXpYrace= (X being the Opponents number)
Race of the Yth player for Opponent X. PLayer Order is the same as in the entered PLayerData in the Opponent processing.
For Y = 1 |raceX= also works as an alias for |tXp1=.

Team Opponent[edit]

|tXpY=
Participant Y for Team X. The entered value has to be the link to the players page and not the Displayname!!!
The entry into this parameter also has to be already listed in the TeamCard for this Opponent.
|tXpYrace= (Optional)
The played race of tXpY for this Map/Game.
|opponentXarchon=true (Optional)
Set this to true if OpponentX is a team and this Map/Game is an Archon Game.

Additional for Team Matches[edit]

|subgroup= (Optional)
If you have to group Maps/Games of Team matches into subgroups you can use this parameter.
Maps/Games with the same number as SubGroup will be grouped to one submatch.
If not set SubGroups will increment by 1 for each Map/Game.

Archon Sub-Matches[edit]

|opponentXrace= (Optional)
Define the Archon Race of Opponent X.

Sub-Matches without Map details[edit]

|map=Submatch Y
This will indicate that for the Yth Sub-Match no Map data is available.
|scoreX=
Set manual score for the Xth Opponent (in this Sub-Match with no Map data available).

Match Parameters[edit]

|mapX=
Call the {{Map}} into this to enter Map/Game Data.
|OpponentX=
Call one of the Opponent Templates into this to enter Opponent Data.


|date= (Optional, but recommended)
If not entered this will default to the var set by {{Infobox league}}.
|bestof= (Optional)
If not set this will default to the bestof var if it is set.
|finished= (Optional)
Will be automatically set to true if a winner is determined/set or if the match is going on for 24h. (If date is set ~8.5h instead of 24h.)
|winner= (Optional)
If bestof is set (by parameter of var) this can automatically be determined by the score sums. If walkover is set as a number the winner is determined via that too.
|cancelled=true (Optional)
Indicates that the match was cancelled.
|comment= (Optional)
If you want to add a Comment to this Match.
|walkover= (Optional)
Use this to indicate a walkover took place and possibly who won by default.
  • 1 indicates that Opponent1 won by default.
  • 2 indicates that Opponent2 won by default.
  • FF indicates that a forfeit took place. In this Case the Map-Winner is determined by the |winner parameter.
  • DQ indicates that a disqualification took place. In this Case the Map-Winner is determined by the |winner parameter.

Vetos[edit]

|vetoX= (Optional)
Xth Veto in the Match. (X = 1; ...; 6)
|vetoopponentX= |vetoplayerX= (Optional)
Indicates who did the Xth Veto in this Match. (X = 1; ...; 6)

MediaLinks[edit]

Media Links work just like on the old Brackets, just that they now are applied in the Match Template instead of inside the Details. Available MediaLinks are:

|preview=
|preview2=
|interview=
|interview2=
|recap=
|review=
|lrthread=
|vod=
|vodgameX= (X = 1; ...; 9)

Streams[edit]

Stream work just like on the old Brackets, just that they now are applied in the Match Template instead of inside the Details. Available Streams are:

|stream=
|twitch=
|twitch2=
|afreeca=
|afreecatv=
|dailymotion=
|douyu=
|smashcast=
|youtube=
|trovo=

Only for Team Matches[edit]

|subgroupXheader= (Optional)
Set a header for the Xth Subgroup/Submatch. (X = 1; ...; 9)

MatchGroup Parameters[edit]

|1=
Either set this to matchlist to display a MatchList or set it to bracket to display a Bracket
|id=
Set the (unique) id of the MatchGroup.

Brackets[edit]

|2=
Set the Bracket Template that should be used to define the display.
Example use bracket/2 to display Template:Bracket/2 (i.e. a 2SEBracket).
|R#M$= (Optional)
Call a Match Template into this parameter to enter Data for Match $ of Round #.
|R#M$header= (Optional)
Set the header for Match R#M$.

You also have the following parameters available to adjust the display:

|hideRoundTitles=
|matchHeight=
|matchWidth=
|headerHeight=
|emptyRoundTitles=
|hideMatchLine=
|qualifiedHeader=
Remarks:
  • The Last bunch of Params is only available once we get an implementation where the additional #get_bracket Parser Function will not be needed.

MatchLists[edit]

|M#header= (Optional)
Set a header for Match #.
|M#=
Call a Match Template into this parameter to enter Data for Match #.

Display a bracket/matchlist on an additional page[edit]

To display a Bracket/MatchList on a different page you just have to call its display by entering {{#get_bracket:BRACKET-ID}}, where "BRACKET-ID" is the ID of the Bracket/MatchList that should be displayed.

For Brackets you have the following parameters available to adjust the display:

|hideRoundTitles=
|matchHeight=
|matchWidth=
|headerHeight=
|emptyRoundTitles=
|hideMatchLine=
|qualifiedHeader=

See also[edit]