Geysers
But my sorrows, they learned to swim
This tool has been updated for Galar dex AG.
IMPORTANT:
This is now available as a replit thingy! In order to use it on repl, simply click the link below, and type "npm install" in the console on the right to set it up, followed by "node builder" to build a team! No downloads are required to use this!
https://repl.it/@Geysers/BuilderBot
The other day, I was thinking about AG teambuilding. Building for AG is quite limited thanks to the presence of restrictive offensive threats such as Zacian-C and Yveltal. I decided that, thanks to this extremely linear nature, it wouldn't be too hard to create a script to automatically build AG teams. I set to work earlier today, and was able to create an early version of a teambuilding script, along with an accompanying (rather large) JSON file containing a number of viable sets. To my pleasant surprise, the script produces reasonably usable teams about 25% of the time, which is far better than I had expected going into the project. I've still got a reasonable amount of work to do on it, but I figured I'd share this early version. It can be found on github here: https://github.com/Geyserexe/BuilderBot
If you're interested in helping me out with this, please drop me a dm so I can let you contribute / fork it, assuming that's how it works (this is my first time running a repo lol). I'm open to criticism, so fire away! Thanks!
A brief explanation of how the program builds balance:
So every team starts with a randomly chosen set. Each set has a set of values indicating how well it performs certain roles within a team, from 0 to 10. It checks which role that set is weakest in, and then selects a random Pokemon that has that role value above the cutoff value and adds it to the team. It then adds the role values for each of the Pokemon together, and checks which is now the weakest, then repeats until it has a full team. Once it has a full team, it iterates over each of the role totals and checks if it's above a certain threshold, which is specified by the number after "--r". If any one of the role values is below that number, it rebuilds the team and tries again. There's also a "breaker" role value determining the offensive presence of a set. That operates on a slightly different scale, so its threshold is different. The minimum breaker value for the team is determined by the number after "--b". If the total offensive presence as quantified by summing the breaker role value of each set is less than that number, it rerolls and builds the team again. Once every single role value is above the --r number and the breaker value is above the --b number, it outputs the team. There's a bunch more logic that goes on to ensure that teams have defoggers and stealth rockers, and avoid set duplication or mega duplication, etc, etc, but that would take too long to explain here.
Edit: I've been getting a lot of people asking me how to run it, so here's a quick couple of steps:
To setup in a way that allows updates:
If you did this, you can install updates by repeating steps 3 and 4, then running "git reset --hard" then "git pull".
To setup the latest version but without updatability:
UPDATE: This is now available as a node.js package! To add it to your project, simply run "npm install teambuilder"! (This package is a tad outdated)
E: better instructions
IMPORTANT:
This is now available as a replit thingy! In order to use it on repl, simply click the link below, and type "npm install" in the console on the right to set it up, followed by "node builder" to build a team! No downloads are required to use this!
https://repl.it/@Geysers/BuilderBot
The other day, I was thinking about AG teambuilding. Building for AG is quite limited thanks to the presence of restrictive offensive threats such as Zacian-C and Yveltal. I decided that, thanks to this extremely linear nature, it wouldn't be too hard to create a script to automatically build AG teams. I set to work earlier today, and was able to create an early version of a teambuilding script, along with an accompanying (rather large) JSON file containing a number of viable sets. To my pleasant surprise, the script produces reasonably usable teams about 25% of the time, which is far better than I had expected going into the project. I've still got a reasonable amount of work to do on it, but I figured I'd share this early version. It can be found on github here: https://github.com/Geyserexe/BuilderBot
If you're interested in helping me out with this, please drop me a dm so I can let you contribute / fork it, assuming that's how it works (this is my first time running a repo lol). I'm open to criticism, so fire away! Thanks!
A brief explanation of how the program builds balance:
So every team starts with a randomly chosen set. Each set has a set of values indicating how well it performs certain roles within a team, from 0 to 10. It checks which role that set is weakest in, and then selects a random Pokemon that has that role value above the cutoff value and adds it to the team. It then adds the role values for each of the Pokemon together, and checks which is now the weakest, then repeats until it has a full team. Once it has a full team, it iterates over each of the role totals and checks if it's above a certain threshold, which is specified by the number after "--r". If any one of the role values is below that number, it rebuilds the team and tries again. There's also a "breaker" role value determining the offensive presence of a set. That operates on a slightly different scale, so its threshold is different. The minimum breaker value for the team is determined by the number after "--b". If the total offensive presence as quantified by summing the breaker role value of each set is less than that number, it rerolls and builds the team again. Once every single role value is above the --r number and the breaker value is above the --b number, it outputs the team. There's a bunch more logic that goes on to ensure that teams have defoggers and stealth rockers, and avoid set duplication or mega duplication, etc, etc, but that would take too long to explain here.
Edit: I've been getting a lot of people asking me how to run it, so here's a quick couple of steps:
To setup in a way that allows updates:
- download VSCode, Git and NodeJS
- make a folder named "vscode" on your desktop
- open the installed git file - it should look like cmd
- run "cd desktop/vscode"
- run "git clone https://github.com/Geyserexe/BuilderBot.git"
- run "cd builderbot"
- run "npm install"
- open the newly created folder in vscode
- read the README and have fun
If you did this, you can install updates by repeating steps 3 and 4, then running "git reset --hard" then "git pull".
To setup the latest version but without updatability:
- download VSCode, and NodeJs, which are linked above
- make a folder named "vscode" on your dekstop
- download the latest release as a .zip file from https://github.com/Geyserexe/BuilderBot/releases
- extract that zip into your vscode folder
- open cmd / terminal
- run "cd desktop/vscode"
- run "cd builderbot"
- run "npm install"
- open the builderbot folder in vscode
- read the README and have fun
UPDATE: This is now available as a node.js package! To add it to your project, simply run "npm install teambuilder"! (This package is a tad outdated)
E: better instructions
Last edited: