Hacker Newsnew | past | comments | ask | show | jobs | submit | JefeChulo's commentslogin

"so agents must interact with the game within limits of human dexterity in terms of “Actions Per Minute”."

I am really glad they are limiting APM because otherwise things just get stupid.


OOTH, altering the source to remove any human dexterity limits and watching subsequent AI vs AI battles play out at 60fps would be really fun to spectate ;)


For SC1 BW, you can already watch https://www.youtube.com/user/certicky for a weekly highlights broadcast / commentary of AIs. Right now there is an AI arms race where the previously dominant AI (Iron Bot) is being beaten by challengers. It used to happen when Iron Bot did something silly. Now it is happening because the competitors have really stepped up their game.

The current board leader (krasi0) has a strategy similar to their predecessor (Terran Mechanical units: Tanks, Goliaths and Vultures). The alternative strategy I really enjoy watching is a Mutalisk heavy build by Arrakhammer.

The bots have styles and differing capabilities. tscmoo is one of the more fascinating ones to watch in this regard, as they mix it up better than anyone else (and tscmoop, the Protoss variation has the best High Templar storm going).

The AI APMs get into the 10k ranges at times. Watching the minimap can be like watching insects swarm.

If you want to see a game between two AIs in progress, you can watch: https://www.twitch.tv/sscait

While these AIs can pull off tactics a human player could not (what they can do with Vultures is incredible), at this point they wouldn't be able to compete with the professionals. Going back to an earlier example, I think I could use High Templars more effectively than any AI I've watched.


This surprises me - I would have expected the computer mechanics to be much better than what a human can achieve. Do you have insight into why that isn't true?


AIs can click faster, but humans still have better overall strategy and planning, which matters a lot in this game.


I'm trying to come up with a simple and satisfying explanation, but the best I can do is "Starcraft is a complex game of balancing your ability to attack and defend. AIs have difficulty with situational awareness."

But I think that case analysis of what I've observed may be more telling.

Case 1, The AIs tend to over-react, or under-react. For example, when a Zerg player sees flying units they may start to go scourge heavy. If a human player notices this, they may build a Wraith or two, causing the Zerg player to waste a lot of money. This can happen naturally between AIs as well. Terrans depleting the Command Center's invisibility sweep too soon is another one... Something is getting hurt, but you may want to wait until after the Tanks are in siege mode before attacking (not while they are converting).

Case 2, Lack of Memory. This one happens a lot. You'll see an AI do something bad. Then, in a situation where circumstances obviously wouldn't have improved, try again a few seconds later. I'd want to blame the fog of war, but futile attacks on static towers is a common example.

Case 3, Fight or Flight. Sometimes you'll see units fleeing from a battle they cannot win. Sounds good. But sometimes they are being pursued by units that can pick them off during retreat. And they aren't fleeing for more support, they are just avoiding a bad situation. When in reality, those units are dead no matter what, might as well try to take down an enemy unit or two. The inverse can happen too, where units stand and fight in a situation they could run away from and get reinforcements. I've heard predicting combat outcomes is really difficult in SC.

Case 4, Under utilization. Vultures are the unit that stands out in my mind as one that an AI can handle better than a human. They are fast, have a great punch, and can deploy mines really effectively (some bots mine much of the map). What was a harassment unit becomes an offensive unit that can hold its own in a "fire/flee/repeat" pattern (imagine having 5 of them do that in the same area). High Templar are the opposite. I tend to expect AIs to do poorly when storming, it is currently a highlight/joy to see them utilize the ability effectively. But the ability is meant to discourage enemies from grouping units too closely together. Which allows for Carriers and Mutas to do a lot more coupling / damage than they would be able to otherwise do. Under current circumstances, it would be possible to see a dozen or more Mutas being crippled in a single storm. I rarely see nukes/Ghosts or Defilers used. Queens also seem to be under utilized.

Case 5, Target Prioritization. When you see a Carrier, kill it rather than the Interceptors. When you see a Medic or two, kill them before the Marines. Same with SCVs repairing in some cases (with sufficient firepower, the unit will be dead faster than it can be healed). One AI loves Carriers, and part of the reason their strategy works is that a lot of units go after Interceptors rather than Carriers, allowing the Carriers to retreat (the AI judges when to do this well) and rebuild.

It isn't that AIs can't play at a professional level, but this represents the current level of the bots. Looking over it... The AIs can pull off things we can't, but professional level situational awareness / judgement is tough.


Positioning matters in basically every decision in Starcraft and humans are incredibly good at precisely that.


IMO there should also be a precision limit. The timing of actions should include human-typical jitter and the wrong action should sometimes be activated to simulate misclicks/fat-finger keypresses — e.g., messing up a control group by assinging a unit to the wrong number key. The bot must also not be able to act faster than human reaction times (~250ms), this could be enforced by adding a fixed delay to the observations.

I wouldn't be surprised if human Starcraft II play isn't so much limited by decision-making as by the translation of decisions into mechanical actions, which in turn dilutes the attention devoted to actual decision making.


Since existing bots are far from being competitive with human players why further handicap them in ways that deal with an entirely different domain?


Yea, agreed. Specifically they should add a loss function that compares the AI's action stream against a pro human action stream, and attempt minimize that loss.


Right -- likewise it would be nice to have it mimic human cognition limits, like time lag for loading a new info source into memory.


ideally they'd train it on real keypresses rather than actions


Why would that be ideal? Wouldn't that just make ML at the strategy layer harder without doing anything to make the discoveries more valuable?


to emulate human handicaps at the interface layer. I didn't say it would be free


But why is that desirable? Why would we want to emulate the human physical handicaps in our quest to advance AI at a strategy level?


For the same reason the APM are limited: to ensure that what we are doing is really focusing on advancing strategy rather than brute mechanical skill. If I played against an AI using nothing but the rendered frames and sound of a game as input, I might not even make the stipulation on reflexes. I'd be humbled if I lost.

As it stands now, most of the games I like have bad AI. Sure, it can be fun to play a hack and slash against lots of little, dumb minions, but FPS, RTS AI these days still don't cut it as savvy opponents. Often they have inhuman perception, direct knowledge of game state, or higher starting resources, but they make abysmal decisions.

Yes, I realize these are unlikely, expensive goals and incremental progress is how things are done. I just want to know if it's possible or desirable to emulate actual human reaction time.

Do you disagree this would in principle help separate strategy from godlike reflexes?


This is not the same AI you normally face in a game. Most (all?) of those AI opponents use rules written by the game developers to make decisions and some of them simply cheat to be competitive (cough Mario Kart 64 cough).

This blog is about creating AIs that interact with the game the same way humans do, the computer plays by the same rules and has no special access to the game state beyond what the player would have. With these constraints there are no existing bots for StarCraft or StarCraft 2 that can even beat the built-in rule-based AI. They aren't even close to beating professional players.

If the strategy abilities are so weak today that we can't even beat the tutorial AI then why introduce further arbitrary handicaps on the bots? How do those handicaps advance the state of the strategy layer? The AI has many potential advantages over the human player beyond just reaction time. Should we also limit the amount of data the bot considers to emulate the amount of inputs a human player can process? What about emulating human memory, can a human really learn from 60,000+ games? What about 1.5 million?

I do not think it is desirable to emulate human limitations in AI unless you are trying to create an artificial human. I think the advantage of creating an AI is to do something people can't already do so why should we impose our physical constraints on them?

I do not think it is important to separate reflex from strategy. Since every player has a different APM ability some strategies are more valid than others for each individual. If I do not have the reflexes of a professional player there are strategies I cannot employ. As long as StarCraft is not imposing APM limits on human players to maintain competitiveness the bots should also not have a limit.


Okay, thanks. I appreciate the counterpoint. I guess I'd like to see it both ways: bots limited to human speed and bots not.


Why not first allow the AI to have unlimited APM and beat humans, then restrict it later? Because I don't think we're even close to the easier problem.


In what universe is taking 10,000 actions per minute an easier problem for a neural net than 100 such actions?


"In what universe is taking 10,000 actions per minute an easier problem for a neural net than 100 such actions?"

StarCraft is precisely such universe. If you could micromanage units perfectly, you can do some amazing tricks. Here's an example of what I'm talking about: https://www.youtube.com/watch?v=IKVFZ28ybQs


That's a rules engine, designed to do basically one specific thing. It was told how to micro. In that context APM is a meaningless constraint. May as well ask how many times you can print a message in a for-loop per second. yes...quite a lot, and the computer is unfazed by the workload.

This is a different type of bot we're talking about here. A neural net could not learn to work with unlimited apm more easily than limited apm. That just doesn't make sense. That's like saying it's easier to compute 1000 hashes in a second than it is to compute one hash in a second.


