Tournaments
Introduction
All these Minecraft tournaments are Speedrunning tournaments - we call it MCSR (Minecraft Speedrunning) for short.
I have always been a Minecraft fan, and around the end of 2019, I started speedrunning. Not long after the COVID-19 lockdown started, I began talking more to the community, learned how to speak English better, and got to know a lot of people that I still talk to this day.
Around September 2020, an opportunity came up to help a tournament that was being organized. Because Marco, one of the only Brazilian players that knew me, was one of the people organizing it, I got a chance to help make something really cool and I took it.*
It’s been 5 years, and I am still here. I didn’t expect to be here for so long, I didn’t expect half the things I did. But even it being a small community in a children’s game, the fact that I helped and will continue to help give out more than R$9,000 to players without ever getting a sponsor, only the love and donations from the community that plays this game, is something that I am proud of.
This will be a little summary about most tournaments I helped create, I could write all the experiences, all the arguments, the fights, the small minigame events, showcases, but that’s for another time.
It’s weird having something you started doing as a 15 year old have such a lasting impact on your life, but I will never complain about that.
MCSR 1.7 Tournament
I’m not going to explain how the speedrun works.
The tournament is very simple: it is in Minecraft version 1.7, 2 players create worlds using the same world seed, the first one to beat the Ender Dragon wins that round, first to win 2 rounds wins the match and moves on in the bracket.
This format is the default, it’s used in almost all tournaments, but with some tweaks, best of 3, best of 5, with loser bracket etc.
The part where I asked to help with is finding and filtering seeds. Me and the 3 other people that were doing this had a list of around 10,000 seeds that could be good. We got them using a program that reverse engineered the world creation process, but after that we had to check manually if the seed was actually good or not.

It was a boring process. We checked the quality of each seed based on whether it had the necessary items, food, terrain generation, structure generation, and more. In the end we manually checked around 2,000 seeds, with around 90 of them being actually good.
In this tournament I also had the chance to be a commentator of a match, which I was very nervous about since it was in English and I was 15 years old. But it was a lot of fun, and there is this funny clip of my dog barking in the livestream with 100+ people:

It was a fun experience, i didnt do much other than the QA of the seeds, but it was good experience to make other tournaments.
Copa Brasileira 1.16
Months later After a Brazilian community Discord was created, we wanted to make a tournament, everyone was pretty new to this, but there was a lot of players that wanted to play and watch, so we began working.
This tournament was bound to have issues. We had a small staff since the Brazilian community is smaller, everyone was doing a little bit of everything, but no one knew how to do anything. The staff was made up of people aged 12 to 21 years old, so you can guess how that went.
This time I had more things to do: check the seeds, make the overlays for the Twitch livestream, be the stream tech, organize with the players to know when they can play, make the bracket, commentate matches, and more. Everyone was doing a little bit of everything, which means no one was doing things right.
This was the first tournament of our community, we had a lot of problems to fix.
Some examples:
- Sub-par seeds - we didn’t have a proper standard between the staff on what is a good seed
- Bad stream overlay - we made it in 15 minutes, it didn’t have the chat on screen and other useful info
- Bad communication with players - about match times, rules, format, etc.
- Technical problems - maps and other resources we made to improve matches weren’t working
A problem that people still remember is when SpectroPlayer, a popular YouTuber, lost a match, didn’t understand the format of the tournament, then didn’t respond to any of our messages asking him to schedule his next match. This led to the whole tournament stalling for a while, and a lot of people having resentments towards him, something that eventually made him and another YouTuber leave the community.
We didn’t handle it well, we made a small witch hunt instead of just making a time limit and disqualifying him, no fight should have happened, no angry comments, its just minecraft, people have other things to do.
This tournament had no prizepool. We didn’t even consider giving money away at that time - it was more for the fun of it, and it well.
1.16 Duos Tournament
This tournament was cancelled, but I think it’s worth a mention.
In my opinion the key issues were:
- Low interest - Coop speedrunning is a fun gimmick, but not a lot of people want to actually do it
- Scheduling problems - instead of 2 players + staff per match, it’s 4 players + staff, and a lot of the staff was going to play too, so it was a scheduling nightmare
- Technical problems - sometimes you can’t connect to your friend’s world, and no one can pinpoint the issue because it’s usually not the player’s fault (sometimes it’s the firewall, sometimes it’s your ISP)
- Lag - a lot of players didn’t play or host coop runs up until that point, and the lag some people had could make it frustrating to play

