Scoreboards Documentation

Everything you need to create and manage Discord leaderboards

  1. Tilføj botten — Inviter Scoreboards ind på din Discord-server med invite-linket på forsiden.
  2. Kør opsætningsguiden — Brug /get started: én hurtig formular til at navngive dit leaderboard, vælge en type og eventuelt en log-kanal — og boardet bliver lagt op direkte i kanalen. Point-, Highscore- og Time-boards starter med et par eksempler, så du kan se boardet i aktion; de forsvinder i samme øjeblik den første rigtige score lander.
  3. Sæt rollerne — Åbn dashboardet og vælg rollen <arg>bot permission</arg> (dem der må styre leaderboards) og rollen <arg>validator</arg> (dem der må godkende indsendelser).
  4. Lav dit første leaderboard — Brug /leaderboard create. Du vælger navn og type, og resten sætter du i formularen, der åbner.
  5. Vis det frem — Kør /leaderboard show i en kanal, så bliver leaderboardet lagt op med knapper til indsendelse og bladring.

Når du laver et leaderboard med /leaderboard create, vælger du en af seks typer:

Classic

Lægger point til eller trækker fra en løbende total. Bedst til spil, hvor pointene hober sig op over tid.

Highscore

Gemmer kun hver spillers personlige rekord. Lavere scores bliver automatisk skiftet ud.

Time (Speedrun)

Indsend tider som 00:00:00 (hundrededele) eller 00:00:000 (millisekunder) — visningsformatet vælger du i dashboardet, og nye boards står som standard til millisekunder. Sortér stigende, hvis hurtigst vinder, faldende hvis længst vinder.

ELO - Ranked

Konkurrencepræget ELO-rating, 1v1 eller på hold fra 2v2 til 8v8. Indsend resultatet af et match, og alle deltageres rating bliver rettet automatisk.

Rating

Indsend billeder og lad dit community give stjerner (1–10). Stemmerne bliver til et gennemsnit. Perfekt til kunstkonkurrencer og kreative udfordringer.

League

Point efter matches — til fodbold, basket, FIFA og alt derimellem. Du bestemmer selv point for sejr/uafgjort/nederlag (3/1/0 som standard) og noterer matchens cifre (fx 3-1).

Styring af leaderboards

KommandoBeskrivelseRettighed
/leaderboard createLav et nyt leaderboard — vælg navn og type, og sæt sortering og mere i formularenAdmin / bot permission
/leaderboard showLæg leaderboardet op i kanalen med interaktive knapperAdmin / bot permission
/leaderboard settingsÅbner dashboardet, hvor du styrer boardets indstillinger (sortering, synlighed, kolonnenavne, visning, ELO-opsætning med mere)Admin / bot permission
/leaderboard deleteSletter et leaderboard og alle dets data permanent (kræver bekræftelse)Admin / bot permission

Scores & matchresultater

KommandoBeskrivelseRettighed
/scoreSæt eller juster en spillers score, ELO eller tid. Vælg tavlen, og vælg derefter Sæt eller Juster i formularen, der åbner. Billedbedømmelses-tavler er ikke med.Admin / bot permission

Opsætning

KommandoBeskrivelseRettighed
/get startedStart opsætningsguiden til den allerførste opsætningAdmin
/helpÅbn den interaktive hjælp med alle emnerAlle
/delete_my_dataSlet permanent de personlige leaderboards og scores, der ligger under dit eget workspace (kræver bekræftelse)Alle

Økonomi (beta)

Økonomien har ingen slash-kommandoer. Medlemmer åbner serverens shopside for at se deres saldo, købe roller, board-emojis og navnefarver — og for at folde en udbetaling ud og se, hvordan den blev regnet ud. Admins slår den til, sætter priser og giver eller tager valuta i dashboardet under Økonomi.

Der er to veje ind:

  • I Discord klikker du på submit-knappen på den opslåede leaderboard-besked — den hedder Submit score på Classic/Highscore/Time, Submit result på ELO og League, og Submit image på Rating. Botten åbner det flow, der passer til typen: et scorefelt, vælg spillere + vinder, vælg spillere + score, eller et navn plus selve billedet. På et holdleaderboard skal du vælge en fuld opstilling til hver side i stedet for én spiller, og et free-for-all-leaderboard har i stedet en Report result-knap.
  • Eller åbn leaderboardet på hjemmesiden og klik Submit — det er præcis det samme flow, og det er den eneste vej ind, der tager et selvvalgt navn til spillere, som ikke er på jeres Discord.

Godkendelsen

  1. Indsendelsen bliver lagt op i log-kanalen (hvis du har sat en).
  2. En validator eller admin klikker Approve eller Reject. På en ELO- eller League-kamp kan spillerne i kampen også godkende — det er nok, at modstanderen bekræfter resultatet, så en server behøver ingen validator-rolle for at holde kampene i gang. Den, der indberettede kampen, kan ikke godkende sin egen indberetning, og kun vedkommende kan afvise den.
  3. Bliver den afvist, får afsenderen en DM med begrundelsen.
  4. Bliver den godkendt, opdaterer leaderboardet sig med det samme.

Automatisk godkendelse

Hvert leaderboard kan sættes til at godkende indsendelser af sig selv efter et stykke tid: Off, Instant, 1 hour, 3 hours, 24 hours, 3 days eller 7 days. ELO-leaderboards står som standard til 24 timer.

Annullér en score

Admins og validatorer kan fortryde en allerede godkendt score: højreklik på beskeden med indsendelsen og vælg "Cancel Review". Så rulles scoren tilbage, og du skal angive en begrundelse.

Leaderboard-typen ELO - Ranked rangerer spillerne efter en ELO-rating — enten 1v1 eller på hold med op til otte på hver side.

Sådan virker det

  • Alle starter på den samme start-ELO, som du selv bestemmer (standard: 1200).
  • Et match kan ende med sejr, nederlag eller uafgjort.
  • Ratings beregnes med en K-faktor på 32.
  • Alle deltageres rating rykker sig samtidig, når matchet er godkendt.

Holdmatches (2v2 – 8v8)

ELO- og League-leaderboards kan låses til en fast holdstørrelse — vælg den, når du opretter leaderboardet, eller skift den senere under Match format i dashboardet. På et 3v3-leaderboard er der så tre spillere på hver side i hvert eneste match, og leaderboardet rangerer stadig spillerne enkeltvis.

På ELO regnes hvert holds forventede resultat ud fra holdets gennemsnitlige rating, og ændringen gives til alle på holdet — slår I et stærkere hold, får hver eneste spiller på vinderholdet den samme gevinst. På League får alle på vinderholdet sejrspointene, og hele taberholdet får nederlagspointene.

Matchmaking-queue (beta)

Er queue-knappen slået til på leaderboardet, kan spillerne klikke sig ind i køen. Systemet samler spillere med nogenlunde samme ELO ved at udvide søgevinduet lidt efter lidt. Når to bliver matchet, oprettes der en tråd til matchet med afstemningsknapper. Er der ikke fundet et match inden for 5 minutter, udløber pladsen i køen.

På et holdleaderboard venter køen, til der er spillere nok til begge sider — seks til et 3v3 — og deler dem så op i to hold med så tæt på samme gennemsnitsrating som muligt, så de stærkeste og de svageste ender på hver sin side. Alle skal klikke Ready; gør en det ikke, ryger vedkommende ud, og resten kommer tilbage i køen med deres plads i behold.

Hvert hold får sin egen talekanal, så I kan lægge taktik uden at modstanderne hører med — du kan kun se og gå ind i dit eget holds kanal. Begge kanaler forsvinder, når matchet er afgjort. Et resultat står først fast, når et flertal på begge hold har stemt på det (to ud af tre i et 3v3), så ét hold kan aldrig udråbe sig selv til vinder. Alt andet ender som en tvist, som en validator afgør.

Køen er ikke længere kun for ELO: et League-leaderboard kan også slå den til. Da League-point er en løbende total og ikke et estimat af niveau, matcher League-boards på point pr. kamp — så det at spille mere flytter dig ikke i sig selv i køen.

Faste hold

