WindBot is a C# duel bot for YGOPro. It is compatible with YGOSharp and SRVPro servers.
- Build
WindBot.slnwith Visual Studio/MSBuild or Mono. - Place
cards.cdbnext to the compiledWindBot.exe. - Start a YGOPro host.
- Run WindBot with options in
Key=Valueformat, for example:WindBot.exe Name=WindBot Deck=Blue-Eyes Host=127.0.0.1 Port=7911 - The bot will connect to the host and start dueling.
- Refer to
BotWrapper/bot.confor the[Deck]declarations of each file inGame/AI/Decksfor available decks.
Contributor guidance for creating and modifying deck AIs is available in AGENTS.md.
Name: The bot's nickname.Deck: The built-in deck AI to use. Leave this empty to select a random deck with theNormallevel. Deck names are defined by the executors inGame/AI/Decks.DeckFile: The.ydkdeck file to use. It is selected automatically byDeck, but can be overridden. Cards not supported by the selected deck AI may not be used correctly.Dialog: The dialog set to use. Available dialog files are inDialogs.Host: The host name or IP address of the YGOPro server.Port: The server port.HostInfo: The room password.Version: The YGOPro protocol version.Hand: For testing your deck, forces the bot's rock-paper-scissors choice:1for Scissors,2for Rock, or3for Paper. The default behavior is random for most deck AIs.Chat: Set toFalseto disable bot chat. The default isTrue.Debug: Set toTrueto print detailed card-movement logs. The default isFalse.Config: Loads additional options from a configuration file. Command-line options take precedence.DbPath: Specifies the path tocards.cdb. The default iscards.cdb. The program also looks forcards.cdbin the parent directory of the working directory, which is the typical location for YGOPro.ServerModeandServerPort: Enable the HTTP server mode and set its port. The default port is2399.
Server mode exposes an HTTP endpoint that starts a bot for each valid request. Example:
http://127.0.0.1:2399/?name=%E2%91%A8&deck=Blue-Eyes&host=127.0.0.1&port=7911&dialog=cirno.zh-CN
Query parameter names are lowercase. Supported parameters are name, deck, host, port, dialog, version, password, hand, debug, and chat. The name, host, and port parameters are required. deckfile is not supported.
The HTTP listener binds to all interfaces. On Windows, run with sufficient privileges or reserve the URL for the selected port (using 2399 here):
netsh http add urlacl url=http://+:2399/ user=Everyone
- When a chain contains multiple activations that rely on preselected
AI.SelectCardchoices, a later activation may consume the wrong selection.
- Add and update deck AIs.
- Add linked-zone and non-linked-zone preferences to
AI.SelectPlace. - Add an
AI.SelectTributepreselection interface. - Keep the known-card enums up to date.
- Add more executors for commonly used cards.
BotWrapper is a lightweight launcher for YGOPro's built-in bot mode. It converts the arguments supplied by YGOPro into WindBot options, supports random bot selection, and starts WindBot.exe.
BotWrapper/bot.conf is in the format that YGOPro expects for its bot mode.
The WindBot template generator creates a deck AI template from a YGOPro .ydk file.
WindBot Arena is a self-hosted automated duel experimentation console for running regression tests, deck challenges, smoke tests, and win-rate rankings with WindBot.