Page 2 of 4

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Fri Mar 06, 2015 16:14
by Wuzzy
Arguing for which keybindings to use is likely going to nowhere. Everyone has own preferences, also different keyboards. Also, if Minetest's controls system is sane, everyone can configure it to one's needs.

Of course there need to be default controls, but IMO this is only of low importance; please don't let us waste too much time here, shall we?
It is more important to have sane controls to which keys can be mapped to to begin with. If the controls as such are messed up, then any discussion about which keys to used for those messed up controls is missing the core of the issue.

My key point of this thread: I am not at all arguing that <function X> needs to be mapped to <key Y>. I am arguing that the features as such should available as independent units. My problem with the controls was that it currently is a large mess, conflating many things into a single function, etc.

How about supporting 3 button mouses?

Yes, but only if this is also configurable. What is more important IMO is to allow to change all bindings which are gameplay-related. This includes mouse buttons. Debug keys would be nice, but are not as much important. (And they already can be configured in minetest.conf).


IDK what the "use" key means, but whatever.

It means that it is useless. LOL.
OK now for real:
When you are in fast mode, but not in fly mode, the use key makes you run fast.
You can also configure in the keybindings menu that this key is used to climb/swim down, as an alternative to the sneak key.
The use key (like a few other keys) can also be recognized by mods. For instance, the Sprint mod uses this key by default to sprint.
Too bad if there's two mods using the use key, then you have a problem.
Things become interesting if you have both configured the use key as “climb down” key and are in fast mode but not in fly mode. Then pressing the use key makes you go fast, except when you are in a liquid or on a ladder. Then it makes you go down.
Same when you are in fly mode. In fly mode, you are automatically fast, so the use key makes you go down again then.

The funniest thing about the use key that it does not really have something to do with using.

IMO the “use” key is the weirdest control in Minetest. It is the perfect example of how messed up the entire controls system in Minetest really is.

As for the other controls: I still hold (mostly) the same opinion as of the first post, since not much changed (at least the F4 problem is not finally solved!).

Some recent useful keys have been added since then:
  • F7: Change camera
  • F8: Toggle cinematic mode (“lazy” camera)
Both keys can not be remapped in-game (but should).

