2.00 What features should be attached to hotkeys?

Started by namida, August 09, 2015, 01:32:56 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

namida

For now, just worrying about in-game; menu and editor hotkeys will come later, when I've made more decisions about how those should actually work.

I will stress that these will *all be customizable*, and most (probably all) could also be added as a clickable button on the skill panel - user's choice here. It's just at the moment about deciding what functions should *have* hotkeys. The keys listed next to them here are what keys are currently used in NeoLemmix V1.35n-C, and as such, will probably be the defaults in 2.00n as well.

Already exist in NeoLemmix (and/or traditional Lemmix)
Assign skill to lemming (Left Click)
Select skillbar icon (Left Click)
Cancel replay (Left Click) <-- this is to cancel it without doing anything else
Highlight lemming (Right Click)
Exit Level (Esc)
Release Rate Change (F1 / F2) (Right Click + / Ctrl +)
Skills (F3 ~ F10, 3 ~ 0) (Z / X) (Right Click icon / Ctrl + click or hotkey to assign to highlit)
Pause (F11 / P / MidClick)
Nuke (F12)
Force Walker Selection (Ctrl)
Select Previously Unassigned (Shift)
Save / Load State (Enter / Backspace)
Time Skips (-, Space, B, N / Left Click) - I might see about also allowing configuration of *how* much they skip by; if not, there'll definitely be +/- 1 frame, 1 sec, 10 secs at least
Fast Forward (F)
Save Image (I)
Save / Load Replay (U / L)
Quick Restart (R)
Directional Select (Left / Right)
Scroll Screen (no current hotkey, but has hotkeys in DOS L1 / traditional Lemmix)


New Suggestions
Quick-scroll with mouse (Suggestion: Right-click)

Note: For now, especially with the new suggestions, I am overlooking that some of the suggested hotkeys (or hot-clicks) conflict with existing ones. Defaults can be sorted out later; the first priority is determining what to have hotkey support for.

Anything else you'd like to see hotkeys exist for?
(Note: I didn't include "Display permanent skills info (Alt)" here becuase that option ideally won't be nessecary in V2.00 as it'll always be displayed.)
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

geoo

Everything should have a hotkey. :) But in your list that's a hotkey for pretty much all the functionality NeoLemmix has, right?
At least I cannot see anything missing.

For Force Walker Selection/Priority invert, will there be the classic version where you have to hold the right/middle mouse button?

One thing I've grown very fond of in lix to the extent that I barely use the normal border scrolling anymore is right-click scrolling. While holding the right mouse button, moving the mouse left/right a bit will scroll to the left/right to an extent that is configurable. I prefer to have it scroll very fast (I think in my setting moving the mouse 1 px with scroll 8 px).

namida

#2
That's something I hadn't even thought about (and didn't know existed in Lix), but could definitely look at implementing.

QuoteBut in your list that's a hotkey for pretty much all the functionality NeoLemmix has, right?

Unless I accidentally missed one, then yes, that's everything; as well as some things it doesn't (eg: scrolling with directional keys (by default), which is present in DOS / traditional Lemmix but was removed in NeoLemmix since the keys are used for directional select). It doesn't include menu hotkeys, though, except for a couple that also exist in-game (eg. save replay also works on the postview screen, save image also works on the preview screen).
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

namida

#3
On a related note, three things I'm wondering about:

1. How far to take this. Should even left-click be reassignable to some other key? (Imagine pointing the mouse, then pressing K to actually select the lemming. This is of course, a very extreme example; more likely is for someone to perhaps remap it to right-click.)

2. Allow multiple keys for the same function? This would be nessecary to some extent in order to transfer all existing hotkeys (specifically, pause has three different hotkeys under NeoLemmix V1.xxn, all of which are completely interchangable and do the exact same thing - F11, P, or middle-click). However, allowing customization may eliminate the need for this.

3. For those where it's applicable, should a selection be implemented between "Hold the button and click", or just "Press the button"? To illustrate the difference - we'll use the example of forcing selection of a walker here. Currently in V1.xxn (assuming Ctrl / Right-Click Inversion is off), to force selecting a walker, you hold Ctrl and click the lemming. This option could allow you to select instead, rather than holding Ctrl and clicking, you simply aim the mouse and press Ctrl and it instantly selects a walker. This could be particularly useful for certain functions if they're mapped to mouse buttons.

In each of these cases, they'll be difficult (and perhaps a tad slower) to code, but I've thought of them as possibilities, and could implement them if it's likely that people will use them.




Current test code has given some limitations on what keys can be used. In particular:
- Doesn't seem to be able to detect the Tab key (though I've found a possible workaround for this, but haven't tested it yet)
- Doesn't seem to be able to differentiate between Left Shift and Right Shift, or between Left Alt and Right Alt when using English keyboard layout (yet it can when using some foreign layouts, such as Korean; since in my case the only difference is the IME, I would assume that at some level the keys can be differentiated, and it's simply a matter of how to write the code that tells them apart). Interestingly, it can differentiate between Left Ctrl and Right Ctrl.

Of course, the key words here is "test code"; it was a very quickly hacked-up app for the purpose of testing key input. Needless to say, more significant effort would go into any implementation that even makes it into NeoLemmix's code, let alone in a "final" version.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

ccexplore