Et ELO- eller League-leaderboard med holdstørrelse kan også køre med fixed teams (slås til i dashboardet ved siden af Match format). Faste hold med navn melder sig til én gang via leaderboardets Team sign-up-knap — vælg et navn, og sæt truppen, som må have op til to reserver ud over holdstørrelsen. Derefter er det holdene selv, der rangeres: på et ELO-board har hvert hold sin egen rating, og det betaler sig at slå et stærkere hold; på et League-board rangeres holdene efter point, præcis som i en rigtig sportsliga. Faste hold i League registrerer deres matches med leaderboardets Submit result-knap.

Når bare ét medlem klikker Queue, ryger hele holdet i kø, og alle får en DM. Systemet matcher hold mod hold efter holdrating, og ready-checket fungerer samtidig som holdudtagelse: de første på hver trup, der klikker Ready, kommer på banen, indtil holdet er fuldt — resten sidder over den kamp. Resultatet stemmes igennem af dem, der spillede, efter samme regel om flertal på begge sider.

Leaderboard-typen League rangerer spillerne efter point samlet over en række matches. Det er formatet til fodbold, basket, futsal, hockey og enhver 1v1- eller holdturnering, hvor tabellen er sandheden.

Sådan virker det

  • Indsend et match med leaderboardets Submit result-knap — botten spørger efter begge sider og et cifferresultat til hver (fx 3 og 1).
  • Det højeste tal vinder; står det lige, er matchet uafgjort.
  • Vinderen får points_win, taberen points_loss, og ved uafgjort får begge points_draw. I en holdliga får hver spiller på en side sidens point.
  • Leaderboardet rangerer efter samlede point, mens sejre, uafgjorte og nederlag tælles ved siden af.

Standardpoint

Nye ligaer starter på 3 / 1 / 0 (FIFA-standarden siden 1994). Alle tre tal kan ændres per leaderboard i dashboardet. Brug 2 / 1 / 0 til hockey, 4 / 2 / 0 til rugby — eller find på jeres eget system, der passer til sporten.

Indsend et match

På hjemmesiden åbner du leaderboardet og klikker Submit — indtast begge sider og resultatet. I Discord åbner leaderboardets egen Submit result-knap nøjagtig det samme. Matches, hvor den samme spiller står på begge sider, og negative resultater bliver afvist med det samme.

Holdligaer

Et League-leaderboard kan låses til en fast holdstørrelse fra 2v2 op til 8v8 — enten når du opretter det, eller senere under Match format i dashboardet. Tabellen rangerer stadig spillerne enkeltvis: alle på vinderholdet får sejrspointene, hele taberholdet får nederlagspointene, og matchens cifre tæller som scorede og indkasserede mål for hver enkelt.

Vil du hellere have en klassisk ligatabel, hvor holdene er rækkerne? Slå Fixed teams til ved siden af Match format: faste hold med navn melder sig til via leaderboardets Team sign-up-knap (trupperne må have op til to reserver), matches indsendes hold mod hold med et resultat, og tabellen rangerer holdene efter point.

Godkendelse & annullering

League-matches går gennem den samme godkendelse som ELO-matches: en validator godkender eller afviser hver indsendelse, pointene tildeles ved godkendelse, og et godkendt match kan annulleres bagefter — så ryger præcis de point, der blev givet.

ELO- og League-leaderboards behøver ikke have to sider. I et alle mod alle spiller alle i matchet for sig selv — 3 til 8 spillere — og resultatet er, hvor hver enkelt endte. Slå det til med ffa_players, når du opretter leaderboardet, eller senere under Match format i dashboardet. Det træder i stedet for holdmatches: et alle mod alle-leaderboard kan ikke også have en holdstørrelse eller faste hold, og at slå det til gælder kun nye matches, så alt, der allerede står registreret, bliver præcis som det er.

Resultattyperne

ResultatELOLeague
Hele rækkefølgen — fra nr. 1 til sidst✓ Ja✓ Ja
Alle spiller uafgjort✓ Ja✓ Ja
Én vinder, alle andre uplaceret— Ikke muligt✓ Ja

Kun-vinder er en League-type. Der kræver den ikke mere, end den siger: vinderen får sejrspoint, resten tabspoint. Sådan afslappet kan en rating ikke være — hvis taberne står uden placering, er det eneste, den ærligt kan sige om dem, at de alle spillede uafgjort, og så vinder en lavt ratet spiller rating på et match, hans statistik tæller som et nederlag. Derfor beder et ELO-alle mod alle om hele rækkefølgen, eller om et uafgjort, der rent faktisk skete.

Sådan melder du et resultat ind

Alle mod alle-leaderboards har en Report result-knap i stedet for Submit result. Vælg først alle, der spillede med — præcis så mange, som leaderboardets lobbystørrelse siger, så et 6-spillers leaderboard tager 6, og formularen kan ikke sendes med 5. Den samme formular kan bære resultatet: udpeg vinderen, så er kampen indberettet med det samme, og på et leaderboard med en placeringstabel udvides feltet til hele rækkefølgen — 1. plads først, så 2. og så videre. Lader du det stå tomt, får du resultattrinnet i stedet. Sæt så resultatet: et League-leaderboard spørger, hvem der vandt, med Alle spiller uafgjort i den samme menu og Sæt hele rækkefølgen, hvis du hellere vil rangere hele feltet; et ELO-leaderboard spørger direkte om rækkefølgen, én plads ad gangen, med Fortryd sidste til fejlklik og en Alle spiller uafgjort-knap ved siden af. Indsend forbliver grå, indtil resultatet er et, leaderboardet kan score. Knappen er den eneste måde at indberette et alle mod alle-resultat på i Discord — viser dit leaderboard den ikke, kan du slå den til under Discord-visning → Submit-knap i dashboardet eller indberette kampen fra leaderboardets side på hjemmesiden.

Derefter er et alle mod alle en helt almindelig indsendelse. Den lander i godkendelseskøen, en validator godkender eller afviser den (eller auto-godkendelse gør det efter den valgte forsinkelse), rating og point flytter sig ved godkendelse, og annullerer man et godkendt match, får hver spiller præcis det tilbage, matchet gav.

Sådan regnes ratingen

Et ELO-alle mod alle bliver scoret som alle sine indbyrdes delkampe på én gang. Hvert par spillere sammenlignes — den bedste placering slår den dårligere, samme placering er uafgjort mellem dem — og hver af de mini-kampe rates med den samme forventede score-matematik som en 1v1. At slutte over spillere, der er ratet langt over dig, betaler derfor meget mere end at slutte over bunden af feltet. K-faktoren deles så med antallet af modstandere, og det er det, der holder ét alle mod alle på cirka én kamps rating-bevægelse i stedet for de syv dueller, du teknisk set spillede.

Det hele er præcis nulsum: hvad feltet taber, er det, resten vinder, ned til sidste point. Seks spillere med samme rating ved K=32 ender på +16, +10, +3, −3, −10, −16. Statistikken følger placeringen — førstepladsen, også en delt en, tæller som en sejr, alle nedenunder som et nederlag, og alle-uafgjort som uafgjort for hele feltet.

Placeringspoint på League-leaderboards

Et League-alle mod alle kan give point til hele feltet fra en tabel med placeringspoint, F1-stil: så mange point for førstepladsen, så mange for andenpladsen og så videre ned gennem feltet. Du redigerer den i dashboardet under sejrs-, uafgjort- og tabspointene på ethvert League-leaderboard, der spiller alle mod alle. Spillere på delt placering får hver især point for den plads, de deler, og alle, der slutter efter tabellens sidste linje, bliver ved med at få den.

Tabellen bruges kun, når hele feltet er placeret. Står bare én uplaceret — en kun-vinder-indberetning eller en rækkefølge, du stoppede halvvejs — gælder den slet ikke: førstepladsen får leaderboardets sejrspoint og alle andre tabspoint. Det er også det, du får helt uden tabel, så tabellen er valgfri. Alle-uafgjort giver uafgjort-point til alle, uanset hvad tabellen siger.

Alle mod alle i matchmaking-queuen

Med queue-knappen slået til stiller et alle mod alle-leaderboard enkeltspillere i kø og går i gang, så snart der er præcis lobbystørrelsen — seks spillere på et 6-spillers leaderboard, aldrig fem og aldrig syv. Der er ingen sider at balancere, så lobbyen er simpelthen den tættest ratede gruppe, queuen kan sætte sammen. Alle skal stadig trykke Ready, og matchet får ét fælles voice-rum: i et alle mod alle er der ingen holdkammerater at gemme sig for.

