Customizable hotkeys for a minor update?

Started by namida, October 11, 2015, 03:43:25 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

namida

I think customizable hotkeys is one of the most major desired features for V2.00 - but it's also one that I might actually be able to implement without too much problems in a minor V1 branch update. It'll be in a limited form - don't expect anything like reassigning the mouse buttons - but should I try to get this in? The reason I ask is becuase some people have mentioned it as being the biggest off-putting thing about NX1; so this might perhaps open up more custom content to more people sooner than having to wait for the major update.

I would most likely save the config in a seperate file from the save file, so that it can be easily copied between various NeoLemmix players (to avoid having to reconfigure it for each one).
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

I would greatly appreciate it. :) Just being able to remap what is currently mapped to various keys would make the whole game a lot more enjoyable to me. Thanks for the thought! :)
To then play some of the big packs with the customizable hotkeys I'd have to contact the respective authors to compile they level pack with the new player, right?

Taken from the discussion thread, these are the hotkeys that I use in Lix excessively, and how their equivalents in NeoLemmix would look like:
Skills (16 hotkeys in the right half of the keyboard, one for each)
Pause (Space)
Directional Select (J/L)
Force Walker Selection (Middle-click or Right-Click, which I think is already supported via the inversion option)
Save / Load State (F7/F9)
Fast Forward (')
Quick Restart (0)
Time Skips (8 for +10 seconds, something for -1 second, +1 frame is currently mapped to mouse click and I actually like it like that)

Those too, but they reachability isn't as important:
Nuke (F12)
Exit Level (Esc or \)
Save / Load Replay (somewhere on the left)
Release Rate Change (F1 / F2) (Right Click + / - on the panel to set to max/min)

The one most important thing is that the skill hotkeys should not be bound to the position of the skill in the panel, but to the actual skill, i.e. there should be 16 different (or partially overlapping, e.g. I could imagine assigning the same hotkey to floater and glider) hotkey slots for these, one for each skill.

IchoTolot

Quote from: geoo on October 11, 2015, 09:31:55 AM
I would greatly appreciate it. :) Just being able to remap what is currently mapped to various keys would make the whole game a lot more enjoyable to me. Thanks for the thought! :)
To then play some of the big packs with the customizable hotkeys I'd have to contact the respective authors to compile they level pack with the new player, right?

Taken from the discussion thread, these are the hotkeys that I use in Lix excessively, and how their equivalents in NeoLemmix would look like:
Skills (16 hotkeys in the right half of the keyboard, one for each)
Pause (Space)
Directional Select (J/L)
Force Walker Selection (Middle-click or Right-Click, which I think is already supported via the inversion option)
Save / Load State (F7/F9)
Fast Forward (')
Quick Restart (0)
Time Skips (8 for +10 seconds, something for -1 second, +1 frame is currently mapped to mouse click and I actually like it like that)

Those too, but they reachability isn't as important:
Nuke (F12)
Exit Level (Esc or \)
Save / Load Replay (somewhere on the left)
Release Rate Change (F1 / F2) (Right Click + / - on the panel to set to max/min)

The one most important thing is that the skill hotkeys should not be bound to the position of the skill in the panel, but to the actual skill, i.e. there should be 16 different (or partially overlapping, e.g. I could imagine assigning the same hotkey to floater and glider) hotkey slots for these, one for each skill.

I can make a patch with the new version if the Flexitoolkit is also updated. It would include the new player together with some little changes I want to make (Simon also found a little backroute in the 2nd rating :P)

namida

#3
QuoteThe one most important thing is that the skill hotkeys should not be bound to the position of the skill in the panel, but to the actual skill, i.e. there should be 16 different (or partially overlapping, e.g. I could imagine assigning the same hotkey to floater and glider) hotkey slots for these, one for each skill.

Keys will be possible to tie to the skill (this is already the default setting (although positional keys does exist as an option) with the non-customizable hotkeys).

Keep in mind though, that this will be a quick-but-functional implementation. Multiple functions for the same key is not going to be supported. I also don't plan for customized keys to work outside of gameplay (ie: menu hotkeys won't be customizable), though I'll probably make exceptions for I on the preview screen and U on the postview screen (save image and save replay respectively) since these are essentially in-game hotkeys that also work slightly outside of gameplay.

A user's custom hotkey configuration will be saved in a file "NeoLemmixHotkeys.ini" in the same folder as the EXE; so other NeoLemmix EXEs in the same folder will pick up on it (and it can be copied / pasted to others).