Quote from: namida on August 24, 2015, 09:12:01 PMHow far to take this. Should even left-click be reassignable to some other key? (Imagine pointing the mouse, then pressing K to actually select the lemming. This is of course, a very extreme example; more likely is for someone to perhaps remap it to right-click.)

If it doesn't take a lot of work to do so, it may be worth erring on the safe side and support it even if very few will reassign that way.  For swapping mouse buttons, Windows actually have that setting built-in as a global setting somewhere, though it certainly wouldn't hurt for the game to support it independently (and may be a good idea for cross-platform reasons).

Quote from: namida on August 24, 2015, 09:12:01 PM2. Allow multiple keys for the same function? This would be nessecary to some extent in order to transfer all existing hotkeys (specifically, pause has three different hotkeys under NeoLemmix V1.xxn, all of which are completely interchangable and do the exact same thing - F11, P, or middle-click). However, allowing customization may eliminate the need for this.

I'm leaning heavily towards "allowing customization may eliminate the need for this".  A survey may be helpful here?

Quote from: namida on August 24, 2015, 09:12:01 PM3. For those where it's applicable, should a selection be implemented between "Hold the button and click", or just "Press the button"? To illustrate the difference - we'll use the example of forcing selection of a walker here. Currently in V1.xxn (assuming Ctrl / Right-Click Inversion is off), to force selecting a walker, you hold Ctrl and click the lemming. This option could allow you to select instead, rather than holding Ctrl and clicking, you simply aim the mouse and press Ctrl and it instantly selects a walker. This could be particularly useful for certain functions if they're mapped to mouse buttons.

Seems like it'd be nice to have the choice.  In some programs, keypresses modified by Ctrl/Alt/Shift are basically considered as separate from the unmodified version of the keypress.  In such a system, Ctrl+left-click would be treated as a totally separate input than a plain left-click (though the default mapping will usually map them to related functions for obvious usability reasons).  Not sure how necessary or desirable it is to have that supported, but it would be one way to implement what you are describing.

Simon

Point 1 (mouse buttons are keys for remapping): This is exciting, I have considered this myself at least for the right mouse button. Left mouse button is murky. In Neolemmix 1, it's already overloaded: assign, and one-frame-advance-while-paused, is both on LMB. I'd go for full mouse button inclusion in the remapping, let's see whether/when design problems come up along the way.

Point 2 (mutliple keys for same function): My experience has been bad with this. The GUIs where you could define multiple keys for a function were always confusing. It would never delete a binding when I wanted to, it would instead add another binding.

Point 2b (nobody has asked for this): It's good to allow for one key to trigger several functions. You can give out a warning, but you should not reject the choice.

Point 3 reminds me of Clones, where anything that wasn't like Lix felt strange. I don't want to answer this before sleeping over it, lest my answer become overly biased.

-- Simon

namida

QuotePoint 1 (mouse buttons are keys for remapping): This is exciting, I have considered this myself at least for the right mouse button. Left mouse button is murky. In Neolemmix 1, it's already overloaded: assign, and one-frame-advance-while-paused, is both on LMB. I'd go for full mouse button inclusion in the remapping, let's see whether/when design problems come up along the way.

Indeed, it's a good point that those should be seperated (and that ties in with point 2). It should also be noted there's a slight difference between left-click and N to advance a frame; left-click cancels any in-progress replay, while N does not. In this regard, these should also be seperate functions.

QuotePoint 2 (mutliple keys for same function): My experience has been bad with this. The GUIs where you could define multiple keys for a function were always confusing. It would never delete a binding when I wanted to, it would instead add another binding.

For now, we'll worry about "should it be supported at all"; having the underlying implementation to support it comes first, and a menu to configure it comes once using them works (with an external tool, or even perhaps a hex editor, being used in the meantime to configure them - keep in mind, this is completely in the "pre-release stage" here, I'm not expecting an end user to use a hex editor until a menu is set up).

QuotePoint 2b (nobody has asked for this): It's good to allow for one key to trigger several functions. You can give out a warning, but you should not reject the choice.

Hm... I'm a bit iffy on this one, outside of cases where the functions are mutually exclusive in some other way (eg. in V1.xxn, Ctrl has a different effect when held and a lemming is clicked <force selecting a walker, or in the case that Ctrl / Right-Click Invert is on, it highlights a lemming>, than it does if a skill bar icon is clicked (or its shortcut key pressed) <instant minimum / 99 for release rate, assign to highlit lemming for an actual skill - in all cases these are the same as if you were to right-click the icon, the only real difference being Ctrl can also be used with the hotkeys for the buttons>; but for the same reasons, the two functions never overlap).

QuotePoint 3 reminds me of Clones, where anything that wasn't like Lix felt strange. I don't want to answer this before sleeping over it, lest my answer become overly biased.

I don't see myself using this feature either, but some people might want to. In a way, existing setup already has such a differentiation on the same function - as mentioned above, if Ctrl / Right Click Invert is disabled, then right-click (on its own, not holding it + left clicking) highlights a lemming, whereas if it's enabled, highlighting is achieved by holding Ctrl and left-clicking a lemming. In my case, I leave the Invert option off; but although I don't outright remember it, it does not seem like a feature I would've implemented unless it was requested, so I'd say someone must've preferred the latter at some point.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)