Black Dragon is MY Viewer, i decide which feature i want to add and which to remove, i share this Viewer to show the world that user base size is not important, i do rate quality by effort, thought and love put into the project, not some rough estimated numbers. I consider feature requests only if i you can name proper valid reasons i can agree on. It is my (unpaid) time i'm putting into this project, i'm not here to cater to every Joe's desires.

Tuesday, January 26, 2016

Black Dragon Viewer - Update "Binding Keys"

Please make sure you downloaded it contains an important fix for vehicle controls. If not, go download it and install that one.

Feature Highlight

As the update label suggests, this new update focuses primarily on binding or rebinding keys, in other words: Remapping Controls.

That's right, the feature that has been missing for over 13 years now. It is finally coming into Second Life, at least a small part of it, my userbase. I have worked the past few days up and down to get this feature up and running as it is right now. It is pretty "basic" at the moment and only allows binding one set of controls for pretty much all controls available, it is not possible to bind alternative controls yet but will be soon.

It works pretty straight forward, you click the [set key] button, popping up a small window asking you to press the key you wish to set for this action, you can then choose to add modifier keys such as CTRL, ALT and SHIFT in any possible combination, when done, press "Bind" and that's it.

To ensure it worked properly i had to remove the internal code that removed doubles, that means you can bind all actions to one key, which will result in that key probably doing a lot of funky things, please be aware of that.

Additionally there are two more buttons, "Unbind All" which does exactly what it says, unbinds all controls locally without saving it - and "Export" which manually saves your current bindings to the desired file's name, which is "controls.xml" right now until i add loadable presets. I used these buttons for many hours of debugging, be careful with these as they might break something in a case i have not yet managed to reproduce.

By far the biggest downside of this change is that all controls have been unbound and completely rebound from the scratch, it might be possible that i missed some, additionally there will be no more Arrow Key controls, the controls are now by default AWSD as they should be.

Here's an overview of the new controls:

AWSD - Move left/forward/backwards/right
Q/R - Rotate left/right 
Space - Jump/fly up 
C - Crouch/fly down
X - Stop movement
F - Toggle fly mode
Enter - Start chat

User Interface

I've re-added the "Keybindings" tab to the preferences floater, it contains all the new stuff you will need to rebind your controls.

I've also changed a few german translations to better match the new preferences layout.

I've fixed the inverted "Letter keys are used to" option, it should behave properly now.

I've added a Freeze World menu entry to the main menu, it can be found in: Dragon - Useful Features - Shortcuts - Freeze World. (Ctrl + Alt + F)


I've made some changes to the Tone Mapping defaults, it seemed like i forgot to change them, that or i made more tweaks to it later, after i made my last tweaks. You'll have to revert the Tone Mapping settings to default with the [default] key if you've touched the sliders at least once.

I've also made some changes to the way shadows and SSAO are softened, for the better i hope, they should be softer than before while projected light shadows shouldn't be over-blurred anymore.


As you may have noticed (or not) i have made some changes to the blog, i felt that it was time to work up some parts of the blog, namely the download link which now always refers to the "pre-download" page which will link you to all important information before downloading the Viewer, hopefully reducing the "i can't see anyone" question i keep seeing a lot lately.

From now on you won't find a download link anymore in my update posts, only the sidebar will now contain the download link. I'm currently deciding if i should remove the sidebar download link and only have a download link in my blog to force people to look into the update posts.

I'm also trying to clean up my writing a bit more, making it clearer what i want and what i've changed.