If you can see any major problems with this implementation, feel free to point it out - but minor things or requests like "well multiple functions on same key should be supported" are not going to be considered, as this is (as is the case with everything in NX1 now) a temporary measure and I'm not worried about trying to make it perfect - as long as it works, and doesn't have unexpected behaviour (such as a key reverting to default under specific, unexpected circumstances), it's fine.

EDIT: Did a partially-implemented test run (with only a few functions moved to customizable hotkeys); it seems to work fine. :D Now, to move all functions to the customizable keys and see if that works...
EDIT: Alright, seems to be all working now. Including - frame skips (both forwards and backwards) can be of arbitrary sizes.
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

I've sent both of you a preliminary test version with this feature implemented. Let me know if you encounter any problems.
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

In addition to the default NeoLemmix hotkeys, I'm wanting to provide a default "Lix-like" set that should be more convenient to Lix players (without having to go through the hassle of customizing it by oneself). Based off the Lix defaults, I've come up with the following; let me know if you think there should be any changes.

Note that time skips (both backwards and forwards) can be of any arbitrary length, but everything else is pretty much limited to exactly what's offered here:

Backspace      Cheat
Enter         Save Replay
Shift         Select Cloner
Ctrl         Force Selection Of Previously-Unused Lemming
Alt         Show Extra Athlete Info
Esc         Quit
Space         Pause
1         Decrease Release Rate
2         Increase Release Rate
3         Skip Forward 1 Frame
4         Skip Forward 170 Frames (10 secs)
5         Fast Forward
6         Skip Back 1 Frame
A         Select Builder
B         Select Climber
C         Select Stacker
D         Select Walker
E         Select Basher
F         Directional Select Right
G         Select Miner
H         Select Swimmer
I         Save Image
L         Load Replay
P         Pause
Q         Select Floater
R         Select Glider
S         Directional Select Left
T         Select Platformer
V         Select Bomber
W         Select Digger
X         Select Stoner
Y         Select Disarmer
Z         Select Blocker
Minus         Force Selection Of Walker Lemming
F1         Restart Level
F2         Load State
F5         Save State
F11         Pause
F12         Nuke
~         Skip Back 17 Frames (1 sec)


Note that this is meant to be based off the Lix defaults, so changes are most likely only going to be considered in cases of functionality that doesn't exist there but has been given a key because it's fairly important in NeoLemmix (eg: a suggestion that the Cloner and Glider keys should be switched), or where there's disagreement on the best way to resolve a conflict (as Lix's defaults have some cases of multiple functions mapped to the same key).

Just to be clear - this update only supports one function per key. However, it is possible to assign more than one key for the same function (eg. how both the defaults, and the Lix-like setup, have multiple Pause keys).
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

So far, it's looking good for the new update - which is going to be labelled V1.36n rather than V1.35n-D, as the introduction of the customizable hotkeys is a bit too major for a sub-version IMO. If no issues are found soon, I'll probably release the update later this week.
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)

Simon

Copying the defaults is good, even if it's not 100 % what I'd use.

I'm hesitant to tamper with default settings in Lix. Some things are only default because they've been default for a while.

I'd switch Select-only-walker and select-previously-unassigned. Reason: Lix's select-only-walker is mapped to RMB in addition to the settable hotkey. Pad-Minus is the rubbish key where unneeded things are bound to. Select-only-walker is more important than select-previously-unassigned.

-- Simon

namida

#8
Why bind the key at all in that case? Does Lix not support having no key binding for features?


Anyway, since the private testing of this feature seems to have gone well, time for some public testing. You might've seen I recently discussed making a second Lemmings Plus Flashbacks pack (for those who haven't heard it - Lemmings Plus Flashbacks is a small compilation pack of the best levels from Lemmings Plus I, II and III; the new pack is the same but for Lemmings Plus Omega, Holiday and IV); well I've released a test verison of it, and it's based on new enough code to include the customizable hotkeys feature. So... enjoy! :)

http://www.lemmingsforums.net/index.php?topic=1922.msg53927#msg53927 (Topic)
https://www.dropbox.com/sh/cvpszccwk2ms6c8/AAD_VpW4IxD4ezKtnsPELGeRa (Direct link to downloads; note that the music pack is optional (but recommended))


For those who want a setup more similar to the Lix defaults rather than the NeoLemmix defaults, pop this in the same folder. Alternatively, just go into the config menu (F3 on the title screen) and select the Configure Hotkeys option to choose your own.
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)