Jump to content

Page 7 Keybind System Changes — Technical Discussion


Recommended Posts

I think the topic of P7 changes to keybinds and bind management deserves a fresh take, perhaps with more of a focus on facts. I thought the technical and gameplay issues were clear but the official viewpoint seems to differ. Some users have made good points and/or asked good questions... so let's take this from the top. Ringing in @BlackSpectre and @Number Six as interested parties.

 

Legacy Keybinds Features (through 27P6)
From the original launch of the game through Issue 27 Page 6, keybinds were a transparent, accessible part of the game UI. Basic users could make changes using the menus; slightly more savvy players could write and implement a few helper binds for their alts and play style; some lunatic faction could rip up the whole keyboard assignment and remap it in extreme ways, adding complex multifunction binds like nothing found in the original set.

 

What enabled this more than anything else was that binds were a transparent configuration element, easily accessible by saving the bind strings to a local text file. Anyone could dump out all of the 'raw code' that connected each key to a game function.

 

  • (This parallels the windows and options settings, which can be dumped out in raw form to their own files, for the curious to look at and the savvy to tweak in one way or another, bypassing the endless menus or slightly fussy command-driven changes. While it's likely very few users have edited the windows file and reloaded it, some larger number have both learned the scope of the games "options" from this file and used the save/load process to tweak them wholesale, or in ways not supported by menu options.)

 

Most importantly, the bind-save functions saved ALL binds. Combat control, configuration, chat, UI changes, even emotes. Even ones not listed in the menu. Furthermore, it listed then in valuable raw-code form, not as interpreted by menu item names and limited options with names chosen by one Dev or another over 19 years. It also saved out any custom binds entered by the user for that alt. An edited file could be uploaded in one command, either to update an alt or to transfer those binds to second alt—or a second player.

 

This simple, transparent look of download-modify-upload is at the heart of investigating, learning, modifying and expanding the game's keyboard UI system. This is no small thing given that not all games support this much direct configuration and that once players learn how much they can tweak, there's no end to finding the right "keyboard build" for each player, AT and alt.

 

  • Just to make it clear, keybinds are not some system tacked on to the game, a side feature to allow key customization. They're not something optional or irrelevant. The game has only a few truly hard-coded keys. Absolutely every other button you push, at any time, for any reason, is a keybind—a defined link in this file and configuration map that says [DO THIS] when [KEY x] is pressed. The whole user input system is keybinds. And all but a very few can be remapped or changed or extended in any way that makes sense to the individual player. In other words... there are NO truly standard or dedicated game keys, as some players believe.

 

While many of the "default" binds may never be changed by even the most mad bind maven *cough*, knowing what they are and being able to examine how all those keys are used (again, including some that are not accessible through the menu system and not fully documented in other ways) is an essential part of understanding how it works so that sensible mods can be developed. The "default" binds also go considerably past the dozen or so dedicated to realtime gameplay (movement, combat, interaction) and into dozens that manage windows, the UI, info lookup and such... and many of those are prime candidates for remapping to more sensible, organized, modernized, "better" keys.

 

So for 19 years, players with any degree of curiosity or wish to customize had unlimited access, not to an official description or list or menu of keybinds... but to ALL of them at that raw code level. And that level of access and understanding has enabled some amazing mods, improvements and UI enhancements.

 

Keybind Changes with Page 7
With the release of Issue 27 Page 7, a major change was made to the keybind system. The bind-save commands were changed so that no "default" binds were exported to the save file. Instead of some 100 bind definitions, of use for understanding each command and the feature overall, and as guides for potential change, only custom, user-uploaded binds are saved. Everything else disappears into one line, "key_profile name."

 

There is no longer any way to extract the base, default, predefined keybinds from the game.

 

The only access options to default binds are—

  • to use the menus, which are not nearly as useful in any way and are subject to layers of "interpretation" that is often vague or even misleading. It can be hard to match a key/command to a menu description.
  • to call up the bind for any one key using /showbind, which—
    • produces only a system chat line that must be copied out for study and editing, and
    • requires that the user know the exact name of the key involved, which — as anyone who's worked with binds knows — is not intuitive for more than half the keys on the keyboard. It's like magick: you have to know the "true name" of the key before you can even ask it what it does.

 

This, in my opinion, based on nineteen years of mucking around with and documenting this feature of the game, is crippling to both keybind newcomers and the middle range of bind hackers. It takes something that was instantly accessible in "whole form" and turns it into a process of laborious steps and fumbling research just to change, say, the Enter key on the numpad. (I suppose already-advanced bind hackers have the default list on file... but of course they can't easily update it. Ditto for the notion that the list might be downloadable from somewhere; the game does not have a good history of docs and support being anywhere near up to date.)

 

I also see this change as having the potential to cause unnecessary havoc for the unwary. Someone circling back to the game after all the recent changes and news might start by saving down the binds... and overwrite their only copy of the file, which now is missing all of the static entries. They're at square one except for whatever custom binds were preserved. That there is no slightest notice or warning of this change, and thus this danger, makes it worse.

 

This IS a change, and not a small one to be waved off. It throws up a huge, permanent hurdle to keybind customization, and even with the workarounds, will mask release-to-release development changes that would be easily discoverable with the former "dump 'em all" access. If Devs decide that bind changes "aren't a change" and don't note them in the patch notes, or bury them in a vague line about fixes, it will be very difficult to find such changes, much less know they occurred.

 

And no, the menu is not a substitute; while things like "A" == "left" are fairly simple, that doesn't really note that the actual string is A +left... that the actual key names are the first puzzle that has to be solved, the actual slash command/s assigned are another, the format of those commands (and any arguments) yet a third. Making any but a few piecemeal changes has been made so difficult that even interested users will probably no longer bother, and that's a wholly unnecessary loss of a precious and useful game asset.

 

The argument thrown back on this was that "nothing was changed, and nothing was 'broken.'" Well, if you tear up a library's card catalog, you could argue that nothing has changed because all the books are still on the shelves... but good luck finding them without hours of searching for each one.

 

I maintain that removing this simple feature, that of being able to list out ALL binds, is a major change, bordering on a breakage of user ability to customize their UI, and it should be reverted.

 

Profiles
What explanation has been given for this change is that the bind system code was incomplete, or not well implemented, or didn't "work as originally intended" or some such. All I can do is note that it's worked fine for 19 years, and if this is yet another area where mangled code needs to be cleaned up, it could—and should—be done in a way that doesn't remove useful player features. There is a list of bugs related to both keybinds and the command parser; maybe a sub project to fix those bugs, add some enhancements, make the code all pretty and streamlined AND not remove longstanding features is in order, instead of this half-fix/half-break "non change."

 

The other driving factor seems to have something to do with making "Profiles" work right, or better, or "as originally intended." (Did you know the game even had key profiles? I didn't... and I'm on the short list of player/hackers who really should!) Well, I looked into the profiles, and here's what I think: nice idea, not of much use, and if they're in any way "fixed" now they must have been completely useless through 27/P6.

 

The idea is good, but the implementation is nearly pointless. There are four Profiles to select from, and the one for Joystick use (!) aside, they are basically Ivory, Off-White and Beige... a few command and movement keys shifted around in each. (Even the Joystick one simply remaps the basic keys to the stick and little else.) So... where is the Left-Handed profile? Any of a few for players needing special Accessibility (like the ones I've helped find solutions over the years)? Where's the Mastermind profile? Where's a really comprehensive, new-to-bare-metal, post-2005 update like my GABS system (or any equivalent by anyone)? Where's anything but three flavors of vanilla?

 

But no, this internal fix, and external limitation, were implemented at in part to make four very tepid options of "Profile" work... right, better, at all, something, which I don't think is anywhere near a worthwhile tradeoff.

 

I suggest that the profile setup, as it is, is such weak sauce that it should only be given support as part of the wholesale update of this part of the game. Revamp the whole key-input-bind system, and make Profiles something easily extensible  — I'd love to write some of those alternatives, as I've been doing at the "custom keybind" level, and make them instantly accessible to the many players who are leery of "hacking the game with binds" There's useful change in that direction... but it shouldn't come at the cost of blunting the rest of the feature.

 

Menus & Terminology
And while we're here, one of the other barrier/hurdles to even simple user understanding of the keys and the profiles is that options and labels like "Modern" and "Classic" and "Like Issue 1" are meaningless babble. They mean very little to veteran players and nothing to newcomers. The one that comes to mind is the P7 change to set mouse-look to auto-centering; the answer, given every five minutes in Help for days (and even now) is "Go set 'Mouse [something something behavior]' to 'Classic.'" Uh... yeah, that's intuitive.

 

Even looking past the fact that the Dev team could use a tech writer or two to review all the UI content and labels so that they make some relevant sense to the function they manage, menus are inherently simplified. It wouldn't do much good to the the other half of the user base to label options with their internal, technobabble names and the (often bizarre and cryptic) setting keywords.

 

But—there's a lot of sensibility and organization cleanup that could be done to make the menus and UI elements more sensible to "nontechnical" players, and re-enabling the advanced, technical approach for the other half. Rubbery-bubbery menus AND difficult access to direct configuration are, IMVVHO, breakage of what could be, and nearly always has been, an outstanding aspect of the game. Make both work, instead.

 

Solutions
In the interests of serving the spectrum of needs from newcomer/non-tech/wouldn't change a single default setting players to those of us who have probably remapped everything but the startup screen (oh... wait... /uiskin 2 🙂 ), and based on almost twenty years of researching, documenting, improving and explaining the game's deep UI configuration features (which, by the way, falls within my professional career scope), I'd like to suggest that—

  • the bind save feature be reverted to a mode that saves out ALL keybinds, "default" and otherwise, without any selectivity or filtering or Dev decision that "players don't really need to know that" thinking.
    • (Side comment: much of what's been said back about "default binds" seems to carry the idea they are somehow irrelevant—that users don't need need to know them, won't change them and only constitute the dozen or so "action" keys. That's the kind of, well, kindly nannyism I'd like the process to bypass.
  • if the shortest path to this fix is a new command ("save_all_binds"), fine. It seems like that would be easy to implement without (if you insist) reverting any of the P7 changes or derailing whatever future plans there might be for this subsystem. To put it clearly: just regaining the ability to do a full, unscreened bind dump would correct much of what I'm objecting to, here.
  • the bind system be given some priority for a wholesale rewrite that addresses all these issues—makes binds completely transparent and accessible again, makes the menus "sensible" and appropriate for new/more general users, implements Profiles in a useful and extensible way, fixes some of the longstanding bugs (like pet emotes in binds), and fixes the vaguely-stated internal duplication/overwrite problem that (while being nonfatal for two decades) seems to have been at the heart of all this... change.

 

In other words, fix the whole critical and useful subsystem, accommodating the full range of players and customizers, while extending some presently useless elements into usefulness, and making the code cleaner, more efficient for all the reasons that's good.

 

I don't think I'm "overrreacting" with this request.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Like 3
  • Thanks 3
  • Thumbs Up 5

UPDATED: v4.15 Technical Guide (post 27p7)... 154 pages of comprehensive and validated info on on the nuts and bolts!
ALSO:  GABS Bindfile  ·  WindowScaler  ·  Teleport Guide  ·  and City of Zeroes  all at  www.Shenanigunner.com

 
Link to comment
Share on other sites

I've never used a keybind for anything besides combining inspirations. It worked before page 7 and worked afterwards. I've saved this bind and used it across multiple farmers. 

 

What am I missing? Did something happen to change this? You may have explained it in detail above, but I'm sorry, I'm not reading your wall of text. 

  • Like 2
  • Thumbs Down 4

Pocket D Zone Tour

Best Post Ever.... 568068478_BestContentEverSignature.png.4ac4138c1127616ebdcddfe1e9d55b57.png

Link to comment
Share on other sites

17 hours ago, Glacier Peak said:

What am I missing? Did something happen to change this? You may have explained it in detail above, but I'm sorry, I'm not reading your wall of text.

 

I did and I still don't get it.  To be honest, I don't get what was gained by this change to profiles OR what was lost by it.  His best argument might be good old, "It wasn't broke, so why fix it?"  Maybe hearing from someone who uses the new profiles feature and loves it would change my mind on that.  But otherwise, I probably am not touching it.   But also, am not really put out by the change either since saving and loading binds on new characters seems to be working fine.

 

Is the only thing you have to do here now is find an offline copy of the full default bind strings list if you want to go text editing yourself?  I get that that's not as convenient as the game just dumping it all into the one file for you... but is it THAT big a deal?  Also... is this really affecting a lot of people?  I don't exactly see the forums lighting on fire over this and it's been a few weeks.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Basically the OP doesn't just say "it wasn't broke so why did you fix it", it's also a bunch of "what you did is a huge nerf for people who like to make custom keybinds."

 

Is that too long to read?

 

20 hours ago, Shenanigunner said:

I maintain that removing this simple feature, that of being able to list out ALL binds, is a major change, bordering on a breakage of user ability to customize their UI, and it should be reverted.

Good luck on your quest to get the devs to revert this "feature."

 

However, I hope you're prepared for them to never even discuss it, much less revert it. I'm not just trying to be negative, I'm just going off of past behavior. Can you name one feature that went to the Homecoming live servers that was then reverted based on player feedback?

  • Thumbs Up 3

"It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire posts, the posts become warning points. It is by caffeine alone I set my mind in motion."

 

Being constantly offended doesn't mean you're right, it means you're too narcissistic to tolerate opinions different than your own.

Link to comment
Share on other sites

3 minutes ago, Lunar Ronin said:

Tips replacing each other.

Well, that's one.

 

I'll check in next year and we'll see if the keybind system changes have been reverted.

  • Thumbs Up 1

"It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire posts, the posts become warning points. It is by caffeine alone I set my mind in motion."

 

Being constantly offended doesn't mean you're right, it means you're too narcissistic to tolerate opinions different than your own.

Link to comment
Share on other sites

23 hours ago, Shenanigunner said:

if the shortest path to this fix is a new command ("save_all_binds"), fine. It seems like that would be easy to implement without (if you insist) reverting any of the P7 changes or derailing whatever future plans there might be for this subsystem. To put it clearly: just regaining the ability to do a full, unscreened bind dump would correct much of what I'm objecting to, here.


This is the main point, for me at least. Previously, we could easily export all the keybinds for a character. This made it easier to modify and share them. That’s not currently possible. 

  • Like 3

The American Dream, Willpower/Kinetic Melee Tanker, Everlasting.

Link to comment
Share on other sites

I don't do a lot with binds.  I use rotating binds on certain characters to map multiple powers to a single mouse button (mostly location-targeted powers so i don't have to futz with the mouse pointer), but I don't go out of my way to customize my interface with the game.  A lot of the defaults are fine for me, and what wasn't, I changed and saved to the default file a long time ago, so I hadn't paid much attention to this until today.  Out of curiosity, I dug around in my saved bind files (i always use /bindsavefile different_filename.txt so i'm not overwriting anything on different characters), and found two for the same character, one from before Page 7 and one from after.  I can see the reason for the complaint.

 

With my older saved file, all of the keys are listed, along with what they're bound to on that character.  I can scroll through and look for what I want to find, or, use Ctrl+F if I already know which key or keyword I'm looking for.  What's this annoying thing, like canceling the auto on Hasten, bound to?  Let me scroll through and find it... there it is, it's Z, I'll just change that to z nop.  I know I bound that power to something, let's see... Ctrl+F, "Grant", Enter, there it is, it's G.

 

With the new system, only what I've changed is saved.  If I don't know that pressing Z takes Hasten off of auto, I can't find that information in the binds because it's not in the saved file.  If I want to bind G to Grant Invisibility, but I'm concerned that what G is currently bound to might be critical, I have to be logged in to find the default action to which it's bound because that's not in the saved file.

 

Yeah, a more thorough save would be preferable.  I do like the cleaner saves the new system offers, but losing the option to dig through a bind file and find information isn't worth the polish.

  • Thumbs Up 4

Get busy living... or get busy dying.  That's goddamn right.

Link to comment
Share on other sites

I don't think you're wrong. But I don't see the fuss.

 

The game is not new. Everything has been documented extensively be it on forums or the (several) wikis. Anyone googling (as I sometimes do) comes across those reddit posts, forum posts, wiki pages, where the correct bind syntax is explained.

 

So I'm not seeing the fuss with the changes. 97% of players won't even notice that they are there and will still keybind whatever to whatever button that they care about, and if it's not available through the menu they will google it and will copypaste and it will work.

 

 

I'd understand the fuss if the changes had altered something fundemental and now bindings required new syntax or whatever, but it does not seem to be case.

 

Anyway, not putting your concerns down, it's just I don't see what is the problem other than the lack of transparency in the text file.

  • Like 2
Link to comment
Share on other sites

7 hours ago, Sovera said:

Anyway, not putting your concerns down, it's just I don't see what is the problem other than the lack of transparency in the text file.

 

That's it in a nutshell. I think what SG is saying is that making something less transparent (I.e.,  more obscured and difficult to use) and applying that to a bind system that is already complicated and befuddling to the general player base... well, that's just a bad idea... especially to new players or players new to binds. Conversely, making things easier to interact with the binding system is a very good idea. He's not wrong.

 

Right now, we can't see what keybinds are loaded into the server for our characters. We don't know what the server is doing, and that's a problem. Did my binds take? Are all the binds I want loaded into the server? What binds are on my other keys, maybe I want to change some of those? Let me just use /bindsave and find out... oh wait, we can't anymore.  OK, let me just look at the default binds at the wiki... but are those really the binds that are on my character? Yeah, it's a pretty big problem. If @Number Six comes through with a brand new command to export the binds from the server that are set for our characters, then it's not as big a problem. Still a problem, just not as big.

 

From all that has been revealed, there really was no good reason to alter the way people save and load binds. The keybind limit problem affected very few people, and yet the inability to see the binds on your character affects everyone. If you ever run up against the bind limit, all you do is reset your binds, and you're golden. There was no reason to mess with the bind system, and no clear benefit bestowed as a result. 

 

Now, every other function of binds and binding is working as before, which is why people haven't even noticed a change. Old-school binders are still using their old bind files and still loading them into the game. For them, there's been no change since they generally don't even use /bindsave. But for players new to binding, yeah there a big hurdle to jump over now. 

 

 

 

  • Like 2
Link to comment
Share on other sites

7 hours ago, BlackSpectre said:

That's it in a nutshell. I think what SG is saying is that making something less transparent (I.e.,  more obscured and difficult to use) and applying that to a bind system that is already complicated and befuddling to the general player base... well, that's just a bad idea... especially to new players or players new to binds. Conversely, making things easier to interact with the binding system is a very good idea. He's not wrong.

 

I still don't see why this is such a big deal.  Isn't it just NOT saving the default binds and can't I just look that up online if I want that info now?  This to me seems like more of a speed bump than a "big hurdle".  What am I missing?

 

https://homecoming.wiki/wiki/Default_Keybindings_From_Issue25_to_Issue_27_Page_6

 

People wanting to do more advanced keybinding than this are going to need a lot more than just to SEE these keybinds in the file anyway.  So what's the big deal?  If I want to edit a text file for a game to do some advanced tweaking, I ALWAYS look that shit up online anyway.

 

Now, whether or not this new profile system is worth putting up with even a speed bump seems to me a much more valid argument, but somehow not the one we're having.

  • Like 2
Link to comment
Share on other sites

7 minutes ago, Pleonast said:

Can you find the pages for default keybinds for the current issue and page? 
 

How will we update those pages for the next issue? 

 

https://homecoming.wiki/wiki/Default_Key_Bindings

 

As for future updates, I imagine they will happen the same way this happened, assuming anyone expects the defaults to change any further, which seems unlikely.

Link to comment
Share on other sites

May be there is cause to have a new bind save command that saves everything, like how the command used to work. May be a new command should only save what the default bindings are, for the profile. And never include bindings modified by the user. Best compromise? If it included everything then that allows the further proliferation of inefficient bind files ... /DefaultBindingsSaveFile <filename>. No opposite command needed.

 

I have no problem with how the bind save commands work now since the changes with I27P7. Well, except for my old characters were apparently running under Classic while new ones are running under Modern. I have adopted Modern on all my characters. A file saved now contains just what you've added or changed and that is easier to understand. And it makes more sense to the cycle of save/modify/load, if that is the process used by someone, it increases the efficiency too there is never any reason to include the default binds especially loading. Plus the old saves were indecipherable with too much information.

 

Be wary, I think a bind file starting with KeyProfile <tag> means an implicit bind reset it would not make sense any other way.

 

NB I checked KeyProfile, it does not appear to implicitly reset bindings. An UnbindAll can be added by the user to the bind file, if they chose. The cycle of save/modify/load misses that crucial step, it should be save/modify/reset/load. My own process is modify/reset/load.

 

 

Edited by Digirium
Link to comment
Share on other sites

11 hours ago, TheMoncrief said:

The article you linked was probably gained by dumping the default binds. Which is no longer possible.

 

That's the page 7 default list.  Shouldn't have been possible with /bindsave THIS time either.  Maybe it was done with /showbind on each key individually?  If it's the same @BlackSpectre there as here on the forum, they can say how.

 

But I don't think it matters either.  It seems to me the point of adding profiles was likely so they could add new default binds without changing the old ones.  The classic keybinds at least, should never change from what you see on the first page I linked.  And it wouldn't be a good idea even to change the modern defaults either.  Changing people's control settings WHILE they are using them would be kind of rude and I don't think they want to do that.

 

I'm not against adding a bind_save_all command either.  I just don't see what's so urgent about it.  All the info needed appears to be still easily available.

  • Like 1
Link to comment
Share on other sites

I don't think the change to how binds are stored is a positive as far as end-user experience, but I also think the number of people who are willing to interact with binds at that level are small and the system is already user-unfriendly as it is. Most are not going to begin by reverse-engineering a bind file in 2024; they'll begin with a discord discussion, a wiki page, a reddit guide, or if google permits, a forum thread. So at a practical level, I don't think it's a large issue.

Edited by Sunsette

irregulars book logo noby white.png

Sundered Marches: The Website | The Official Soundtrack!

Link to comment
Share on other sites

On 3/19/2024 at 8:02 AM, Pleonast said:


Can you find the pages for default keybinds for the current issue and page? 
 

Only for the Modern and Classic keybind profiles/defaults. the Issue Zero and Joystick default binds have not been shared with us yet.

On 3/19/2024 at 8:02 AM, Pleonast said:

 

How will we update those pages for the next issue? 

Well, @Number Six was kind enough to copy the Modern profile and post it on the forums for me. I then added it to the wiki. Right now we're dependent on Devs to help out, but I have no doubt @Number Six will eventually give us a command to see the defaults and our own binds again (if he doesn't revert the changes). We'll just have to wait. 

Link to comment
Share on other sites

15 hours ago, ZemX said:

But I don't think it matters either.  It seems to me the point of adding profiles was likely so they could add new default binds without changing the old ones.  The classic keybinds at least, should never change from what you see on the first page I linked.  And it wouldn't be a good idea even to change the modern defaults either.  Changing people's control settings WHILE they are using them would be kind of rude and I don't think they want to do that.

 

 

Binds for characters are stored on the game server. When you make a change, it copies that change over to the server. Initially binds are stored in dynamic memory (RAM) but are written to a database file within a few seconds. However, they are also saved in the instance for your character in your game client, which is also dynamic memory. This is why sometimes when you make changes, the binds don't take effect until the game instance is reloaded (by changing zones, for example). The binds were stored on the server, but they just didn't instantly update the game client instance (it's a little bit more complicated than this, but this is the gist). 

 

When you reset your binds, the server takes the file containing the default binds for whatever profile you have selected and replaces all of your binds with the default binds from that profile. It also wipes the old binds from dynamic memory on the server, and updates the game client as well. Before I27P7 there was only one set of default binds, now there are 4. If you want the game to restore the default binds from a specific profile when you reset the binds, you'll need to make sure that the keybind profile is listed at the top of keybinds.txt so that no issues arise.     

  • Like 1
Link to comment
Share on other sites

On 3/19/2024 at 6:53 AM, ZemX said:

 

I still don't see why this is such a big deal.  Isn't it just NOT saving the default binds and can't I just look that up online if I want that info now?  This to me seems like more of a speed bump than a "big hurdle".  What am I missing?

You can look up 2 (Classic and Modern) out of the 4 sets of default binds. The other 2 have not been shared, and thus we have no information on them. We might be able to reverse engineer them, meaning press a key or button and record what happens, or use /showbind on every single key, button, and key/button combination... but that's a pain in the neck to do. Very time consuming.

 

On 3/19/2024 at 6:53 AM, ZemX said:

 

Now, whether or not this new profile system is worth putting up with even a speed bump seems to me a much more valid argument, but somehow not the one we're having.

 

Well, @Shenanigunner mentioned it in his meticulously written "wall of text".  For me, that is a judgement call and a matter of opinion, but it is absolutely relevant.  SG stated that the new profile system is definitely not worth the additional time and trouble the change to the bind system has caused (for players or devs). As the keybind profile system currently is, I agree. The joystick profile has some real potential to be helpful for people that use game controllers. Otherwise.... the Issue One default profile is mere trivia, and the differences in the Modern profile are so small that it's almost silly to have a separate modern and a classic profile. Personally, I would have just posted the modern profile as a Dev Recommended, PVP bind build in an official dev thread at these forums. The same for the Issue One defaults.   

 

Personally, I would not have the joystick keybinds be selected as a separate keybind profile, but rather automatically selected when a player selects DEVICES in Options. That way different sets of game controller binds could be customized to work with specific game controllers, with a different configuration for each.  According to SG, the current joystick profile is clunky at best, and really just a half measure, and it could use some love. I've never looked closely at game controller binds, so can't really say one way or another.

 

Since page 7 hit, the forums and help chat channel has been hopping with player complaints that their binds no longer work as expected. This is because their "classic" binds were replaced with "modern" binds without notice (or they didn't notice). Again, more trouble than the profiles are worth.

 

On the other hand... the idea of keybind profiles, especially CUSTOM keybind profiles, has a lot of potential, especially if players could share them with each other right in the Options window (probably through global email).  But something like this would be a big new feature, and require a lot of coding, which is why in my opinion it's not likely to happen. Sadly. It would be cool, though.

Edited by BlackSpectre
Link to comment
Share on other sites

23 hours ago, ZemX said:

Maybe it was done with /showbind on each key individually?

 

This started the wheels turning and made me wonder if there is a way to set up a single bind file that can dump the binds for every possible key combination, like how the settitle bind file works for dumping all badge titles for importing badges into Badger, only with /showbind instead of /settitle. I've got some tinkering to do and will report back.

Link to comment
Share on other sites

Well argued, and I agree. Either a /bindsaveall command or a tick box under Misc Options to "Include defaults when saving binds" would work for me. I expect the former would be easier to implement, while the latter invites discussion of whether it should default to on or off.

Disclaimer: Not a medical doctor. Do not take medical advice from Doctor Ditko.

Also, not a physicist. Do not take advice on consensus reality from Doctor Ditko.

But games? He used to pay his bills with games. (He's recovering well, thanks for asking!)

Link to comment
Share on other sites

  • City Council
On 3/19/2024 at 1:19 AM, BlackSpectre said:

Right now, we can't see what keybinds are loaded into the server for our characters.

 

So, going to quote this because it isn't quite accurate and use it to springboard off onto a deeper dive into how the keybind system works. I explained a lot of this in the OP's previous thread on this topic but judging from the replies it looks like some of it bears repeating.

 

I see some comments like 'the new system is less transparent' or 'it worked fine forever and was simple, why add this complex system' or 'the ebil devs dont want us to be able to see the defaults for reasons, that's why' (paraphrasing), but the thing is, none of that is really true. The profile system has always been there, the defaults being separate from the user binds was always a thing, no new systems have been added, no more complexity was added. Prior to page 7 they were just hidden from view. The /bindsave command was lying to you and pretending the system is much simpler than it really is. By papering over how the system actually works, it created a lot of incorrect assumptions and expectations. And while hiding those details usually worked okay, when something went wrong it resulted in completely opaque error states that led to people having to reset binds because the system wasn't behaving as expected but nobody knew why.

 

So, while it may sound counterintuitive at first, I maintain that the new file format is actually more transparent because it's telling you what is actually happening and giving you visibility into how it really works instead of pretending to be something that it isn't. And let me reiterate, it's giving you visibility into how it's always worked.

 

So, bit of a technical deep dive here, the keybinding system is built on layers. In most cases there will be two layers, but sometimes there can be more.

 

Layer #1 - The default binds. These are read-only and are built in to the client. The server is not aware of these at all. The drop-down in the keymapping menu lets you select a different set of defaults (what we've been calling profiles). The server dutifully saves the name of your selected profile in your character record, but has no idea what it actually means and can't even validate that it's a real one.

Layer #2 - Character binds. These are any custom binds that you've created with the /bind command and/or the options menu. They're a simple list of key name and command. Up to 255 of these can be saved in the character record on the server.

 

When you're actually in-game, the client applies these layers such that the default layer sits at the bottom of the stack, then applies your character's binds on top of that. Again, this is not new, it's how it's always worked. That's also why you've never been able to /unbind a default key and instead have to /bind the key to "nop". The /bind and /unbind commands operate purely on layer #2 since that's what you have access to modify.

 

Sometimes, additional layers can get added on top. A common example of this is the SG base editor, which adds a Layer #3 that contains the editing shortcut keys. Context menus also add a layer to the stack for keyboard shortcuts for menu items. There's a few other miscellaneous cases like that where the game adds another temporary layer on top of the stack. If you had a context menu open while in the base editor, there would be 4 layers -- two of which can override your custom binds on layer 2.

 

The way the /bindsave command was working was to save the apparent binds -- the result of mashing the entire stack together. Which is convenient if you want to edit them by hand, I agree. But it also causes some issues. One edge case I've personally seen bite somebody is saving keybinds from the options menu while in the base editor, which caused that temporary overlay with the edit keys to be saved to the file, overwriting some of their actual gameplay binds.

 

The other part of the problem is /bindload. Since it's dumb and just issues /bind commands for each line, what it's effectively doing is loading the contents of the file into Layer #2. It's a bit more complex -- /bind tries to ignore a bind that already exists in some form so the defaults tend to avoid getting duplicated, but there are some caveats and various conditions that cause something saved from layer #1 to bleed over and end up getting copied into layer #2 by loading a file. That not only wastes one of your 255 slots but also means that swapping profiles won't work, or worse, may only partially work (which, one more time, profiles are not a new thing even if they were underused).

 


 

The way the command works now is to save the profile name, as well as the contents of Layer #2. Basically the exact same thing that is saved in the character on the server, and the only part that can actually contain any custom data. It's a bit less convenient if you want to see the defaults for easy editing, but it gives you visibility into what's saved on the server and knowledge that the layer you can fully control (layer #2) is exactly what you want it tot be.

 

13 hours ago, BlackSpectre said:

Before I27P7 there was only one set of default binds, now there are 4.

 

Before I27P7 there were 3 sets. Now there are 4.

 

There were:

Default

Joystick

Original

 

In I27P7, Modern was added and made the default for new characters (unless you have a keybinds.txt with a KeyProfile line in it!). Default was renamed to Classic. And Original was renamed to Issue 1 because it would have been really confusing if there was both Original and Classic.

 

12 hours ago, BlackSpectre said:

You can look up 2 (Classic and Modern) out of the 4 sets of default binds. The other 2 have not been shared, and thus we have no information on them. We might be able to reverse engineer them, meaning press a key or button and record what happens, or use /showbind on every single key, button, and key/button combination... but that's a pain in the neck to do. Very time consuming.

 

I can get those if you really want them to document them. Very few people were using them and Joystick probably needs a serious look to revamp it for modern game controllers (that's a whole other can of worms).

 

As I mentioned when I replied to you, as well as in the OP's original thread on this, I did say that we're going to add a command to save the defaults out to a file to make it easier to get those. It hasn't been a super high priority in the rush of post-page7 fixes because it's an inconvenience that can be remedied by copying from the wiki page and there are a lot of other gameplay affecting things that needed attention, but I did say I'd add one and intend to follow through.

 

They're actually in data/kb.bin on the client - remember I mentioned the server doesn't know about their existence at all. They could probably be decoded from there, I know a couple people have bin file readers to parse powers data, but probably not worth the effort if a command to dump them is coming soon.

 

12 hours ago, BlackSpectre said:

On the other hand... the idea of keybind profiles, especially CUSTOM keybind profiles, has a lot of potential, especially if players could share them with each other right in the Options window (probably through global email).

 

Don't know about sharing them ingame, would be tricky since they're purely clientside. That's something that with a little bit of code support could be done with client mods though.

 

On 3/20/2024 at 8:07 AM, Digirium said:

NB I checked KeyProfile, it does not appear to implicitly reset bindings. An UnbindAll can be added by the user to the bind file, if they chose. The cycle of save/modify/load misses that crucial step, it should be save/modify/reset/load. My own process is modify/reset/load.

 

That's an oversight. I'm going to add an optional UnbindAll keyword to the file the /bindsavefile automatically sticks in there in order to make it work as it should. It needs to be optional to avoid breaking bind files that intentionally depend on not resetting and only swap a few keys around.

  • Like 2
  • Thanks 6
  • Microphone 1
Link to comment
Share on other sites

I'm happy to adopt whatever syntax you add for reset, @Number Six just to note I use a line containing "f forward$$UnbindAll" to do it at the moment. In my Reset file, this is the second line, the first line is "KeyProfile Modern" so eventually all my characters old or new, before I27P7 or after reach consistency. The rest of my Reset file contains bindings in common use by all my characters then each character has their own specific file that contains just binds they use.

 

The character files do not begin with KeyProfile they only contain binds.

 

 

Edited by Digirium
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...