Added: Ability to remap almost all controls in the UI, unbind them, export them with a given name and load them on start.
Added: Freeze World shortcut menu entry.
Fixed: Wrong translation for the mouselook invert option.
Fixed: Inverted "Letter keys are used to" option.
Changed: Tone Mapping defaults, brighter.
Changed: More tweaks to SSAO/Shadow softening.
Changed: Ignores to allow commiting changes to the character folder.
Changed: Display prefs XML cleanup.
Changed: Set the default controls file name to "controls.xml".
Changed: Disabled Keyboard Layout options.
Removed: Shortcut from Debug Avatar Textures.


  1. I'm always curious to see if a new feature provides too much of an advantage for the users of a particular viewer, thereby inducing the dreaded LL TOS clauses dealing with changing the user experience in a way that causes too much drama (ie, coloring name tags to the viewer choice).

    1. There is no possible advantage with custom mappings, nothing you could do in any other viewer anyway.

      Breaking the shared experience clausel is a joke anyway.

  2. Why on earth would you disable the arrow keys? Being left handed, I use the mouse in my left hand and use the arrow keys to move. The WASD keys are a huge burden with no gained benefit. At the very least, is there a setting to make sure the camera view faces the direction the avi is facing as it moves?

    1. Why on earth would i disable them?
      A: They are horrible and not the industry standard.
      B: You can just rebind them.
      C: There are no alternative binds yet, so i had to choose between AWSD or Arrow Keys.

      Camera always facing the avatar's movement?
      No. Just imagine you press backwards and your camera turns around 180° endlessly. What you actually mean is "how to i change my movement back to the horrible SL default that made my avatar rotate left/right instead of strafe left/right". Rebind it. SL's default controls use A and D to rotate left/right instead of strafe left/right, same goes for arrow keys. Just rebind the arrow keys and use arrow left/right for rotate left/right.

    2. For some reason the binding isn't saving.. the rotate right with the arrow key saves fine, but the up/down and left rotate binds are not saving.

    3. Rebinding doesn't work. Viewer doesn't store the bindings. What's my mistake?

    4. Probably no folder writing rights to your windows account. Currently you NEED writing rights for your Viewer's folder as the controls file is written into it. I will change it to the user settings folder later when i added the ability to rename them.

    5. LOL! What a fail! Industry standard is to write to the user's profile directory, not writing to the installation directory - just saying...

    6. That's it. Just add writing rights on the black dragon folder in Programms and be safe. maybe in a future world this will be stored in the AppData folders in Profils.
      Thanks again...

    7. Anonymous is obviously troll, but i'm going to carefully feed it anyway otherwise this species will die of starvation at some point.

      It is somewhat industry standard to write to the user profile directory, yes which can be located everywhere, including in the installation folder.

      Then there's the problem that even if i put it into the user's profile directory it doesn't guarantee to work as i'm sure there are many out there with restricted rights.

      And THEN there is still the thing that this is the first working iteration of this feature, i don't know what you expected but i'm just happy it's finally working and i wanted to release it to the open as quick as possible for everyone to test, but i guess you are just a Firestorm fanboy, blinded by the 9 month release cycles which are so much better and totally bug-free of course. I can just pull a few hundred testers out of my ass and let them test everything until every bug that could possibly ever exist is fixed at least twice, that surely won't delay updates and will massively increase the quality of a feature that you don't even know people will use, it's definitely not a waste of time.

    8. Of course Niran is talking complete nonsense again - or simply using

      gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "yourfile.here");

      is too complicated! :p

    9. Never said it is complicated to change the path.

    10. To hades with the troll, Niran. Some fans of other viewers are just butthurt that yours is better I guess :)

      I'm glad you said in a reply to different comment that you're bringing back arrows as a default "alternate binding" - because WASD may be something viewed as the "norm" now but using the arrows as standard predated that by a long time and quite frankly I never understood why game designers changed to WASD as some sort of de facto standard. The arrow keys are typically isolated from other keys in a little block of their own and if your fingers get out of position you can reposition them accurately by feel without taking your eyes off the screen. Less important in SL, I know, but in a FPS that can be life or death. I guess neither is really bad on an objective level but once you're used to using one set of keys, either WASD or arrows, switching to the other is indeed horrible. I've binned games that forced me to use WASD before and didn't let me rebind to arrows. :) I'm sure a WASD user such as yourself would have the same attitude to arrow keys as I do to WASD :)

      I'll wait for the version with arrows as an alternate default before updating.. I hope your schedule permits that to emerge soon, because I love the viewer and usually pounce on updates the moment I see 'em because I really like the direction you're taking its development...

    11. There are many reasons the industry switched to AWSD, the "isolated" pack of arrow keys reason being one.

      AWSD has become the standard simply because it is the easiest to comfortably reach while maintaining the possibility to have as different keys at your fingertips as possible. Just think of why you use your left hand on the left half of your keyboard and the right hand on the right half of your keyboard when writing? You do this because the left hand is objectively and logically better suited for pressing the buttons on the left side of your keyboard, all the important buttons such as Space, Shift, Control, Alt, Tab, Circumflex, ESC as well as all number keys and all important letter keys are close to each other, having your left hand on AWSD allows you to quickly press ANY of these without doing hand acrobatics or moving your hand away from AWSD which means losing control or giving up your movement ability. Sure you can rebind all those keys to around the arrow keys but lets be honest, it doesn't feel right simply because the way your hand is resting on the arrow keys, your fingers are on top of the arrow keys and almost your entire hand is way off the keyboard, making it hard to reach the other buttons around your arrow keys without using a second hand or moving too far away from the arrow keys, which again means you lose control over movement. Using the arrow keys is like playing a game and only pressing one button at a time because all others need you to move away from either your arrow keys or your mouse, either way you lose important abilities (looking around, moving, dodging, crouching). Example, how do you crouch in SL with the arrow keys? You press Page Down, right? But how can you keep Page Down pressed and move at the same time while using your mouse to look around or steer your avatar? You can't. You have to either use your mouse-hand to press and hold Page Down or you have to move your hand all the way up to press it which drastically impedes your ability to quickly and precisely press the arrow keys when you need them.... and what happens if you have to press jump too? or stop movement? It's an absolute disaster. Thus AWSD has become so popular. AWSD does everything Arrow Keys do, way faster, way more efficient and allows for easier access to half of your keyboard without giving up your main movement keys. I can press AWSD at any time while hammering Space for jump, Ctrl, Alt or Shift for Camera Movement, C for crouching, F for flying and X for stopping movement, all while having easy access to 1,2,3,4,5, Q, E, R, V, B, T and G and all that while having my right hand on the mouse at all times allowing me to either use the Interface WHILE moving (for whatever reason i would want to do that) or to look around and steer my avatar into the direction i want. This goes so far that everyone who wants to play games properly on a halfway serious level that is not crippling your abilities, rebinds his keys to AWSD, even left handed people play with left on AWSD and right on mouse, this is absolutely common. Being left handed is no excuse, i'm sorry Poly. You all do yourself a big favor by learning AWSD controls.

    12. If anything, i should remove the ability to rebind keys and remove arrow keys entirely.

      Doing all this rebinding stuff is so much extra work, so much time i'm wasting recompiling the Viewer for days to test stuff for basically nothing.

      The reason i even started doing this was an user who wanted a different keyboard layout supported and i didn't want to slap another stupid preset into the Viewer but rather do it properly this time by allowing the ultimate customization with fully rebindable keys like every normal game has as of today.

      I'm growing increasingly pissed of this feature as it means nothing but unnecessary work i waste so much time on for 0 personal gain, i know how to rebind keys, i did so long ago, i even made them default. Not everyone seems to be capable of doing a simple google search or being interested enough in changing their keys that they become curious enough to look into the app_settings folder and look into the keys.xml file which turns out is a very basic formatted file requiring zero skills to change. I wanted to do something good for everyone, those people in particular... but surprise, turns out people don't crave for a feature that is an absolute essential basic feature that has become a MUST HAVE status in every PC game ever to even allow it being called "for PC"

  3. By any chance are you actually going to update the keybindings so you can rebind the turn and turn off that annoying a- d walk because you know I like to see where im going.

    1. You can already rebind turn left/right.

      They are not bound to anything useful because turning left/right with keys is in general useless as you should move your camera with the mouse anyway.


    2. Well it doesn't work, some of us in your group has already talked about default sl controls. saying there setup just doesn't work. That would be nice if I was using a control but I use my mouse to interact with huds click various things in sl NOT camera control

    3. You are obviously using your mouse wrong then.

      Your mouse is there to move the camera AND use HUD/Interface, you obviously don't need the interface when running around and you don't need the camera when using your interface, i don't see the problem. This is absolutely normal in games ever since mouse controls were introduced in games.

    4. Yes in games sl isn't a game its a virtual chat room, so in that case my mouse being camera OH how am I going to IM somebody and or click on things inview *non UI* I don't see why change up the sl formula control scheme. I understand that stuff for people WHO want to use a controller for sl, many don't see it as a game like you do. If the keybindings were more flexable and weren't completely annoying to rebind then I wouldn't have a problem with it and or have the key bindings default sl so ya know when you have new users coming to use your viewer it would be an enjoyable stay for them instead of making them rebind things right away I see keybindings as an OPTION, not something to be forced to change.

    5. I don't see the problem.
      I don't see what a controller has to do with this.
      I don't see the problem in A/D being slide left/right.
      I don't see the connection between your camera issues and your interface issue.
      I don't see why i shouldn't force people to something. Forcing is the best way to show people something new. I have been forcing many things down your throat for many years now, different graphics, different defaults, different camera behavior, different controls, different UI, different approaches for different things everywhere. I don't understand why complaining now, when key remapping is a thing especially about something as negligible as having to map rotate left/right back to A/D or mapping arrow keys again until i add them as alternative, seems like a good idea.

      You make it sound like having to rotate your camera with the mouse when moving is a problem, if you've ever learned how to properly move in SL you will hold left click on your Avatar to look around anyway, which also changes the control scheme to A/D = slide left/right, even in LL's Viewer.

      I'd suggest you learn these fundamentally basic movement/camera controls, how they work and what you can do before saying anything about the controls being anything. Simply saying that because of this change it seems extremely difficult (or even impossible) to use the UI and do something inworld is blatantly wrong. You can still move around, you can use the UI while moving around, nothing has changed.

  4. Niran, thanks for th awesome update... And with the keybindings I can finaly get rid of the fact that I always kick off God Mode, or try to, when I wanted to enter a ] in scripting (CTRL-ALT-G on a Slavic keyboard)
    And also thanks for the freeze world shortcut to be included now by default.

    1. The next update is going to fix some minor issues and adds alternative bindings which allows binding both AWSD and Arrow keys, it will come with Arrow Keys bound as alternative default. I might also add a button to selectively unbind actions instead of unbinding all of them at once. Maybe preset saving/loading will be in there too.

  5. I am left handed and the WASD keys are troublesome. Any game I can rebind them to the arrows and numberpad because of this if I have to. Most games I don't need to since using the arrow keys usually works by default, since they were the industry standard before people started rebinding them to WASD years ago. I also keep my mouse on the left, due to being left handed, not because I am using it wrong but simply because for the same reason you have a hard time using things left handed I have a hard time using things right handed. Anyways, thanks for your time and efforts.

    1. WASD was default back in 1999 already in quite some games.

      You can still rebind everything freely tho. It's just not possible to have arrow keys by default right now as WASD is much more important (and my own default btw) than arrow keys therefor i chose WASD to be the new and only default until alternative bindings in the next update allow having both at the same time (and shipping it with both).

    2. Saw rebind right away. Attempted it and found it nonfunctional. Deleted my configuration files, same result. Thank you though.

  6. It's really nice Niran, the graphics very nice. I miss using your viewer. I was having some bonkey openGL issues when i shot weddings, everything would just crash, so I had to switch to FS which didn't crash, but the graphics IMO were just 'meh'And ireally really like your UI way more than FS too

  7. I have tried this viewer many times in the past but on an old computer and it seemed wonderful. I had always been using Firestorm. Now I got a super fast computer and couldn't wait to try the Black Dragon again. Wonderful speed and rezzing but one bit of nonsense that will make this viewer fail and makes it unusable, especially for sailors in boats. The arrow keys do not work like the standard viewers. I know. I know, I read everything about it but people want the easy, tried and true arrow key movement. Anything else just frustrates and we move on. This is what happened to me. Spent an hour reading and trying suggestion and nothing worked. This is driving people away en mass. I am being honest and I am an average Joe user with no major tech skills and I don't want Tech skills to loose myself in SL. Not a gamer and don't care. Change can be great but this is silly. It is impossible to walk, sail, drive or enjoy the scenery of Second Life.

    1. You are also exaggerating like 'every Joe', it is only as silly as you make it up to be, saying straight up 'impossible to walk' is a massively exaggerated subjective feeling. I've heard this statement many times now and i won't change my opinion on this, if such a minuscule change makes Second Life literally impossible to use for you (not being able to move is basically the same as unusable level of broken) then this Viewer is definitely not suited for you. I've made sure that it is as easy as possible to have the maximum flexibility by allowing everyone to give full control over every single action and which button it is mapped to and making it as easy and straight forward as possible to do so while retaining integrity and consistency, there is really nothing 'every Joe' needs to read up on anymore. Judging by how 'every Joe' works it shouldn't even be a minor inconvenience but many people make it out as a big problem.

      You start the Viewer for the first time.
      You look into preferences on login and do some basic changes. (or not).
      You login and start moving.
      You notice the controls are different.
      You open preferences as very first logical reaction to this.
      You look for options to change the controls.
      You will most likely look into 'Controls' first and wont find anything.
      You should look at Keybindings next because it is the second best place to look into.
      You see a list of actions with buttons organized into a table separated into different camera modes such as third person and first person.
      You do understand that third person is what you are using right now, so you should probably look at which actions are bound to A and D or Arrow Left and Right.
      You notice that these are mapped to 'strafe left and right'.
      You also notice that Q and E are mapped to 'rotate left and right'.
      Your only logical reaction to this should be removing arrow left and right from 'strafe left and right' and mapping them to 'rotate left and right' instead like it used to be in hope it will restore your desired controls.
      You should test your controls again and find that they are restored to what you used to.
      You should move on like nothing happened, because actually nothing happened, you did what you would do anyway: open preferences and change things to what you would like them to be.

      This is a totally basic and simple process of how basically every human works, i see absolutely no problem, the keybindings tab is not exactly explained but understandable just fine, using it will quickly ring all bells how everything works, there's no magic involved and starting out with a control set you don't like is something completely normal and absolutely minuscule, it is something you should be able to fix in just under 2-3 minutes at worst. In fact it is so minuscule it is not even worth telling anyone really, it's like saying i don't like that by default X setting is on or off and then changing it. You will change it ANYWAY.

      But that's okay, i'm used to people exaggerating, i'm used to people not being able to use a Viewer because it is missing an icon or spelling a word wrong. It's much more frustrating that people think this Viewer is all about handing it to you on a silver tray. It't not, the Viewer tries to do things easy and straight forward but it still requires you to use your brain, you will have to change things around, that's what every Viewer is ultimately about, you want to make the Viewer fitting as much as possible and you can only do so by changing settings. Changing your controls can't be any more than a very minor inconvenience, changing your controls is hardly any different than doing all the other changes you do when you use a different Viewer for the first time.

    2. This change may sound nonsensical to you but it makes sense to me and makes sense to many other people out there but it will not make the Viewer fail, for a Viewer to fail it would have to succeed first, something this Viewer has never managed to do. The moment i started doing my very first build this Viewer was already nothing but a time waste, a project that is doomed, it is almost impossible to succeed with a Viewer in Second Life with a mindset that people have right now. Second Life's users are like Skyrim's players, they want more, more and more, they want as much as possible and they will get it one way or another, in Skyrim they get it by modding it, in Second Life they get it by using a Viewer with as much features or mods as possible. It is impossible to succeed even if Firestorm was to vanish right now, people would use Ctrl Alt Studio or would create a new Firestorm fork in an instant, the result would be the same as before, people would use the same Viewer again just with a different name, like they did for many years now. My Viewer was never meant to have many features, never meant to make everyone happy, it's only purpose was serving me as a Viewer i would use, a Viewer that gives me the tools to work the way i want to work, while i do care about my very small userbase (averaging between 1000-2000 users) i do so in my own set of rules, i will never add a feature that i wouldn't want, nor will i make changes i wouldn't have done if i had the idea to do them. The Viewer has almost always followed the road i want it to go down and if i changed that, the Viewer wouldn't be my Viewer anymore and ultimately not your Black Dragon you know today. If i weren't to change the default controls of the Viewer i would have never done fully customizable controls and i know that customizable controls is something many people (including me) wanted for a very long time.

      Ultimately it is up to you, if you don't like my changes, either revert them if you have the option to or don't use the Viewer if you don't like it or don't change it, i won't stop anyone from leaving.

  8. Keybindings don't change, don't save, and you are out of your mind for ruining an excellent potential viewer by having this stubborn insane and complicated way of just walking or moving. Absolute failure because you are stubborn, arrogant, look down on your users and will eventually end up in the "where are they now" trivia of the annals of Second Life.

    1. They don't save? Have you even tried the new updates? Did you even read the blog that this is an issue of your own Windows profile permission management? You do know that i made updates that changed the directory to fix this issue? It seems not.

      I have fixed every single issue you named here.
      I made it easier to use and bind keys.
      I added default buttons.
      I added delete buttons to remove single binds.
      I added alternative binds.
      I made the bindings show their bound key.
      I fixed the permission issue that prevented saving.
      I fixed all issues with the binding system going haywire sometimes.
      I explained how binding works although this really doesn't need any explanation.
      And, lets not forget i re-added arrow keys. I was going to remove them entirely.

      On top of that i was planning on adding theoretically infinite alternative binds and making more use of the preset system to allow different keybinding presets.

      Seeing you post on this over 5 month old release post over and over makes me think that you have no idea of the changes i made even shortly after this release.

      And if that wasn't enough, you keep insulting me as if i ruined Second Life as a whole, maybe i'll have to remind you again that this "stubborn, arrogant, looking down on users" is exactly what made this Viewer what it is right now.

      If i wasn't so stubborn, this Viewer wouldn't have survived more than a year. If i wasn't so stubborn, many unique features would be missing as of right now, because you know what? People have told me off, they told me not to do it.

      If i wasn't so, what you call "arrogant" (it's called open and honest about everything by the way) i would still be busy handholding everyone's hand like there's no tomorrow, i would be busy making features that help you take a dump on your toilet, this Viewer would be nothing but another Firestorm but that's something some people would want anyway.

      And "looking down" on users? So what? Most of my users if not most people in Second Life are below me, yet i take the time to talk to them, visit them, try to debug their issues and fix them, i'm sitting there for an hour going through settings and things that might have caused an issue, heck i have made entire updates just to fix an issue of a single person. If people wouldn't be so shy as fuck and think that i'm sitting in my room all day being busy making the Viewer 24/7, i would probably be fixing their shit all day because they can't do it themselves.

      Comments like yours always make me question why i even try to be a nice guy even though most people just seem to see me as an arrogant asshole working day and night for their personal pleasure anyway.

  9. I downloaded the very latest version. See the bindkeys, click the settings etc and all combinations you have provided and they do not change anything. They make no changes no matter what I do. I am sorry for being bitchy and I know you are the top viewer designer because your viewer is wonderful and superior compared to all the others but I am being frustrated and hostile because this simple thing makes me crazy and prevents me from using a viewer I know I would love and praise. You being another furry also makes you a 10 out of 10 in my books ;-) I just think a great idea where everybody wins is if you make arrow keys the default out of the box setting for computer dummies like me and then have the new method with bindkeys as an option. If you did this I would be your slave forever and ever and serve you drinks day and night. clean your house and make dinner lol.
    Again I am sorry for ranting on you. Maybe we are actually a little alike (gasp)

    1. Preferences - Keybindings
      Scroll down to the bottom, click unbind all, if that doesn't kill all bindings then you have a severe problem with your right management and the Viewer cannot even write into the user_settings directory where ironically your presets, logs and other stuff are constantly saved in.
      Click load defaults.
      Scroll up to "Third Person Keybindings"
      Click the trash icon besides [Left] and [Right] to remove Arrow Left for the Strafe Left line and Arrow Right for the Strafe Right line.
      Click the empty [] in the Rotate Left line.
      Press Arrow Left and make sure the popup says "Left + NONE", click Bind with the Mouse, DONT press any key otherwise you'll overwrite it.
      Click the empty [] in the Rotate Right line.
      Press Arrow Right and make sure the popup says "Right + NONE", click Bind with the Mouse, DONT press any key otherwise you'll overwrite it.
      Press Ok on the preferences floater and you should be good to go.

      Additionally you can bind Strafe Left to Arrow Left + Shift and Strafe Right to Arrow Right + Shift in case you need it for vehicles.