I'm imagining an AI war where the next advancement is the micro of the siege engines to optimise targets and timing of shots to hit large groups after the initial splash avoidance. AI on both sides keep trying to maintain a one-step-ahead strategy which minimises/maximises casualties based on predicting the exact shooting/dodging strategy of the opponents. Will be interesting to follow developments in this area!


Have you played SC2 before? It's hard to explain if you haven't.


Yes, I have.


Philosophically, I wonder if it's better to just acknowledge the differences between AI and humans, and let them play to their strengths. It seems common to think that we need to constrain AI in certain ways to be more like humans, but the constraints are always artificial. APM is one constraint, but what about working memory? What about multithreading? We already allow the AI access to computational resources humans don't have. Why draw that line at APM, exactly?


I don't think they're constraining APM to make the AI more human-like. It seems more like they're controlling a variable, so that if the AI wins, they know it wasn't just because the AI could out-click a human.


Would not actions per second be a better limit tho?


Why?

Speed is in MPH or KPH, would it be better to go by m/s?

The convention in gaming is APM, so they're just using the nomenclature that is already understood.


Maybe what usaphp is getting at is that the AI could still gain an advantage by doing a set of actions much faster than humanly possible in just a fraction of a second as long as it kept its total number of actions that minute below the cap.


Exactly. Most actions in idle game mode (i.e. when there's no active battle, micro or macro to be done) are null, the gamers simply repeat random meaningless keystrokes; this helps with being always alert and ready for anything that requires a rapid response.

An AI doesn't need to do this.

Source: Ex pro Starcraft (Brood War) gamer.


> this helps with being always alert and ready for anything that requires a rapid response.

I always wondered why they do that, just spam meaningless things like open/close the stats window or click on the background. Some WoW PVPers did it too (like Laintime, I think it was - played a warrior and ran around spamming the character window open/closed an mashing 'weapon swap' even when there was no earthly reason to do so). I figured it was just the result of too much caffeine for 18 hours a day.

This sounds like it's more an equivalent of tennis players' dancing/hopping around, or martial artists doing their ducking/weaving thing?


There no were BW pro-gamers outside of Korea.


A 65MPH speed limit doesn't mean I can go 100MPH for some section of the road, and 30MPH for another section and still be in compliance.

Similarly, an APM limit wouldn't directly imply that the kind of "gaming" that you're talking about, where a user/agent simply has to have an average APM over a certain period to be in compliance.


usaphp's point seems to be that the period should be less than one minute. When the police measure your speed with radar they are not waiting an hour to average your speed. The same idea applies here.


Yep, I entirely understand the point. Consider that when the police measure your speed, they're still measuring in MPH. Just because the units contains a specific time-frame (hours), doesn't mean the measurement is made over an hour.

Similarly, just because the units for APM contains a specific time-frame (minutes) doesn't mean the measurement must be made over a minute. A 150APM limit doesn't necessarily mean that the running average over a minute must stay below 150 actions any more than a 65MPH speed limit doesn't mean that the running average over an hour must stay below 65MPH. If a police officer catches you going faster than 65MPH even for a single second (or however long a radar gun takes), they can pull you over.

The units of a measurement do not dictate how the measurement is made.


You say you understand the point but you seem to have entirely missed it, the same problem remains.

The point of the APM limit is presumably to fairly emulate a human player, but the APMs for humans are obviously averaged over a minute.

However, for certain things humans can initiate actions in SC2 in quick succession that, if sustained over a greater time period, would yield a ridiculous APM rate. Think a Terran player highlighting the barracks and tapping "A" really fast, say with a 10ms delay, that would result in 600 APM.

Let's say a human can build 5 marines like that in quick succession. You're going to have to allow for temporary spikes in APM to not unfairly give the human player an advantage.

But if you do that the computer is able to really rapidly execute more complex actions that the human can't because he's limited by the SC2 UI, whereas every action via the API is equally difficult for the computer. E.g. moving 3 different subgroups of marines out of the way of a High Templar Storm. I doubt any human player could select 3 different subgroups of marines from one big group and move them out of the way in 3 different directions within the span of 60ms (10ms for each action of select/move for 3x groups).

So any "fair" APM limit really needs to be dynamic in some way, or at least take into account the complexity of actions (say highlighting a group v.s. tapping "A"). It's not at all obvious how to do this while retaining fairness and not giving either the human or the computer an unfair advantage.


> the APMs for humans are obviously averaged over a minute

This is wrong. I don't know the exact number, but APM is averaged over around a second. I suspect this is done because APM is a more meaningful compared to APS, for humans at least.

Here is a graph from Scelight that high lights this: https://goo.gl/photos/9cjNxDwWoB1pmWkg9


You still end up with a computer that can perform 3 actions all within the first millisecond of a second and still end up with human-like 180 APM (3 APS), even though no human could replicate what it just did.


How is that any different than someone who goes 100MPH and then 20MPH and claims to have not violated a 65MPH rule because the average speed was 60MPH for the trip?

The units of the measurement do not dictate how the measurement is made.


Because when the cops measure your speed they can do so in an arbitrarily small time period of their choosing, and inertia and power requirements mean you can't be going 1000 MPH one milliseconds and 10 MPH the next.

You could decide to measure APM by saying that the time difference between any two actions extrapolated to sustaining that rate over a minute or seconds couldn't exceed the APM or APS, but as I've explained such a measurement would unfairly give the human player an advantage because humans are capable of bursts they couldn't sustain over longer periods.


APM isn't averaged over a minute time frame. I don't know the exact calculations they use ( and it has been changed a couple of times) but roughly, if you go above 5 actions per second your APM will be shown as 300.

I believe the reason they use APM over APS is because 3.4 APS isn't as meaningful as 204 APM.


Well it means the AIs could exploit it a bit by issuing hundreds of actions in the first millisecond and then waiting 59.99 seconds. I'm not sure how much of an advantage that would be though.


Which is still about 350 actions per minute for a professional SC2 player, roughly 5 to 6 actions per second.


Currently, though, APM isn't a real advantage for AIs. They're still too stupid.


I would like to see IBM Watson dominate Jeopardy without a superhuman finger.


Watson’s hand looks like a clear, Plexiglas, cylindrical soda can with a few metal screws in the top and a wire extending from the bottom that is connected to Watson’s Front-End Controller. The mechanical hand wraps around the Jeopardy! buzzer which is inserted in the bottom of the Plexiglas cylinder and is held in place by a clamp. Watson’s hand uses a solenoid to physically press the same button that the humans must press.

Watson’s hand is pretty fast in terms of raw speed — it takes somewhere between five and ten milliseconds for Watson to activate the buzzer once it decides to answer. This delay is affected by the speed of the solenoid and other small, sometimes hard-to-pin-down delays inherent in the software stack.

http://www.kurzweilai.net/the-buzzer-factor-did-watson-have-...

I wonder if the human decision-to-buzzer time is much slower?


Typical human response time to a stimulus is about 200ms. That of course doesn't factor in the decision time, but once the brain decides on an action it takes about 200 Ms for the signal to propagate to the relevant muscles.


https://www.humanbenchmark.com/tests/reactiontime seems to agree with you. The median there is 215ms, which probably includes some unmeasurable rendering and input latency.

In Jeopardy, though, people can anticipate the moment the buzzer becomes active.


How about exceptional human response time, as for pro gamers or Jeopardy players who have predicted the stimulus?


Yes and no. I guess the more "fair" way to compare them at trivia would be to have a format where all 3 give an answer to every question, and whoever gets the most points wins. That's obviously not really jeopardy, and I'd be curious to know how Watson would perform purely on the trivia knowledge vs clicking speed. I'm guessing it would still win though.


"What is your mother's name?"

"......let me tell you about my mother...."


I think you're asking more along the lines of how do you get people interested in what you have to say. Of course you could just look up public speaking techniques instead of asking here, which is why I assume that's not what you're asking.

In order to be a successful public speaker, you need credentials. You should start by having a good position in a successful company. This adds a lot to your credentials. You could also write research papers, or books. Have a successful blog, etc.


In future project I might be interested in the use of Redis for queuing jobs, this comes very handy to now early the main issues I could get when developing.


I just noticed that "Entreprenerd: Marketing <for> Programmers" is free as well on your website. Nice!

> A modern web-marketing book that outlines a multi-modal system for growing a website with SEO, Google AdWords/Facebook Ads, Conversion Optimisation, Copywriting/Classic Persuasion/Behavioural Psychology, Google Analytics, Statistical Significance, Email Marketing, and Remarketing. When I launched my first web application it started off with zero traffic. This obviously was not satisfactory so I started a private Berlin-based marketing group with local marketing consultants and tech company owners. During these sessions, I was privy to tactics from marketers working with companies like Goldman Sachs, Amazon Audible, Delivery Hero, ResearchGate, etc. To balance things out, I also conferred with people active in the darker side of internet marketing, like guys running shady coupon sites or selling fitness ebooks. This book is the product of what I learned from these sessions and my own experiments.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: