I have the Corsair K70 RGB MK.2 keyboard and Logitech G502 mouse. Both can do macros. Are macros allowed?
The official rule is one button press equals one button press. If you rebind stim to be a mouse key, thats whatever, if you rebind a sequence of ātab twice to get to ghosts. then hit snipe, then return to normal selectionā thats not allowed.
I asked blizzard support about that question few years ago. Marcos like enter āg āg ā enter ā F10 ā N are not forbidden, as they do not give you any advantage, but macros, which do give you any advantage are forbidden.
Answer me this. How on Earth are they going to regulate it. As long as the macros donāt execute so fast that itās obviously not done by hand, there is no way to tell if itās a macro or just muscle memory.
At least one competitive shooter detects hardware and software macros by timing patterns between keystrokes/clicks. Fortnite I know does it.
I have also personally gotten a temp ban from PoE for using macros to send stock messages while trading. I had keys for just mundane phrases like āThanks for the trade.ā and āPlease wait until my current trade is doneā, etc. So evil.
Thereās absolutely no way to enforce it unless the macro is quite obviously a macro, e.g. the events happen too fast and/or at the same timing. I am not even sure if itās technically against the rules since I think Blizzard made it OK to use macros since AIās are basically macros so to use the SC2 platform for AI research it would need to be OK to use macros.
Yeah, agreed the answer to OPās question is unclear, even in current Blizzard EULA (for all their games). I went and checked it out. The cheating section specifically mentions hacks, botting, and bug exploits. But does not specifically mention macros.
I will copy and paste it in the next post.
OP, hereās the Official Blizzard software EULA sections on disallowed activities, in its entirety -
- Cheating: Create, use, offer, promote, advertise, make available and/or distribute the following or assist therein:
- cheats; i.e. methods not expressly authorized by Blizzard (whether accomplished using hardware, software, a combination thereof, or otherwise), influencing and/or facilitating gameplay, including exploits of any in-game bugs, and thereby granting you and/or any other user an advantage over other players not using such methods;
- bots; i.e. any code and/or software, not expressly authorized by Blizzard, that allows the automated control of a Game, or any other feature of the Platform, e.g. the automated control of a character in a Game;
- hacks; i.e. accessing or modifying the software of the Platform in any manner not expressly authorized by Blizzard; and/or
- any code and/or software, not expressly authorized by Blizzard, that can be used in connection with the Platform and/or any component or feature thereof which changes and/or facilitates the gameplay or other functionality;
- Prohibited Commercial Uses: Exploit, in its entirety or individual components, the Platform for any purpose not expressly authorized by Blizzard, including, without limitation (i) playing the Game(s) at commercial establishments (subject to Section 1.B.v.3.); (ii) gathering in-game currency, items, or resources for sale outside of the Platform or the Game(s); (iii) performing in-game services including, without limitation, account boosting or power-leveling, in exchange for payment; (iv) communicating or facilitating (by text, live audio communications, or otherwise) any commercial advertisement, solicitation or offer through or within the Platform; or (v) organizing, promoting, facilitating, or participating in any event involving wagering on the outcome, or any other aspect of, Blizzardās Games, whether or not such conduct constitutes gambling under the laws of any applicable jurisdiction, without authorization.
- āesportsā: Use the Platform for any esports or group competition sponsored, promoted or facilitated by any commercial or non-profit entity without obtaining additional authorization from Blizzard or obtaining Blizzardās prior written consent. For more information on obtaining appropriate authorization, please visit Blizzardās website.
- Cloud Computing: Use the Platform, including a Game, in connection with any unauthorized third-party ācloud computingā services, ācloud gamingā services, or any software or service designed to enable the unauthorized streaming or transmission of Game content from a third-party server to any device.
- Data Mining: Use any unauthorized process or software that intercepts, collects, reads, or āminesā information generated or stored by the Platform; provided, however, that Blizzard may, at its sole and absolute discretion, allow the use of certain third-party user interfaces.
- Duplicated Items: Create, utilize or transact in any in-game item created or copied by exploiting a design flaw, undocumented problem, or program bug in the Platform.
- Matchmaking: Host, provide or develop matchmaking services for the Game(s), or intercept, emulate or redirect the communication protocols used by Blizzard in any way, for any purpose, including without limitation unauthorized play over the internet, network play (except as expressly authorized by Blizzard), or as part of content aggregation networks.
- Unauthorized Connections: Facilitate, create or maintain any unauthorized connection to the Platform including without limitation (i) any connection to any unauthorized server that emulates, or attempts to emulate, the Platform; and (ii) any connection using third-party programs or tools not expressly authorized by Blizzard.
- Transfers: Attempt to sell, sublicense, rent, lease, grant a security interest in or otherwise transfer any copy of the Platform or component thereof, or your rights to the Platform to any other party in any way not expressly authorized herein.
- Disruption / Harassment: Engage in any conduct intended to disrupt or diminish the game experience for other players, or disrupt operation of Blizzardās Platform in any way, including:
- Disrupting or assisting in the disruption of any computer used to support the Platform or any Game environment. ANY ATTEMPT BY YOU TO DISRUPT THE PLATFORM OR UNDERMINE THE LEGITIMATE OPERATION OF ANY GAME MAY BE A VIOLATION OF CRIMINAL AND CIVIL LAWS.
- Harassment, āgriefing,ā abusive behavior or chat, conduct intended to unreasonably undermine or disrupt the Game experiences of others, deliberate inactivity or disconnecting, and/or any other activity which violates Blizzardās Codes of Conduct or In-Game Policies.
- Violation of Laws: use the Platform to violate any applicable law or regulation.
I am pretty sure their AI license allows the use of programs for āplayer enhancementā or something like that.
The you can only perform one action per button press thing is pretty clear.
With rapid fire hotkeys that covers MOST of the actual game advantages macros could provide. Understanding that mouse X and Y wheels are a thing.
With a few caveats.
- Deselecting a unit. You can click on a individual unit to deselect it (ONE CLICK, per blizzardās rule). Removing the first unit in a group would be one use case.
- Changing camera locations (each is a āSingle Keyā)
- Changing selected control groups. (again, each is a āSingle Keyā)
For instance a mouse wheel could be used to cycle among the camera locations, or cycle among the control groups.
The more serious cheating that is CLEARLY cheating is not this sort of thing, but enhancements like auto creep spread, auto-inject, things that provide vision or build supply. Other than the vision hack it is mostly things for Zerg but there was an auto-split thing for marines someone got banned for. I donāt know of any Protoss ones. Maybe something to auto build a pylon, or build one at each base, or maybe warp in a bunch of stuff?
According to this, having a bigger monitor and nicer keyboard/mouse could be a ācheatā. Itās hardware, gives you an advantage, and āinfluencesā and āfacilitatesā gameplay. Doesnāt that fit their definition perfectly?
The problem with grey-zones like keyboard macros is that it would be up to the judge to decide if a jury could reasonably find a macro to fit the above definition. Because itās broad and vague, anything could happen.
Obviously, not legal advice: This is why there is safety in likeness. If you do something, do it as normal as possible or as similar as possible to something that you know is safe. That makes it difficult to a draw line to include normal behavior but to exclude your behavior. You want to find the least dissimilar way to accomplish your goals.
Thats funny considering you can rapid fire snipe ghosts with one button press and a wave of your mouse. Literally every Masters/GM/Pro does it.
AI research is not done on the ladder.
Blizzard released an API for building bots, the bot launches Starcraft on its own directly in to a game, and the bot talks to starcraft through the local network.
There are special bot ladders, but thatās something you have to set up and I donāt know much about.
h ttps://github.com/Blizzard/s2client-proto
From the page you referenced:
The StarCraft II API is an interface that provides full external control of StarCraft II.
This API exposes functionality for developing software for:
- Scripted bots.
- Machine-learning based bots.
- Replay analysis.
- Tool assisted human play.
The API is available in the retail Windows and Mac clients. There are also Linux clients available at the download links below.
As I was saying, I donāt think it is clear what is OK and what isnāt.
They canāt even stop map hackers or smurfs, what are the odds they will catch you?
Its not truly full control. The bots can not join regular ladder.
There are people who have built regular ladder bots, those require hooking into the games memory, or getting the computer to ālookā at the game and control your mouse and keyboard. Blizzard has not provided an option to play on the regular ladder.
If you want to test to see how a bot functions, here is an open source one you can download yourself.
I built the project if you want to try, or you can compile it yourself, which is simple, you just need visual studio community, but you will have to edit some of the code to get it to run.
You will also need to download maps, because it can only run maps you placed in the map folder. I included the latest ladder maps in the download.
Place them in ProgramFilesx86\Starcraft II\Maps, or if you have SC installed somewhere else place them there.
h ttps://easyupload.io/pyeywz
To run you can either double click tyr.exe, or you can use command prompt to run with options. Double click will choose a random map from the ones I included, with random races and the opponent as veryhard.
I changed the code a bit, the original version was always protoss vs terran, veryhard, and a random map(unless when playing on a bot ladder).
I added the ability to select the map, races and difficulty.
In CMD, go to directory of exe (cd āpathā), to see options type (tyr -help).
Example would be (tyr -map CosmicSaphireLE -d VeryHard -b Protoss -a Terran).
Or instead of using command prompt, you can create a shortcut to the exe, and in the properties, add the arguments in the āTarget,ā without the ātyrā of course.
Link is only valid for 7 days.
AlphaStar was able to do it.
Thanks for sharing. Thatās really cool. Iāve developed a number of AIs for various games over the years and have wanted to get into the AI ladder for SC2. I just havenāt had time. I have so many projects they are practically coming out of my ears. Neural Networks are all the rage right now, but Iāve always been a fan of genetic solvers, particle swarm optimizers, and simulated annealing (there is a lot of overlap between these categories).
I developed an AI awhile back for statistical analysis that takes a number of input variables and fits an equation that uses these as inputs to match a dependent variable. To match the dependent variable, it tries to find a 1:1 correlation but if it canāt find that then it tries to match the probability distribution. This has proven to be an enormous success, meaning it is extremely powerful at mapping inputs to outputs and thatās all a neural network really does, so it could be applied to SC2. For example, I never intended to use it on image recognition but I wrote a quick script that drew images with randomly placed dots and had my AI find an equation that correctly counted how many dots were in each image. It found an equation that had a perfect 1:1 correlation. The size, color, and placement of the dots was totally random, as was the number of dots.
Iād love to apply this algorithm to SC2, but probably never will due to concerns over licensing with the battle.net AI license. The way this differs from neural networks is that itās actually a genetic solver that writes actual computer code, so there are literally zero limitations on what it can model. Neural networks are just arrays of matrices and those struggle implementing things like loops. Because mine can write actual code, writing loops is easy and it can do all the matrix math stuff that neural networks can do.
I have a lot of experience with AI and also with compiler theory, so merging the two was pretty straight forward. I am pretty sure I could train a bot that would trounce AlphaStar, but I probably will never apply it to SC2. It would be fun, but risky. Not only do I consider it risky, there is almost no financial motivation to do spend the time so I have a very hard time justifying it.
One of the ways itās obvious to me that my AI would have an advantage is that it automatically recognizes when there is an inherent random element to a process. Thatās clear when the dependent variable canāt be modeled with a 1:1 correlation, so at that point it incorporates a number of random processes to then match the additional variance at least in the shape of its probability distribution. That means it will perfectly handle any scenario where taking risks or rolling the dice is a part of the process. Where a player canāt properly assess a situation and has to make a best-guess, it would be able to identify those kinds of scenarios and train itself to make the same kinds of guesses that result in the same outcomes.
TyrSc2/Tyr/MapAnalysis/MapAnalyzer.cs at master Ā· SimonPrins/TyrSc2 Ā· GitHub
I see you even do some analysis of the maps to figure out starting locations. Do you do any pathfinding analysis for factoring in the terrain for the botās reasoning? For example, travel time or ātrue or false, can this unit travel from A to B?ā.
I really like that you use āDistanceSqā to avoid calling a square root function. Thatās a nice optimization. The logic of A^2>B^2 is the same as A>B, so there is no need for the square root call. Itās a nice touch. You could also think about using this bad boy right here:
https://en.wikipedia.org/wiki/Fast_inverse_square_root
So it looks like you use the mineral/gas locations to determine base locations. Probably an average operation or something like that. Interesting. It isnāt clear how you are clustering the mineral patches. Regardless, itās pretty cool. Never-mind, just figured it out:
if (SC2Util.DistanceSq(mineralFieldA.Pos, closeMineralField.Pos) <= 4 * 4)
I could be wrong but I think the only reason alpha star is on the ladder is because google worked with blizzard while developing it. At least Iām pretty sure I read they worked together a while back.
Ahh very cool man. I have an idea of some of the things you are talking about, but I myself have no experience writing neural networks/ML. I design and program hardware mostly, but also software and full stack web. That project is not mine, I was curios to how bots worked and wanted to take a peek. All I did was changed a few lines to get it running(I donāt even think I needed to change it, could have probably just added a settings file), and then I just added in some code to parse arguments for changing the single player game settings so anyone here who wanted to try it could change them without editing the code.
The only āaiā Iāve created are regular game ai in a little FPS that never went to market.
Iāve been meaning to learn more about ML, but Iāve been too busy.
Edit:
Here is says you need to opt in to play alpha star.
āIf you would like the chance to help DeepMind with its research by matching against AlphaStar, you can opt in by clicking the āopt-inā button on the in-game popup window. You can alter your opt-in selection at any time by using the āDeepMind opt-inā button on the 1v1 Versus menu.ā
h ttps://news.blizzard.com/en-us/starcraft2/22933138/deepmind-research-on-ladder
Its kind of like chessdotcom your allowed to use a real board outside of the game but not move the pieces around before you make your move. Obviously not enforceable but you should respect the rules anyway for fair play.
Yeah, they may have provided some special accommodations for DeepMind.
Ah, so electrical engineering. Very nice. Iāve dabbled in that a bit but nothing all that impressive. Awhile back I designed & programmed a circuit board for controlling my gardenās various watering cycles. There were two boards, actually. One controlled some water solenoids and managed scheduling, while the other sat out in the garden and relayed data back about the humidity, temperature, etc. It was nothing impressive ā a little atmega328 processor, some relays, and some sensor circuits for reading thermistors and things like that. That was about 7 years ago, actually.
Just last year I needed a new heated bed for my 3D printer, and itās a very custom (aka large) printer so I had to make one myself. For the heating element I took some FR4 board and machined a heating element out of it to to pull 18 amps from about 14 volts. I actually wrote a program to generate & optimize designs for the length of the heating element. I planned on adding a feature to weigh in the heat distribution of the bed so it could score a solution based on how uniform the temperature is across the bed, but never quite finished it.
One of the issues with numerical solutions to continuous systems is that they have big stability issues due to rounding errors. This is universally true just due to the discrete nature of a time-step. Itās easy for these rounding errors to cause the simulation to āblow up to infinityā where a rounding error causes more rounding errors and this quickly gets out of hand to where you get absurd values for the physical properties in your simulation. So I implemented the heat simulation but ran into these issues and never got around to fixing them. Usually you just cap the maximum impulse to a sane value or something like that, but I am not a fan of that because itās not a āproperā solution.
So anyway I rolled with a solution that just optimized the length & width of the heating element. The older I get, the less I care about solving theoretical problems and the more I care about having an easy, practical solution. Anyway, this was what it came up with:
https://i.imgur.com/bhh0AfY.png
Itās nothing impressive, but itās the only real semi electrical engineering project Iāve worked on in awhile. You know, other than plugging sensors into an arduino or wiring stepper motors which I donāt consider electrical engineering in the slightest. I do do a lot of that, though.
Do you know ElectroBOOM? Heās great:
That sounds a lot like how I got started. I used to write code for various open source game engines. I remember being so happy when an RTS project I was working on had the AI use a dropship to unload units across some terrain.