Resultatet bliver indberettet i stedet for stemt om — tre stemmeknapper kan ikke udtrykke en rækkefølge med otte spillere. Enhver spiller i lobbyen sætter resultatet på match-beskeden, og de andre trykker Bekræft; det låses, når et flertal af feltet er enige (to ud af tre, fem ud af otte), hvor den, der indberettede, tæller som den første af dem. Gør indsigelse giver matchet videre til en validator, som sætter det rigtige resultat og bekræfter det selv. Et queue-match afgøres i sin egen tråd, så det kommer ikke gennem godkendelseskøen.

Leaderboard-typen Rating lader medlemmerne indsende billeder og give hinandens bidrag stjerner.

Sådan virker det

  • Man indsender billeder med leaderboardets Submit image-knap — feltet tager et navn, en valgfri beskrivelse og selve billedet.
  • Indsendelserne lander i log-kanalen med en rating-dropdown.
  • Alle kan give fra 1 til 10 stjerner. Stemmerne bliver til et gennemsnit.
  • Man kan altid ændre sin stemme — men kun én stemme per person per indsendelse.
  • Leaderboardet rangerer indsendelserne efter gennemsnitlig rating.

Rating på hjemmesiden

På hjemmesiden ligger indsendelserne under fanen Entries. Klik på en af dem for at se billedet i fuld størrelse og give stjerner direkte. Dine stemmer bliver husket, også næste gang du kommer forbi.

Du bestemmer selv, hvem der kan se dine leaderboards på Scoreboards-hjemmesiden:

Public

Alle på hjemmesiden kan se det.

Hidden

Kun medlemmer af din Discord-server kan se det (kræver login).

Private

Kun medlemmer med en bestemt Discord-rolle kan se det.

Disabled

Vises slet ikke på hjemmesiden.

Giv automatisk Discord-roller efter placeringen på leaderboardet. Du kan for eksempel give top 3 rollen "Champion", plads 4–10 rollen "Veteran" og så videre.

  • Tiers sætter du op i web-dashboardet under det enkelte leaderboards indstillinger.
  • Vælg, hvordan en tier afgrænses: efter placering (plads 1–3), efter percentil (de øverste 10 % af spillerne) eller efter score (alle med 2000+ point). Alle tiers på et leaderboard bruger den samme metode.
  • Knyt en hvilken som helst eksisterende Discord-rolle til hver tier.
  • Rollerne bliver givet og fjernet automatisk, efterhånden som placeringerne ændrer sig.
  • Scoreboards-rollen skal ligge over alle de roller, den skal uddele, i Server Settings → Roles. Discord lader ikke bots røre roller på eller over deres eget niveau, og støder botten på det, skriver den en advarsel i leaderboardets kanal.

Kører I allerede en konkurrence et andet sted? En CSV-fil kan fylde et helt leaderboard ud på én gang, så du slipper for at taste det hele forfra.

Åbn dashboardet, vælg et leaderboard og brug Import from CSV. Det er den samme vej for et server-leaderboard og for et personligt, som ikke hører til nogen Discord-server. Filen er den samme uanset hvad — én <arg>name,score</arg> per linje:

name,score
Alex,120
"Cooney, EM",95
Sam,88
  • En overskriftsrække bliver genkendt og sprunget over.
  • Komma, semikolon og tabulator virker alle som skilletegn — brug det, dit regneark nu engang spytter ud.
  • Navne med komma i virker, hvis de står i anførselstegn, fx <arg>"Cooney, EM"</arg>.
  • Er navnet et Discord-bruger-id, bliver linjen koblet til medlemmet og viser vedkommendes viste navn. Alt andet bliver til en almindelig tekstpost.
  • Står det samme navn to gange, gælder den sidste værdi — så du kan lægge en rettet fil ind ovenpå.
  • Linjer, der ikke kan læses, springes over og listes med linjenummer — resten kommer ind, så du kan rette et par linjer og køre filen igen.

Tider forstås som <arg>mm:ss</arg>, <arg>hh:mm:ss</arg> og eventuelt en brøkdel: <arg>1:30</arg>, <arg>1:12:44.081</arg>. Et rent tal læses som millisekunder. Bemærk, at tre tal adskilt af kolon betyder <arg>timer:minutter:sekunder</arg> — skal du under sekundet, skriver du det efter et punktum.

Grænser: 500 linjer og 100 KB per fil — del større eksporter op, og tag dem i bidder. Image Rating-leaderboards kan ikke importeres, fordi deres bidrag er uploadede billeder og ikke scores.

Sæsoner lader dig sætte punktum for en konkurrence uden at miste noget. Sæt en sluttid (eller afslut fra dashboardet), og boardet fryses: der postes et podie, og stillingen står præcis som den endte.

  • Intet nulstilles eller slettes — det frosne board er sæsonens blivende resultat, synligt for alle.
  • Et frosset board tager ikke imod nye indsendelser, kampe eller stemmer; en admin kan låse op når som helst.
  • Alle board-typer kan have sæsoner — også Image Rating, hvor frysning af et board med blind afstemning samtidig afslører resultatet.
  • Vil du i gang med en ny sæson? Opret et nyt board og lad det frosne stå som arkivet.

Ugentlige recaps lægger hver mandag et kort overblik i leaderboardets kanal: top tre, ugens største klatrer, og hvor meget der er blevet spillet. Kun boards med mindst tre scores i den forgangne uge får et, så et stille leaderboard får lov at være stille. Du kan slå recaps fra per leaderboard i dashboardet på hjemmesiden.

En økonomi laver resultater om til valuta. Slå den til i dashboardet under Økonomi, giv valutaen et navn og vælg en preset for udbetalinger — derefter udbetaler hvert godkendt resultat til spillerne. En udbetaling er et fast grundbeløb plus en andel af en variabel pulje: halvdelen af puljen følger resultatet, halvdelen følger overraskelsen, så det er mere værd at slå en, der er rated et godt stykke over dig, end en, der ligger under. På et Classic-, Highscore- eller Time-board er der ingen modstander, så din placering på boardet spiller den rolle i stedet. Det er én beholdning per medlem for hele serveren, delt af alle leaderboards på den.

  • En sejrsstime lægger 2 % oveni per sejr, op til den grænse du sætter.
  • At møde den samme modstander igen og igen giver mindre hver gang inden for en uge — to kampe om dagen giver stadig fuld pris.
  • En daglig grænse bestemmer, hvad ét medlem kan tage med hjem på en dag, og nye konti kan sættes til at vente, før de tjener noget.
  • Bliver et resultat annulleret, rettet eller slettet, tages udbetalingen tilbage præcis som den blev givet — er pengene allerede brugt, kan beholdningen gå i minus. Hver eneste linje kan ses på serverens shopside.
  • Image Rating-boards udbetaler ikke noget — der er ikke noget resultat at sætte pris på.

Medlemmerne tjekker deres egen på serverens shopside, hvor enhver udbetaling kan foldes ud, så man ser præcis hvordan den er regnet ud. Shoppen sælger Discord-roller: tilføj dem i dashboardet, og medlemmerne kigger og køber på siden selv. Scoreboards skal ligge over alle de roller, den sælger, i Serverindstillinger → Roller.

Den side ligger på scoreboards.dev/shop/din-server, én per server, som der linkes til fra serverens leaderboard-sider. Ud over roller sælger den leaderboard-emojis: én enkelt emoji, der står ved siden af køberens navn på serverens leaderboards. Selve navnene er renset for emoji på boardene, så en købt emoji er den eneste, et navn kan bære — den kan ikke efterlignes ved at omdøbe sig, og det er præcis det, der gør den værd at købe. Medlemmerne køber og vælger, hvilken af deres emojis de bærer, direkte på siden, logget ind med Discord; selve emoji-varerne tilføjes fra dashboardet.

Admins giver valuta og tager den tilbage på hjemmesiden — fra spillerens kontekstmenu på et leaderboard, eller fra Økonomi-panelet i dashboardet, hvis medlemmet ikke står på noget board; begge dele bliver skrevet i den log-kanal, du vælger, så ingen behøver at tage en moderators ord for det. Udbetalinger, grænser, hvem der kan tjene, og selve shoppen ligger i dashboardet. Valutaen er ikke penge: den har ingen kontantværdi, den forlader ikke den server, den er tjent på, og den kan nulstilles når som helst.