This tournament was a request from the community, but the community voted without really thinking on the viability of it, we just took the community opinion without really questioning it, we didnt think if it was viable or not. Nowadays we ask for feedback, but we don’t follow it blindly.
Other Tournaments
There were some tournaments and events where I didn’t do a lot. Some of them I will write more about in the Tools section, but others I just didn’t have much to do with.
BTRL 1 & 2
BTRL (Break The Record Live) is a marathon event where players have X amount of time to get the best time possible in a specific category, with the main objective being to break the record. These 2 events didn’t need a lot of preparation or setup since it’s just the players playing solo while streaming to Twitch, where we then use those streams to feed into our main stream.
BTRL 2 had a prizepool of R$165, donated by a member from the community.
XandeHR 1 & 2
XandeHR was also a marathon event where players had a limited amount of hours to get the biggest amount of runs below a certain time.
The differential of this event was that the seeds players were getting weren’t random, they were filtered seeds that had better structures for speedrunning, making it more fun to play. The name is a play on the name of the organizer, Alexandre.
My contribution to this event was in XandeHR 2, where the system to get the filtered seeds in the game stopped working at the dawn of the event. So at 3 AM I was making a new simpler solution so they didn’t need to cancel the event.
The event was a success, so it was worth it.
Copa Brasileira 1.16 2
This was the second edition of the tournament that first took place in 2021. This time we wanted to do something bigger: a prizepool, more viewers, and just a better looking tournament.
We had:
- Matches streamed on a bigger channel, SpeedrunsBrasil, with 50k followers
- Good looking stream overlay
- R$750 prizepool, donated by various community members
- Better game tools
- More experienced players
But we also had problems.
- Not having control over our “output” - We relied a lot on this other channel and their admins, sometimes there was no one avaiable to stream, to make an announcement, while our staff and players were ready.
- Due to the matches not being on our channel, we only have 1 of all the matches that were streamed, all the others are lost.
- Different Communities - Just because both communities were centered around speedrunning didn’t mean that we would get along. We were 2 completely different communities that wanted to do things in different ways. They were a old community, they have been around for longer and have different opinions, 2 different generations.
One funny issue that happened, a Staff member wanted to have known members of the community to be comentators of the last matches, but without talking to any of the other admins first, and one of the people he invited was someone that everyone hated and made fun of, he didnt even play the game, but the admin didnt know this, he just thought it was someone that everyone liked since everyone talked about him. We removed him last second.

Other than the host problems and the minor staff fighting, the tournament was a success. But everything that we made from this point onward, we needed to have 100% control over what was ours.
Copa Brasileira 1.14
This was a bad one.
It’s hard to explain this one. The version 1.14 isn’t that fun to play for the average player, few people play it in the world, and it’s boring to watch. But 2 admins really liked this version, so this tournament was made with a R$425 prizepool.
Some of the problems:
- Low participation - organizers had to beg and guilt trip players to participate
- Lack of motivation - some were happy that they were eliminated, not really good for a competitive tournament
- Staff disinterest - staff didn’t want to host or commentate the tournament
- Low viewership - the community didn’t want to watch it, it was boring
- Dropouts - people signed up but changed their minds last second
A lot of matches were played, but players didnt want to practice or learn the strats, some players were there just to fill in the spots, they didnt want to play at all, but the 4 people that really liked the version were super competitive.
Some matches had no commentator, no one cared, no one was watching. It got to the point where no one wanted to host, play, or do anything, and the community didn’t want to watch it. I contacted everyone who donated to the prizepool, explained the situation, they agreed to use the money for other tournaments, and it was cancelled.
This made some players sad, since they saw the tournament as a easy way to get money, this tournament left some scars on some people, but it was better for the community.

The tournament was a failure, but it was a learning experience, only do things that the broader community thinks is cool, otherwise we get no support.
BTRL 3
This was in December of 2023, a Break The Record Live event. At first with only R$123 in prizepool, but then we got a donation for R$1,000 for the person who beats the Brazilian record, valid until the end of 2023, the biggest prizepool up to that point.
This was a funny event, it was supposed to be something small, but that donation changed everything since there was a lot of people that had the skill to get R$1,000, but it didn’t last long before someone got the brazilian record.
Boosterruns was the one to claim the prize on the second day of the event. No one else came close, so he “went home” with an extra 1k in his pocket.
The biggest challenge of this one was the not crashing the livestream. I coded something to make changing who was the main player on the livestream easier, but we still had the problem of rendering 5 720p 30fps streams at the same time on our computer, that just didn’t work that well since no one had a good enough PC for that.
This left the desire for more events like this, that last a long time, not just a few days, so people can properly grind for a record, which we delivered in the next years.

Overall a success. a event that will be remembered for a long time, this was one of the best times on the community.
CABRA
This tournament was cancelled, but I think it’s worth a mention.
CABRA (CAmpeonato BRAsileiro) was an idea I had to make a monthly small tournament where you won points, and with the points you got rewards, like a level system, where the points make you level up. The amount of points you get was related to how well you did in the tournament:
- Win 3 months → 30 points → gift card or something similar
- Get 100 points → win a t-shirt
- Eventually the points reset and you start winning the first rewards again
- Second place got 4 Points
- Everyone that participated got 1, to make people that arent that good yet want to play
It was a good idea in concept, but it didn’t work that well in practice.
The things that made it not work:
- Player requirement - required 6+ players online at the same time to play
- Staff requirement - required 2 staff members online, and they could not be players too
- Complex format - a format that wasn’t that easy to understand
- Money - sustainability issues
To do something monthly you need staff available, and when your staff is also your players, it gets complicated.
There was a Discord bot too to show the ranking and individual profiles, to see who is winning in points, who participated the most, and more.

This is an idea that might work in the future again, but there a lot of issues that need to be solved before that.
It’s sad that this didn’t work out. It was a big idea that everybody could play, we had Discord bots for the leaderboards and profiles, but sometimes big ideas can’t be done.
Copa Brasileira 1.16 3
Third edition of the tournament. This one I was tackling alone since most of the staff had other commitments, but I wanted to make sure it would be a great tournament. So first of all, I made a group chat with everyone I thought would sign up, asked everything from format, design, dates, seeds, and other things, I wanted to make sure I wasn’t making a tournament for me, but for the players.
The community wasn’t that active at that time, and I needed 16 players to make the tournament happen. It was hard, but in the end I got 14 Brazilians and 2 from Portugal, and only 1 player forfeited. Good start.
I also wanted to make sure that the tournament revived the community a bit. I wanted to make everyone, even the viewers, be able to participate in some way, and I would say I was successful at that.

The biggest things I did were:
- Minecraft lobby server - a server for the “starting soon” screen where everyone could play around and appear in the Twitch livestream, something that made a lot of people join before the game started just to fish and talk
- Bracket prediction prize - we used the website Challonge, which has a feature where anyone can make a prediction on the results of every match. The one who got the closest got a month of Discord Nitro. Bigger stakes for every match, even the ones that people didn’t care a lot about
- Losers bracket - everyone got at least 2 matches, making it a little bit more fun for the people that didn’t have a chance to win
People really liked this tournament. It had a prizepool of R$800 and was a success. The only problem was scheduling issues, there were only 2 staff members, and I got extremely sick for a week. We couldn’t change things in the middle of the tournament, but we made a better system to schedule matches in the next one.
I was too forgiving with the players, I let them schedule when they wanted, instead of putting them in time slots first, and talk to them later, this lead to some players not playing for 2 weeks, because everytime they had some minor issue, they would just say “I can’t play”, while others got out of their 9-5 and started playing.
One player in particular always had something to do every day, it got to the point where we just asked him to forfeit.

After this tournament the community started to revive a bit, with some old players coming back and new ones appearing.
BTRL COOP
Same idea as the other BTRLs but with coop runs.
It went well, no issues on the hosting or with the players. This tournament was mainly organized by another admin, and he made the prizepool be R$500 without talking with the other admins, so when the announcement was made, it couldn’t be changed. It isn’t a lot of money if you think about the other events, but this event would only last a weekend for a speedrun category that very few people care about in the world.
On the player side, there were some of the issues mentioned in the coop tournament from the beginning: lag and other connection issues, firewall blocking, problems with the ISP, but nothing that was our fault.

Overall The quality of the event wasn’t as good as I wanted, but no one complained, the stream had nothing on it half the time, since everyone sleeps, and there was no good system to change streams.
BTRL 4
The biggest one yet, spanning the entire month of July 2025, with a prizepool of R$1,960 split between 1st and 7th place, and a bonus of R$500 if someone breaks the Brazilian record.
This one had actually no issues, honestly a miracle.
Some highlights on the staff side:
- 24/7 stream - we had a computer that a member lent us, and we streamed 24/7
- Automatic overlay - I made a tool to automatically change who our stream was showing based on where each player was in their worlds (more info in the Tools section)
- Community donations - an extra R$675 to the prizepool
- Paceman.gg integration - our tournament was displayed on paceman.gg, a website that shows stats about Minecraft speedrunners, giving it a more official look and more visibility
- Data analysis - 6M worlds, 6.6k Nether entries, and only 70 finished runs, just to visualize how hard it was to get the record
- Category revival - revived the category that wasn’t really played anymore due to MCSR Ranked

The biggest issue is that sometimes the connection to twitch timed out, everytime this happened we “lost frames” and the delay increases, if we lost too many frames, the stream became unwatchable, because it would start lagging so much the stream would freeze.
I wish there was more to talk about this one, but it went well, the livestream ran 24/7, I had to make some ajustments along the way, but other than that I just watched people play and comentate some runs that were on good pace.
In the end no one beat the brazilian record, which is a shame, no one got the R$500 bonus.
At the end everybody was exhausted, some were happy that they won money, some were sad that they missed out on somethin big, but it was an amazing event.
Copa Brasileira 1.16 | Serie B
There was a big wave of new players, and I wanted to make something just for them, to show them what tournaments are, and maybe ignite a flame inside them to become very competitive players. With a small prizepool of R$200, just so they get a taste.
The Serie B was a single elimination tournament with a group stage of 16 players, then a bracket with 12. Everyone in this tournament was pretty new to the game, but there was a big skill gap between some.
One of the biggest challenges was making sure that the tournament was fair and that the bracket was fair, that it could be fun for all players. This meant that a lot of the bracket didn’t follow a system and was instead hand-picked. Not the most normal thing to do, but this tournament was more about being fun and fair for everyone.
We had some problems because the best player in the tournament had to forfeit because his computer broke right as the group stage finished, this meant that someone that should have been eliminated was qualified, and someone that should have been the top 1 for his group is now eliminated, so there is 1 group where there are 2 beginners and 1 average player for this tournament, making them really weak. This caused some issues because there was no way a bracket could be fair for everyone, but I tried fixing it the best I could.
On the technical side
We improved a lot of things from the last tournament: better stream setup, better design.
But the biggest thing was a program I made called ROBS
- It Remotely controls an OBS instance.
- Since our staff team is small, we do a lot of things at once, the person who is hosting is also commentating, or making the match for the players, or anything else. Me being able to completely control the stream that is being hosted at another staff’s setup helps a lot.
- I made a new Lobby server to be the “Starting soon…” - it now has some minigames to make people play there and appear on stream, which was a success and we will be using it in all future tournaments or live events, it was a good way to make people not open the stream and immediately leave because the tournament didnt start yet.
- Discord bot for fake Bets - People on the Discord server could bet a fake currency on things that could happen in the tournament, making it more interesting for the people that aren’t playing.

