I've come across a problem on my map and a quick google search is telling me something I don't want to hear - I would like to confirm that there is no way to get around this problem:
Does Starcraft 2 support ANY amount of N-Key Rollover with keyboard inputs, outside of the generic alt/shift/ctrl keys?
I am currently trying to make a 10-dimensional WASD movement system, which means that at least a few keys will be pressed (and their input should be detected) simultaneously for fluid movement. Currently, if I hold down one key and try to press another, the other key will override the first key I was holding down, which is NOT GOOD for a WASD style movement system.
How did other WASD systems overcome this problem? Did they just accept it and give up? I can't imagine a good WASD movement system without proper N-Key Rollover support...it would feel way too choppy.
The only pseudo-solution I've come up with so far is to enable the "continuous" flag under the command for each ability, but this is still no where near perfect as keys with cooldowns will not register multiple times if another key is being held down simultaneously, and the most recent key pressed will always have a greater influence than the previous keys being held down...
I would like proper N-Key Rollover support. Is this possible?
The only pseudo-solution I've come up with so far is to enable the "continuous" flag under the command for each ability, but this is still no where near perfect as keys with cooldowns will not register multiple times if another key is being held down simultaneously, and the most recent key pressed will always have a greater influence than the previous keys being held down...
Chances are this is the problem you are having. You are meant to be using triggers to detect the keyboard presses (down) and releases (up) and not button hotkeys.
Be aware of the limitations of keyboard matrices. Cheap consumer level keyboards (the sort most players are using) use a keyboard matric which is scanned rapidly to detect presses. If too many keys are pressed which share common rows and columns in the keyboard matrix then the control logic cannot resolve further key presses. Keyboards are designed so that certain common key usage patterns can be resolved, hence the underlying matrix is heavily distorted to fit the keyboard layout and often varies with manufacturer and model. For example I once had a terrible keyboard which could not support the use of Ctrl, up and right keys at the same time, something my current one does. This limitation should not apply to switch based keyboards but you cannot design a map around them since their high price tag means that few SC2 players will be using one.
I suppose I should have mentioned that I am using a data-based WASD movement system. I do not want to resort to using triggers for buttons pressed.
Rest assured that my keyboard is not the issue here, I've had my Corsair K-90 for a while and known it to be able to handle many commands at once in other the games I've played. This is a Starcraft issue (to be fair N-Key Rollover isn't ordinarily necessary for melee Starcraft).
So let me rectify my question - can hotkeys be used with N-Key Rollover functionality?
As far as I am aware hotkeys are not designed to be a method of input detection, rather a short cut to do something. Only 1 hotkey can be in a sustain state at a time as far as I know and what that means depends on the selected cast mode (a feature used by Heroes of the Storm).
In Standard StarCraft II hotkey mode holding the last key down will enter rapid fire mode, a feature useful for RTS games where issuing the same order many times is useful. Heroes of the Storm added two other modes to reduce the amount of user input required to cast abilities. Cast on release means that pressing a hotkey down and holding will enter targeting mode for the associated ability and releasing it will cast. Cast on press will bypass targeting mode and instantly cast the associated ability on press using the current mouse position as the target.
Make sure orders are not causing your problem. Every ability cast issues the unit an order to execute. Unless set to "transient" one ability order can interrupt another. If shift is held then orders will be queued so as to maintain correct order of execution, including transient orders. There is a limit to how many orders a unit can be queued with. Data only solutions likely abuse orders extensively.
I gave all my WASD commands cooldowns and now they can be cast simultaneously. It's not super practical, but it gets the job done. I'm guessing only one command can be issued every 0.0625 seconds, since setting my cooldowns to .125 seconds made more than two commands at once glitchy and setting it to .25 made it work fine.
I played around with the transient flag a bit though - it didn't seem to have any impact on simultaneous casts, at the very least. It just made abilties that require you to turn impossible to cast...
That being said, thank you for you help. At least I was able to find -a- solution, even if its not the most elegant one.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Hello,
I've come across a problem on my map and a quick google search is telling me something I don't want to hear - I would like to confirm that there is no way to get around this problem:
Does Starcraft 2 support ANY amount of N-Key Rollover with keyboard inputs, outside of the generic alt/shift/ctrl keys?
I am currently trying to make a 10-dimensional WASD movement system, which means that at least a few keys will be pressed (and their input should be detected) simultaneously for fluid movement. Currently, if I hold down one key and try to press another, the other key will override the first key I was holding down, which is NOT GOOD for a WASD style movement system.
How did other WASD systems overcome this problem? Did they just accept it and give up? I can't imagine a good WASD movement system without proper N-Key Rollover support...it would feel way too choppy.
The only pseudo-solution I've come up with so far is to enable the "continuous" flag under the command for each ability, but this is still no where near perfect as keys with cooldowns will not register multiple times if another key is being held down simultaneously, and the most recent key pressed will always have a greater influence than the previous keys being held down...
I would like proper N-Key Rollover support. Is this possible?
As far as I am aware there is no such problem.
Chances are this is the problem you are having. You are meant to be using triggers to detect the keyboard presses (down) and releases (up) and not button hotkeys.
Be aware of the limitations of keyboard matrices. Cheap consumer level keyboards (the sort most players are using) use a keyboard matric which is scanned rapidly to detect presses. If too many keys are pressed which share common rows and columns in the keyboard matrix then the control logic cannot resolve further key presses. Keyboards are designed so that certain common key usage patterns can be resolved, hence the underlying matrix is heavily distorted to fit the keyboard layout and often varies with manufacturer and model. For example I once had a terrible keyboard which could not support the use of Ctrl, up and right keys at the same time, something my current one does. This limitation should not apply to switch based keyboards but you cannot design a map around them since their high price tag means that few SC2 players will be using one.
I suppose I should have mentioned that I am using a data-based WASD movement system. I do not want to resort to using triggers for buttons pressed.
Rest assured that my keyboard is not the issue here, I've had my Corsair K-90 for a while and known it to be able to handle many commands at once in other the games I've played. This is a Starcraft issue (to be fair N-Key Rollover isn't ordinarily necessary for melee Starcraft).
So let me rectify my question - can hotkeys be used with N-Key Rollover functionality?
As far as I am aware hotkeys are not designed to be a method of input detection, rather a short cut to do something. Only 1 hotkey can be in a sustain state at a time as far as I know and what that means depends on the selected cast mode (a feature used by Heroes of the Storm).
In Standard StarCraft II hotkey mode holding the last key down will enter rapid fire mode, a feature useful for RTS games where issuing the same order many times is useful. Heroes of the Storm added two other modes to reduce the amount of user input required to cast abilities. Cast on release means that pressing a hotkey down and holding will enter targeting mode for the associated ability and releasing it will cast. Cast on press will bypass targeting mode and instantly cast the associated ability on press using the current mouse position as the target.
Make sure orders are not causing your problem. Every ability cast issues the unit an order to execute. Unless set to "transient" one ability order can interrupt another. If shift is held then orders will be queued so as to maintain correct order of execution, including transient orders. There is a limit to how many orders a unit can be queued with. Data only solutions likely abuse orders extensively.
Ah, I can make sense of that.
I gave all my WASD commands cooldowns and now they can be cast simultaneously. It's not super practical, but it gets the job done. I'm guessing only one command can be issued every 0.0625 seconds, since setting my cooldowns to .125 seconds made more than two commands at once glitchy and setting it to .25 made it work fine.
I played around with the transient flag a bit though - it didn't seem to have any impact on simultaneous casts, at the very least. It just made abilties that require you to turn impossible to cast...
That being said, thank you for you help. At least I was able to find -a- solution, even if its not the most elegant one.