minetest / minetest

Minetest is an open source voxel game-creation platform with easy modding and game creation
https://www.minetest.net/
Other
10.71k stars 2.01k forks source link

Bikeshed Better Default Keybindings #8636

Closed carlsmith closed 5 years ago

carlsmith commented 5 years ago

Minetest has evolved over the years, and its keybindings have obviously evolved with it, but to people starting to play Minetest these days, many of the defaults make little sense, which in turn, makes the controls difficult to learn.

Changing the defaults would only really affect new users, as established users almost always have local configs defined (causing the new defaults to be ignored anyway). And everything remains configurable, so overhauling the default bindings seems feasible (though may be better left till Minetest 6.0.0).

The following cheatsheet covers the bindings I've been testing. I had a little trouble getting them working with the GUI, but setting them in minetest.conf worked fine.

Q: QUICK        Toggle Quick Mode (fast)
E: EXTEND       Special Action (aux)
R: RANGE        Range Select
Y: YOMP         Autoforward
F: FLY          Toggle Fly Mode (fly)
G: GHOST        Toggle Ghost Mode (noclip)
H: HIGHER       Higher Visibility (inc. range)
L: LOWER        Lower Visibility (dec. range)
Z: ZOOM         Zoom
X: DROP         Drop
C: CRAFT        Toggle Crafting Menu (inventory)
V: VIEW         Change View (camera)
B: BACK         Select Previous Item (prev. item)
N: NEXT         Select Next Item (next item)
M: MAP          Toggle Map (minimap)
P: PITCH            Toggle Pitch Movement Mode
U: UTTER        Post One Comment (or Command) to Chat

0-9         Select Specific Item

WASD            Walk & Strafe
Space & Shift       Jump & Sneak

Left & Right        Increment & Decrement Volume
Down            Toggle Mute

PrintScreen     Take Screenshot
ScrollLock      Toggle Cinematic

Backspace       Toggle Fog
Tab         Toggle HUD

]           Toggle Console Prompt
[           Toggle Console Log
/           Quick Command
\           Local Command

`           Toggle Performance Profile Overlays
~           Toggle Debugging Overlays
SmallJoker commented 5 years ago

The idea to re-map the defaults to keys which make more sense is good. However, here are a few issues I've found with the new suggestions, thus partially against the proposed change:

E       Special/aux. Often used, close to WASD
Q       Drop, also often used in survival

+       Higher range view (more sense in multi-language)
-       Lower range view (ditto)
I       Inventory, although C is handy nearby
scroll  Select item (easier than pressing keys)
T       Talk (chat), also closer to WASD
up/down Adjust volume (common in media players)
N/A     Fog (not worth binding IMO)
.       Local command (they start with .)
/       Server command (they start with /)

Debugging stuff and rare used key bindings should be kept in the F-key range. People who want to use them know where to find it.

Also PrintScreen should rather not be used. Leave it to the OS. EDIT: Also ] is a very bad choice for (some?) German keyboards because Irrlicht sucks and cannot parse that key.

LoneWolfHT commented 5 years ago

I disagree with most of those. Some comments (They don't answer all of my issues. I need to do some other things...)

The inventory doesn't always hold a crafting page. There are games out there like NodeCore (Highly Recommend) that only use it as a help screen. The inventory will hold other things too. Like maybe a rules/mail tab. 'C' is also a pain to reach on my keyboard. I personally have it set to [TAB], which is easy to reach with my left hand I like having the fly, fast, and noclip keys together on the keyboard. It didn't take long for me to get used to them. I rarely ever toggle HUD/Chat. Those are better off in the f section IMO. I prefer 'T' for chat because it's easy to reach with my left hand. And I think the console log doesn't work well where you would put it M for map is a neat idea. I think I may change to use that keybind For dropping I use 'G' (Give). Q is a horrible spot for it. Too easy to accidentally drop your weapon if your finger doesn't press 'W' when playing. I do drop things sometimes and pressing keys on that layer below ASDFG sometimes messes up my hand position. Not fun when playing CTF or working over lava The chatcommand keys are fine as they are IMO. They're both next to each other on my keyboard

style-nine commented 5 years ago

The defaults probably ought to be close to what Minecraft uses as that is likely what a lot of people who play this are also used to playing.

carlsmith commented 5 years ago

Thanks for taking the time to help with this guys. Reaching a consensus will be difficult, but there's no harm in trying, and it's an interesting conversation that we can all learn something from.

@style-nine, I've never played Minecraft myself, but other people may want to keep it in mind.

Console Bindings

@SmallJoker, While T for Talk is simple, the name is confusing, as the binding does not open the console for you to talk. It only opens it for a single input, closing it automatically afterwards. I was thinking a name like Post, Comment or Remark would make that clearer.

@LoneWolfHT, I didn't realize that local commands start with a dot, so the . key does make a lot more sense for that.

Using a punctuation character for posting a comment would make everything more consistent. Then, all console related bindings (and nothing else) would use punctuation keys.

The Quote Key would make sense for commenting, but the Comma Key works pretty well too, and it sits next to Dot and Slash, so this seems like the best compromise overall:

]    Toggle Console Prompt
[    Toggle Console Log

,    Post Quick Comment
.    Post Quick Local Command
/    Post Quick Server Command

Note: I saw the edit that points out that ] is hard to use on some keyboards. I think we have to assume a standard layout (ANSI US), and optimize for that. We can make configs available for other layouts that are each optimized for a specific language, but trying to handle US, UK and German (let alone Japanese, Korean et cetera) keyboards at the same time is impossible to do well.

Inventory Vs. Craft

Having the Inventory on I is easy to remember, but very far from WASD.

@LoneWolfHT, you're right: I didn't consider that some games do not use the Inventory for crafting, so Craft would need to be renamed to Cache, Catalog, Cargo, Carrying or something like that, but C is ideally positioned, so I'd still like to keep that key (which can be used to exit the Inventory too).

Fast Vs. Quick

I find having Q for Quick (Fast Mode) next to W (Forwards) handy (and think it'd be intuitive for new users), and X also works well for dropping things, but this one is super subjective.

The Function Row

On many laptops (including MacBooks), the Function Row is overloaded with special keys for stuff like volume and brightness. On many Macs, it's overloaded again with the TouchBar, but even without that, using the F1-F12 for application level bindings is more of a Windows thing.

Misunderstandings

@SmallJoker, I only renamed Special (aux) to Extend, so its name starts with an E (A and S are part of the WASD group). It's still bound to the same (E) key.

You can still use scroll to select items in the hotbar, but default bindings are provided too (N for Next and B for Back). I just kept them.

LoneWolfHT commented 5 years ago

The defaults probably ought to be close to what Minecraft uses as that is likely what a lot of people who play this are also used to playing.

Actually a lot of people that play Minetest were looking for a free version of Minecraft. So they will likely have not played MC

LoneWolfHT commented 5 years ago

@style-nine, I've never played Minecraft myself, but other people may want to keep it in mind.

@SmallJoker, While T for Talk is simple, the name is confusing, as the binding does not open the console for you to talk. It only opens it for a single input, closing it automatically afterwards. A name like Post, Comment or Remark would make that clearer.

@LoneWolfHT, I didn't realize that local commands start with a dot, so . does make more sense. Also using a punctuation character for posting a comment would make everything more consistent (all console related bindings would use punctuation keys, and nothing else would).

The Quote Key would make sense for Comment, but the Comma Key is usually next to Dot and Slash, so that seems like the best compromise:

]    Toggle Command Prompt
[    Toggle Command Log
,    Post Quick Comment
.    Post Quick Local Command
/    Post Quick Server Command

, is hard to reach with the left hand

Inventory Vs. Craft

Having the Inventory on I is easy to remember, but very far from WASD.

@LoneWolfHT, you're right: I didn't consider that some games do not use the Inventory for crafting, so Craft would need to be renamed to Cache, Catalog, Cargo, Carrying or something like that, but C is ideally positioned, so I'd still like to keep that key.

It's easier for me to hit [TAB] than to hit C. And on my keyboard [TAB] is a much larger key than C, this helps prevent me from accidentally hitting the wrong key.

Quick Vs. Fast

I find having Q for Quick (Fast Mode) next to W (Forwards) handy (and think it'd be intuitive for new users), and X also works well for dropping things, but this one is super subjective.

X isn't easy to quickly reach with my left hand. Using my right hand to hit keys is a pain. Since it's usually controlling my mouse

The Function Row

On many laptops (including MacBooks), the Function Row is overloaded with special keys for stuff like volume and brightness. On many Macs, it's overloaded again with the TouchBar, but even without that, using the F1-F12 for application level bindings is more of a Windows thing.

You can do FN + <KEY> to bypass the special keys

carlsmith commented 5 years ago

X isn't easy to quickly reach with my left hand. Using my right hand to hit keys is a pain. Since it's usually controlling my mouse.

The X key is below S on an ANSI US keyboard. Do you use something else? Do you drop items very often? I'm just trying to understand why it doesn't work for you.

You can do FN + to bypass the special keys.

You can, assuming you use a Mac keyboard with a Fn key, but many people use generic mechanicals that lack one. You're right though: It's not critical that we avoid the Function Row, I just found that there's enough keys to cover everything without needing the Function Row, Nav Block or Num Pad.

carlsmith commented 5 years ago

It's easier for me to hit [TAB] than to hit C. And on my keyboard [TAB] is a much larger key than C, this helps prevent me from accidentally hitting the wrong key.

I see. That does make sense.

benrob0329 commented 5 years ago

I second using [Tab] for inventory.

carlsmith commented 5 years ago

, is hard to reach with the left hand

True, but it's easier to learn for new players, assuming we're using Dot and Slash for the other two "quick post" bindings.

carlsmith commented 5 years ago

So, how about binding Tab to Inventory, freeing up C for Chuck (drop), instead of X, and then X would be free?

Semantically, you can chuck an item away, chuck an item somewhere, or chuck an item to another person.

carlsmith commented 5 years ago

The name Trek may be better than Yomp for Autoforward, and T is a tiny bit closer than to WASD than Y.

benrob0329 commented 5 years ago

T is standard for chat, although Y has been used on occasion too by games.

carlsmith commented 5 years ago

Can anyone who downvoted the original post explain why? I obviously don't care if this happens or not. My system works exactly how I want it to. I just thought I could maybe help improve the experience for new users (like my kids), who find the controls unintuitive.

carlsmith commented 5 years ago

T is standard for chat, although Y has been used on occasion too by games.

Cool, but it's not mapped to Chat. It's mapped to Quick Post (or whatever you want to call that), and compliments Quick Local Command and Quick Server Command (which also close automatically once you post). If you wanted to "chat", semantically, then you would toggle the console (which uses a different binding).

carlsmith commented 5 years ago

To be honest, the negativity that I received for suggesting we redo the default keybindings for new users has undermined any motivation I had to contribute here. Your community sucks.

GreenXenith commented 5 years ago

Your impatience sucks. The default keybinds are already designed to be fairly intuitive for new users. The only things I have changed in my personal layout is using E for inventory and LCTRL for sprint (Minecraft controls). T is mapped to chat because it is chat. F10 is a full console. Minecraft behaves the same; T is chat, and it closes once you post because that's how chat works in these sorts of games.

carlsmith commented 5 years ago

My impatience?? Am I meant to wait for the six downvotes to be offset by seven upvotes? I came here to help, and got told where to go. I'm fine with that, and will just go.

benrob0329 commented 5 years ago

Mate, your suggested control scheme got downvoted. You also received a bit of constructive criticism. You were not told "where to go" or that the controls don't need to be redone. Not everything will be met with great reception, and sometimes it's better to split the general suggestion to discuss from a suggested change, otherwise the criticism for both will be lumped together.

I take the most issue from the odd naming you gave to all the controls to try and explain them. But they don't need to correlate with the control letter (that's how we got I for inventory, which is the biggest mistake of our entire control scheme imho).

Controls should be based on standard practice and comfort of reach from the standard WASD resting position.

carlsmith commented 5 years ago

@benrob0329 - My control scheme was suggested as one possible starting point (I have to propose something concrete), and its layout does emphasize the "standard practice and comfort of reach from the standard WASD resting position". That's the starting point for everything I suggested.

The names are simple mnemonics to help new users to learn what each key does. If every initialed key (with WASD and X as edge cases) maps to an action with a name that starts with the same initial, it is far easier to learn than the seemingly arbitrary scheme we have now. However, the names are created retrospectively. I did not just make up names I thought sounded cool, then bind stuff wherever the letter happened to be. I just assumed that didn't need explaining.

As for the criticism, I was having a conversation with half a dozen people about fixing something that they had already indicated wasn't a problem. I didn't know that they had all downvoted the basic proposition, before bikeshedding ideas with me anyway. It made no sense to me when I noticed, so I basically said so, and went to leave. I'm only here now out of respect for the fact that you took the time to respond to me.

carlsmith commented 5 years ago

The default keybindings are objectively awful. Gamers can configure things however they like, but the defaults should be optimized for ordinary people to pick up and play the game, which requires mnemonics. I went with the simplest scheme I know of, actions with names that map to letter keys, but apparently, that's too odd, so I'm at a loss.

GreenXenith commented 5 years ago

which requires mnemonics

Not at all. Minecraft does just fine, and it's player base is young children. The defaults should be set to what people should expect from games, which by now is WASD and surrounding keys.

carlsmith commented 5 years ago

That's why I used WASD and the surrounding keys. I just also created mnemonics. You can ignore them if you're all grown up, mate.

GreenXenith commented 5 years ago

Children play games on Playstation and Xbox controllers. There is no mnemonic correlation whatsoever, and they do just fine. The only reason I disagree with this issue is the fact that almost no one up to this point has had such a major issue with the current defaults.

carlsmith commented 5 years ago

Children play games on Playstation and Xbox controllers.

Because that's just like a keyboard and mouse.

The only reason I disagree with this issue is the fact that almost no one up to this point has had such a major issue with the current defaults.

Well I obviously did. That's why we're here.

G'night, guys. Have fun.

GreenXenith commented 5 years ago

Because that's just like a keyboard and mouse.

A keyboard with 4 letters/shapes, 4 arrow keys, and 4 other buttons. Yes, I totally see how that is like a keyboard and can be mapped mnemonically.

paramat commented 5 years ago

carlsmith, don't take too much notice of emoticons (i don't like negative emoticons and wish GitHub didn't have them), even if it was from those discussing. What matters is the discussion and ultimately, support from core devs. You really didn't get a hard time in this thread so it's surprising you left (with an insult for all of us) so easily. I can't see any negativity, just good discussion and some disagreement.

I think that control ergonomics and grouping logic is more important than having keys match the word of the action. Even though you are keeping ergonomics in mind, mnemonics add unnecessary limitations to the system. All people soon learn controls even if the letter doesn't match a word for the action. Your system also then has to use some awkward words to do this, like Extend, Utter. For example, H and L controlling view range is awkward, they aren't next to each other.

Some of your ideas may be good, like M for minimap.

but to people starting to play Minetest these days, many of the defaults make little sense,

The default keybindings are objectively awful.

We currently do not have a large number of complaints about the default keybindings, so this is not the case. You may not like them, but they have been discussed and optimised over years, so they will be reasonable.

established users almost always have local configs defined

I don't, after 7 years i only have 3 keybindings configured.

The defaults probably ought to be close to what Minecraft uses as that is likely what a lot of people who play this are also used to playing.

We don't let MC define MT. MC is on the decline now anyway.

benrob0329 commented 5 years ago

MC is on the decline now anyway.

Actually MC is having a resurgence lately.

paramat commented 5 years ago

Ok that's good to hear.

I think the issue with complete systems of keybindings, as in this issue, is that a consensus is impossible, everyone wants/needs/likes something different. So it's somewhat pointless doing a complete overhaul, it won't necessarily be preferred by new players, and it is disrupting for existing players. Better to make small, gradual heavily-justified changes, which is what we have been doing all along.

EDIT: So to be clear i am :-1: for the original suggestion.

ClobberXD commented 5 years ago

I'm in support of changing minimap key to M. Minimap shape toggle can be Shift + M.

Mute (currently bound to M) can be bound to some other obscure key by default (another F- key, maybe?). Users using keyboards with media keys can bind this to a dedicated key if required.

Wuzzy2 commented 4 years ago

I think most keybindings we currently have (5.1.0) are perfectly fine, with only a few exceptions:

LoneWolfHT commented 4 years ago

I do M for my minimap, V for autoforwards, f7 for Camera changes, and N for mute

paramat commented 4 years ago

This discussion should move to #6374 and #6995