All the issues that happened in this one were quickly fixed, and it was overall an awesome tournament to play, watch and organize.
We have some events and tournaments in the making: the next iteration of the Copa Brasileira 1.16, and a tournament with several famous YouTubers where we pair them up with good speedrunners as coaches. But that’s for the future.
Tools and Programs
I made several tools to help us with the tournaments and the community in general. Here are some of them:
Datapacks
Datapacks are the official way to make custom things in Minecraft. They use their own language, MCfunction, and we used them in the past to make some parts of the tournaments better, such as increasing the luck, making the luck standard, spawning mobs, or changing some vanilla settings. As the years went by, this was replaced with more official ways to host matches via mods such as MCSR Ranked.
These are still used for some events that aren’t in the usual formats, such as minigame events like “TNT spawns every 15 seconds” or other types of fun little showmatches.
XandeHR 2 Backend
Weeks before the XandeHR event, Alexandre contacted me to know about how his tournament could work. He had around 500k seeds he needed to put on some database, where then the players would open a link and get a random seed from that database, this would be his way to filter seeds.
I made a very simple version to show how it could be done, but a mutual friend said he had it covered using a fancier stack. He ended up doing it, and it didn’t work.
The stack he had was a simple Node front-end and a Firebase DB.
Firebase is good for some situations, but not in the situation where you need to INSERT 500k rows, then have 12 people fetching them over the course of 24 hours. The free version of Firebase has very strict limits, and when they tried testing it, it just didn’t work, 500k rows on 1 table was too much for the Firebase free plan.
Alexandre sent me a message around 1 AM, asking if I still had that simple example I made a while ago, and I helped him make a version that actually worked.
My version was really simple:
- A Node backend, nothing fancy, no database at all
- The 500k line
.txtfile just stayed there on the server - The moment the server started, it read the seeds file and put all the seeds in memory in an array
- The
/seedendpoint would return a random seed from the array and remove it so it wouldn’t be repeated
The biggest problem with this was that it didn’t remove the seed from the actual file, so if the server crashed or needed to be restarted, it would repeat seeds, but it was only 24 hours so we took the risk.
To get the seeds in the game we used AutoHotKey, it fetches the API, formats the JSON to get the seed, and copies and pastes it in the world creation input.
No database was used and no money was spent
BTRL 4 Tools
I wanted to make the BTRL 24/7, and there was a simple path to do that.
Paceman.gg is a website that displays where each Minecraft speedrunner is in the world and at what time. They can do that because speedrunners use a mod that allows for that. The Paceman API has a lot of info, but the one that matters is their Twitch, users they can link their Twitch, and if they are live, it shows in the API.
The idea was simple:
- Whitelist all the players that will be playing in the BTRL in the JS of a HTML page
- The website is just the Twitch embed player, a good looking overlay, and a leaderboard
- If a player is in a good pace, we replace whoever is on the twitch embed with them
- Add some timeouts for this pace, some safeguards, and we have a 24/7 stream that always shows who has the best pace
There were 2 leaderboards:
- Automatic - uses the paceman.gg API
- Manual - since sometimes Paceman missed runs because of the internet connection of a player, we put this in a Google Spreadsheet, I then made a Google Apps Script that just serves the data from the Google Sheet, and the website for the overlay fetches it every 10 seconds. A simple API with a spreadsheet as a DB.
The decision of what is a “good pace” was a bit hard. We have events like: Enter Nether, Enter Bastion, Enter Fortress, Finding Stronghold, Found Stronghold, and Entered End. Each one of these events has a weight, and we calculate the pace based on the time it took to reach these events and the weight of each event. Someone entering the Fortress at 4 minutes is way cooler than someone entering the End at 12 minutes.

ROBS
OBS is the program that almost everyone uses to livestream and record. It has so many features, tools, plugins, scripts, and more. But it didn’t have one thing that I wanted: a way to control it from another computer with custom buttons and inputs. I knew that OBS had a websocket that allowed for that, so I made a tool to control it from another computer, and I kept adding things to it.
It was made for the Copa BR Serie B tournament because of one issue we always had in past tournaments: every time we want to change who is streaming the tournament, they need to download a font, a lot of images, fix resolution issues, fix the transitions, it was overall hard to have the same exact overlay over a lot of computers because something always changed in this process.
To fix this issue, I wanted to make an overlay “Plug & Play” where you don’t need to download anything. To achieve this I took advantage of the Browser Source, I could just make each piece of the overlay an HTML file, host them on GitHub, and the text and state of each one be a parameter in the URL, like ?player1="NameHere". This method worked. I didn’t need to download anything, I can just copy the browser sources that are going to be the same always since they don’t use anything related to your computer. But then I had the problem of actually editing the URL parameters, because OBS doesn’t have a good input to change that, so that’s what the initial version of ROBS did: better inputs to change the URL parameters.
After that I began adding support to more sources, more than just the URL parameters: volume, media players, normal text, start/stop stream, and eventually the remote support, which proved to be really useful.
This program also allows me to only show some sources (only the ones that start with a _). This isn’t a privacy or security change, with the websocket the user still has access to everything, it’s just a way to organize the “front-end” of your overlay in a better way. Things that don’t change don’t need to be in the controls.
This program is one of the most useful things we have. It allows for so much control and better coordination between the staff, for example:
- Someone can control the audio and points
- Someone can control the scenes
- Someone can control the position of sources
- Everything from the same OBS instance
- No need to pay for a service, host a server, or anything, just a small program you install and a connection with the host via ngrok, Radmin, or an open port
In the future I want to add tools for more serious use cases, such as logging every change to allow for reversal, a plugin system to add controls to any source you want, more editing modes, and more.

GitHub: MCSRobsremote
Hope in the future I can keep making a difference in the hobbies I love, it was an awesome 5 years.
