It kind of loses meaning without a grid, e.g. for mouse rollover with, let's say 5 static locations, you might as well just detect hotkeyed unit selection of numbers 1-5, and players can just press it without moving the mouse. Or, if you wanted to, you could systematically randomize the numbers to enforce mouse rollover. The location would only be able to move under the mouse when the players input the numbers, so it is not practical in an RTS scenario.
Additional thoughts on the topic: As I look back on this, the concept I described as "Indirect Coordination" is nothing new, as the systems used in FRAGS and Elementa for instance all indirectly detect mouse position, just without EUDs (unit coordinate scanning/system of linear equations).
However I originally came up with this idea when thinking of P2P networking paradigms in games, and of how StarCraft specifically achieved it. First of all, unnaturally changing certain "shared" values in StarCraft, like resources, causes a desyncronization of yourself with the rest of the players. This implies that each host constantly interchanges what it thinks of the "game state" (most likely a calculated hash of a certain set of values), and inconsistent matches desync.
The game state is partially governed by static constructs defined by the map and the StarCraft client (triggers, auto aquired commands, units dying when their HP is 0, etc), and if all maps were 0-player (movie maps) this alone would be fine. However most scenarios additionally require volatile input (player input), shared between all hosts, and each host cannot predict player input of other hosts on its own like it can with static constructs, which is why they must be shared in the form of "events". These events are hardcoded, consisting of only:
- Unit orders
- Unit selection
- Latency alteration
- Text
- Hotkeys?
As we all know keypresses and mouse/screen position are excluded from this list, even though they are the crucial volatile inputs of the players. Which is why I thought of devising a system to use what's given to us, the static list of events, have the player create events to "encode" (integer string input) local unshared data, and use triggers to globally "decode" (pseudo-atoi) these events back into the original data.
[Slightly off-topic]
Through both assignment and access buffer overflows it could be possible, with a bit of luck, to devise a system of "Direct Coordination" of local data like mouse position. For instance if StarCraft was set up so the packet struct was defined in the data segment in an array of 9 (1 for the Outgoing packet, 8 for Incoming packets), and it also happened to contain padding/unused bytes, it would be possible to write in custom data there and have it sent to the other hosts. However I lack the skills/motivation/patience to reverse engineer StarCraft to this extent, though I'd be much more motivated if a new buffer overflow was found, because enabling EUD Actions is essentially no different than a mod, and with a mod it would be more efficient to directly modify protocol semantics.
The only source of hope I see with assignment buffer overflows is in Extended Preplaced Units, if someone (Heinermann) could research (disassemble/analyze the stripped code) and document exactly how StarCraft initializes preplaced units to cause these buffer overflows, perhaps we could systematically use these buffer overflows to write data we want where we want it, and perhaps even dynamically in-game rather than just in initialization. My level of knowledge and skills limits me to initiate this kind of research myself.
Post has been edited 2 time(s), last time on Jul 27 2011, 12:49 pm by yoonkwun.
None.