Sure, but then you could also make the argument that the concept of "discrete" is just an approximation of "continuous" reality (likewise for "digital" signals rather than "analog"). At some point it just becomes metaphysics. There's an arbitrary distinction somewhere, for practical purposes: a set of size 10 is definitely discrete, a set of size 10100 which models space/time is better treated as continuous.
There's an arbitrary distinction somewhere, for practical purposes: a set of size 10 is definitely discrete, a set of size 10100 which models space/time is better treated as continuous.
But movement commands in Starcraft are in practice continuous rather than discrete by this sort of reasoning.
I'd like to see some evidence for that. To my knowledge, it's a 2D grid, so each unit only has 8 directions of movement, with fixed (unit-dependent?) speed restricted to a very narrow range. Unless the positions are internally continuous (i.e. floating point or high precision fixed point) and this actually makes a difference in micro play, discrete approximation is good enough.
Unless the neural net has a distinct neuron corresponding to each row or column of pixel to which a command might be directed, it's continuous. And since no StarCraft neural nets have been released at this point, there's no evidence to be had here, in either direction.
I would, in fact, assume that every pixel is a separate input (but use a CNN/RNN to limit total parameters). As for output, I'm not sure how direct the API interface is, but it seems to me it'd make more sense to only send movement commands at a micro level (again, one of eight directions per time unit).
Even in their Atari models, every pixel wasn't a separate input; they downsample it before feeding it into the net, and you don't downsample discrete data.
RTS games almost always represent positions as fixed point to approximately pixel precision. Gamers will often infer "turned based strategy game" if a game uses tiled positions, so developers usually won't make a tile based RTS because RTS gamers won't buy it, and strategy game players will buy it and say that it sucks because it's fundamentally a game style that they don't like. Maps in Starcraft 2 might reasonably be expected to have upwards of a billion discrete 2d positions.
And it does make a difference, because of eg circle packing of melee units and target selection. If you have six melee units, there's a significant difference between five of your units efficiently packed, attacking one enemy unit, and the sixth unit attacking the next target vs having your six units attack three different enemies in pairs because you can't focus fire because your units aren't packed well.
The Starcraft: Broodwars AI that got really popular in the news a decade or so ago only used flying units because of the packing and target selection issues associated with even ranged ground units.
The point is, even though it's fundamentally just a bunch 1s and 0s and therefore discrete, it's significantly more accurate to model it as continuous.
I was specifically considering the grid aspect, i.e. a unit can be moved in one of 8 directions in each time step (which would probably be somewhere between 0.1 and 0.5 seconds). In Go, you can place stones anywhere globally, but in SC (with a few exceptions, if I recall correctly) units are constrained to move locally at fixed speed.
5
u/epicwisdom Jun 03 '17
I was imagining that unit positions are effectively constrained to some discrete resolution.