Edit:
I have tried to improve the controls menu in Minetest a bit by adding some controls (change volume, cycle through hotbar), but it never got merged.
https://github.com/minetest/minetest/pull/1439

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Fri Mar 06, 2015 21:55
by rubenwardy
What are you talking about? F8 can be remapped. I wrote it.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Fri Mar 06, 2015 22:17
by 12Me21
Can mods detect all keys?
For example, could I have a mod test if you press, for example, "B" regardless of your control settings?
(I don't think so)
If not, then allowing this would be a step in the right direction (if used correctly)

Ok, the controls that can be changed should be:

"forward" -walk forward
"backward" -walk backwards
"left" -walk left
"right" -walk right
"up" -fly/climb up
"down" -fly/climb down

"jump"
"sneak"
"run"

"noclip" -toggle noclip
"fly" -toggle fly mode
(fast is activated by "run")

"inventory" -open inventory
"drop" -drop item

"place" -place node
"break" -break node/attack

"alternate" -by default is set to SHIFT, like in shift-clicking. (does not mean the [alt] key on the keyboard)!

"switch gui" -cycles through: normal gui, normal with f5 menu, and nothing.
"perspective" -switches between 1st, 2nd, and 3rd person view
"screenshot"

now what am I forgetting?

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sat Mar 07, 2015 05:20
by Wuzzy
What are you talking about? F8 can be remapped. I wrote it.

Oh, I see. But only in dev so far. See, I don't use dev all the time, I prefer “stable” versions. ;-)
Well, at least that's fixed now. Good to know.

Still, F7 can not be remapped at all in-game.


Can mods detect all keys?

No.

Also, 12Me21, I do not agree that all controls should be detectable. It is none of the servers business when a player takes a screenshot, changes the GUI and other purely client-sided stuff.
However, I do agree that the mods should at least be able detect a couple of more controls, as long as they are gameplay-relevant, i.e. toggle fly mode. But nothing client-sided stuff, this is just waste of bandwidth.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Mar 10, 2015 12:20
by 12Me21
so what CAN mods detect now?
I know they can detect the movement keys (forward, backward, left, right, up, down), the "use" button, right/left click/shiftrightclick/shiftleftclick, but what else?

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Mar 10, 2015 12:31
by Wuzzy
@12Me21:

As of Minetest 0.4.12, by using the method get_player_control_bits(), you can tell when these controls are pressed:
  • Up
  • Down
  • Left
  • Right
  • Jump
  • Use
  • Sneak
  • Punch/collect item/… (currently fixed to left mouse button)
  • Build/Place/Interact with pointed block (i.e. chest, furnace) and so on (currently fixed to right mouse button)

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Mar 10, 2015 13:55
by 12Me21
Wuzzy wrote:@12Me21:

As of Minetest 0.4.12, by using the method get_player_control_bits(), you can tell when these controls are pressed:
  • Up
  • Down
  • Left
  • Right
  • Jump
  • Use
  • Sneak
  • Punch/collect item/… (currently fixed to left mouse button)
  • Build/Place/Interact with pointed block (i.e. chest, furnace) and so on (currently fixed to right mouse button)


What about forward/backward?

anyway, this seems like a pretty good amount of controls to detect. Maybe there should just be 1 or 2 more buttons for misc. functions.

It can detect sneak separatly from down? and jump/up? is it possible to set those to different controls?

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Wed Mar 11, 2015 23:08
by Wuzzy
Well, Up is for Forwards and Down for Backwards. I messed that up, sorry.

Also, you are frequently repeating stuff which I have already suggested before.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Wed May 27, 2015 01:50
by Kinsbane
I am used to using my middle mouse button as my jump key in Minecraft, so using a key feels awkward to me. I agree with Wuzzy in regard to making the key and mouse bindings fully user configurable. Even if it's only by manually editing the minetest.conf file at first, this way the effort of adding it into the user interface could be postponed.

Also, here's a new idea. I'd like to have toggles available for running and sneaking. (Not bound to a key by default, as I think sticking close to Minecraft's bindings by default is the way to go.)

In many cases you want to run a really long distance, or maybe do a bunch of build stuff while you're sneaking so you don't fall off the edge of something. It can get to be a hassle having to hold down the run key or the sneak key for long periods. Just tapping a key once to toggle the mode would be great. I currently do this now with an n52 keypad, but it's a sloppy workaround compared to having a binding for it available in game.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Thu May 28, 2015 13:57
by ABJ
I guess it's because it's simpler and I'm used to it but I like MT as it is better.......only complaint is dropping is too easy by default, which can lead to some catastrophic results if you forget to remap. (Happened to me on Gabo's Server, lost a few STACKS of torches and nearly lost my 2 tron pickaxes) And I feel that inventory should be E instead of I by default.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sun May 31, 2015 03:16
by Sokomine
Kinsbane wrote:It can get to be a hassle having to hold down the run key or the sneak key for long periods. Just tapping a key once to toggle the mode would be great.

Definitely! It's terribly annoying to press W all the time - sometimes in combination with E. Or to jump manually. What I'd love to have is slightly diffrent from what you proposed: I'd love to turn "walk forward (fast)" on and off, without having to hold a key down all the time.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sat Jul 04, 2015 16:15
by Dragonop
Just read something.
E should be unused. E is one of the best keys for opening the inv, but a lot of people still like I or B the most.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sun Jul 05, 2015 12:31
by Ben
I'd like to see the "use" key get more use, as it were. I agree with the above proposal(s) of having "use" mean an interaction on the object alone, or between the object and the player, without context (without a thing pointed at). Like eating, drinking potions, or switching modes on a screwdriver.

A vaguely related idea I've had for a while: more "inventory" keys. At the moment, we basically need to make the inventory (screen) do everything. What I'd like are keys for "player status", "equipment", "quest log", "map", "achievements", "scoreboard" etc – things that do not and will not exist in minetest_game, but could be of interest to other games. All it would need is for the Minetest engine to recognise these keys, and allow to rebind them, and let games or mods react to them as they see fit.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Jul 06, 2015 19:39
by Ben
Ok, after mulling over the original question, here's my proposal:

Left mouse button: apply the wielded item to the node being pointed at.
Right mouse button: use the node being pointed at.
Use key: use the wielded item regardless of the node being pointed at.

The strongest consequence: you would use the left mouse button to dig if you're wielding a digging tool or your hand, but also to place nodes if you're holding a placeable node. So you can no longer dig with a placeable node.

Examples:

Wielding a shovel (or your hand): left click on a dirt node digs the dirt, left click on a door digs the door. Right clicking a door opens the door, right clicking a dirt block does nothing (a dirt block has no function itself). Hitting the use key also does nothing (a shovel has no function on its own).

Wielding an apple: left click on a dirt node digs the dirt (if everything defaults to digging), left click on a door digs the door. Right clicking a door opens the door, right clicking a dirt node does nothing. The use key eats the apple (the apple's actual function).

Wielding a dirt block: left click on a dirt node places a dirt node, left click on a door places a dirt node in front of the door. Right clicking a door opens it, right clicking a dirt node does nothing. The use key again does nothing.

Wielding a screwdriver: left click on a dirt node rotates the node, left click on a door rotates the door. Right clicking a door opens the door, right clicking a dirt node does nothing. The use key cycles through the screwdriver's modes.

Wielding a sword: left click on a dirt node or door does nothing (say to prevent accidental digging), left clicking an entity attacks it. The rest as per shovels.

Dropped items are picked up with the right mouse button.

This is probably less efficient than other systems, but I feel it is a lot simpler and more logical. One problem would be creative mode, though, where having "destroy node" and "place node" available without cycling through the toolbar is more important. I'll have to think about this some more.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Jul 07, 2015 00:17
by Dragonop
Ben, your idea of placing blocks is any good. Mainly in servers, because a there are a lot of people out there that will click everything. Also it will be anoying, and most people will not be used to it. It could make a lot of potential players fall back.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sat Jul 11, 2015 12:04
by Ben
Dragonop wrote:Also it will be anoying, and most people will not be used to it. It could make a lot of potential players fall back.


Yep, the "not used to it" argument is actually quite strong. But that counts against any change proposal here ;-)

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Jul 13, 2015 13:46
by Dragonop
12Me21 wrote:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
Code: Select all
    Q W E R T         
     A S D           
SHIFT Z X C       
CTRL     SPACE


I use that layout as well, but your Q is my F.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Jul 13, 2015 19:59
by ABJ
I'll accept it as long as there is a way to revert it to old settings.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Jul 14, 2015 22:43
by Dragonop
ABJ wrote:I'll accept it as long as there is a way to revert it to old settings.

+1

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Fri Jul 17, 2015 20:53
by Glorfindel
I like them the way they are.
Most of them I figured out on my own, and hitting Escape shows the rest of the controls that you need to play the game.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sat Jul 18, 2015 10:53
by Dartmouth
Yes, but there are issues with them as they are right now, for example the use key is used for a lot of different things, instead of moving some uses out to other keys, and (one thing that annoys me sometimes) the drop button is right next to the move buttons...

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sun Jul 19, 2015 12:23
by PoignardAzur
My take on the problem :

In minecraft-type games, there are two classes of buttons : those triggering an 'aimed action' (punching, placing blocks, anything that requires aiming), and those triggering a 'free action' (jumping, sneaking, etc). Intuitively, all the aimed buttons should be on the mouse, and the free buttons on the keyboard. Since the debates seem to mostly revolve around the aimed actions, I'm going to cover them and ignore the rest.

Right now, there are five aimed actions :
- Punching
- Mining
- Using an item
- Dropping an item
- Using a node
But there are only three buttons on baselines mouses. And it gets complicated when you want to add a secondary use to your item.

Minecraft has one more action (copy block), and solves this problem by putting 'drop item' on the keyboard, and merge using items and using nodes on the same button, which works... well-ish.

Now, the controls of minetest are all over the place. Left click is both 'punch'/mine', 'secondary item use' (for food and for the screwdriver), and 'pick up item'. Right click is both 'use item' and 'use node', and the 'Use button'... is used for sprinting and climbing down, I think ? Yeah.

My proposal would something along those lines :

- First off, every button should have a clear semantic, and any action attributed to it should fit directly into this semantic. So, for example, left click is for acting outward, or destroying things (not picking up items). Right click is for using what's in your hand (not opening chests). And use key should be for using nodes or entities you're aiming at (trading with NPCs, using nodes, etc). That is an example, mind you, the important part is not the exact configuration, but the presence of strong semantics.

- Second, every input should have only one possible interpretation in any given situation. There shouldn't be a situation such as 'pressing this key makes you eat your sandwich, unless you're standing in front of a door'. So you can have several functions on one key (for example, using a chest and picking up an item, since you can't aim at both at a time), but only if they don't collide.

With that in mind, here's a loadout example :

- Left click is attributed to punching, and mining (since there's no way to do both at once), and only those.
- Right click is attributed to the primary use of your item (eating food, placing a block, shooting an arrow)
- Wheel click is attributed to interacting with nodes, or entities, whatever you're aiming at. You use it to pick up items, open chests, pet dogs, or pull levers.
- A keyboard key (let's say, 'R') is attributed to secondary use of your item. You rarely need it, but with it you can place food as a block (apples !), swap axes with the screwdriver, etc.
- A keyboard key (let's say, 'T') is attributed to dropping items.
- And finally, a keyboard key (let's say, 'Q') is attributed to switching to secondary function. It's the equivalent of minecraft's 'sneak to place a torch on a furnace'. So 'Q' + 'Punch' is 'Drop' (similar semantics, left click is an outward action), 'Q' + 'Use item' is 'Use secondary item function'. You can also attribute the function to a mouse side-button, and thus be able to perform all aimed actions without touching the keyboard.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Wed Jul 22, 2015 02:08
by Dragonop
PoignardAzur wrote:- Left click is attributed to punching, and mining (since there's no way to do both at once), and only those.
- Right click is attributed to the primary use of your item (eating food, placing a block, shooting an arrow)
- Wheel click is attributed to interacting with nodes, or entities, whatever you're aiming at. You use it to pick up items, open chests, pet dogs, or pull levers.
- A keyboard key (let's say, 'R') is attributed to secondary use of your item. You rarely need it, but with it you can place food as a block (apples !), swap axes with the screwdriver, etc.
- A keyboard key (let's say, 'T') is attributed to dropping items.
- And finally, a keyboard key (let's say, 'Q') is attributed to switching to secondary function. It's the equivalent of minecraft's 'sneak to place a torch on a furnace'. So 'Q' + 'Punch' is 'Drop' (similar semantics, left click is an outward action), 'Q' + 'Use item' is 'Use secondary item function'. You can also attribute the function to a mouse side-button, and thus be able to perform all aimed actions without touching the keyboard.

-Your wheel layout sounds promising, but what about touchscreens and people without a wheel?
-Why should you use a key to do the "Sneak to place torch in furnace" while you actually can use the Sneak button for this?

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Wed Jul 22, 2015 18:30
by PoignardAzur
Dragonop wrote:-Your wheel layout sounds promising, but what about touchscreens and people without a wheel?

People without a wheel can change the settings. They are rare enough that default settings shouldn't take them into account. On the other hand, people without side buttons on their mouse are much more common. I have no idea what the touchscreens controls should be like.

Dragonop wrote:-Why should you use a key to do the "Sneak to place torch in furnace" while you actually can use the Sneak button for this?

In minenetest_game, doesn't make a difference. But it's bad programming : the Sneak button's semantic is "you crouch down and become quiet", not "you use your hands differently". So if you want to make a mod where, for example, punching people while sneaking deals more damage, or eating an apple while sneaking makes the eating more quiet, you can't, even though the impossibility is totally arbitrary.

Those considerations aside, you can always assign sneaking to one button, "switch to secondary use" to another button, and if people want to use both at the same time, they assign both commands to the same button. I'm not sure this is actually possible in minetest right now, but... well, if it's not, it really should be.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Wed Jul 22, 2015 23:36
by Dragonop
Interesting point of view PoignardAzur, I always have thought of the sneak key as a "do things careefully" That's why you used your hands diferently :P

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Aug 10, 2015 15:40
by benrob0329
I personaly like MT's controls, especially now that we have the shift+click item-into-chest/furnace/ect control.

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Aug 10, 2015 17:59
by Dragonop
benrob0329 wrote:I personaly like MT's controls, especially now that we have the shift+click item-into-chest/furnace/ect control.

+1

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Mon Aug 17, 2015 17:44
by Samson1
rubenwardy wrote:Most of these I agree with, but not the punching / right clicking.

I am with you on that one:D

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Tue Aug 18, 2015 18:31
by Ferk
PoignardAzur wrote:- Left click is attributed to punching, and mining (since there's no way to do both at once), and only those.
- Right click is attributed to the primary use of your item (eating food, placing a block, shooting an arrow)
- Wheel click is attributed to interacting with nodes, or entities, whatever you're aiming at. You use it to pick up items, open chests, pet dogs, or pull levers.
- A keyboard key (let's say, 'R') is attributed to secondary use of your item. You rarely need it, but with it you can place food as a block (apples !), swap axes with the screwdriver, etc.
- A keyboard key (let's say, 'T') is attributed to dropping items.
- And finally, a keyboard key (let's say, 'Q') is attributed to switching to secondary function. It's the equivalent of minecraft's 'sneak to place a torch on a furnace'. So 'Q' + 'Punch' is 'Drop' (similar semantics, left click is an outward action), 'Q' + 'Use item' is 'Use secondary item function'. You can also attribute the function to a mouse side-button, and thus be able to perform all aimed actions without touching the keyboard.


That's a very smart and clean design.

However, considering how comfortable it's to right click (vs middle click) and how rare it's the situation of wanting to use an item while you are pointing to a block (for placing blocks you can even circumvent it most of the time), I think it's too convenient to have right-click being context sensitive.

This also means you can more comfortably play in a touchscreen (double tapping is the equivalent of right click in the android port). You can easily double tap to place a block or to use the environment depending on where are you looking at, instead of adding yet another onscreen button. It might also make it easier to play on a gamepad that doesn't have that many buttons.

But I agree on 2 points:

  • The eating control is broken. No matter how you put it, it's inconsistent to have the eating function be assigned to left click. It's frustrating to find situations where you might be crazily smashing the attack button without realizing your stack of bread is going down (it doesn't even have a different animation/delay so it's also very unfriendly for newcomers).
  • The screwdriver mechanic to switch axis is totally esoteric.
For this I do think minetest does need a "secondary use" button for the items we hold. Maybe it makes sense to rework the "use" button and make it actually useful...

Re: Proposal to improve Minetest’s horrible controls

PostPosted: Sat Sep 12, 2015 21:20
by Jordach
Right now, I've just made a pull to make filling and emptying of buckets use entirely right mouse, or whatever counts of the build key for you.

Anways - this changes it so filling the bucket no longer needs left mouse, and makes the controls far more consistent.

(It also makes blocks and entities that use on_punch work correctly!)

https://github.com/minetest/minetest_game/pull/673