Disclaimer

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.

Monday, December 4, 2017

Complexity and its complex complexity.

So apparently Oz has seen my changes to the Avatar Render Complexity changes and put up a warning on the Third Party Viewer Directory about it.


It's time i talk about this.

"Non-standard", yes. "Misleading", you got to be fucking kidding me, aren't you? Why is it that i was yelling at you Oz ever since the introduction of Jellydolls that Jellydolls in their current incarnation are utterly useless as they, and i quote the warning here: are "misleading for avatar complexity". It took me god knows how long to make you even consider reevaluating the complexity calculation. It wasn't until i literally manipulated the entry scene on that one open source meeting and made everyone talk about how shit and completely wrong the calculation is before you arrived, prompting you to ask what all the fuzz is about, to get you to openly state that you are considering looking into it again.

You don't seem to have any idea how infinitely frustrating it is being clockblocked by you over and over again because i'm not going the usual bootlicker approach telling you how almost perfectly fine everything is and suggesting a tiny change so it gets more perfect. You know as well as me that i'm not that kind of person, i don't lick people's boots unless they deserve it and there's only couple of people whose boots i'd lick. I'll tell you straight up honestly whats up and i did so when Jellydolls came around. I remember what you told me, you made it clear that you are not in for shaming bad content creators, you don't want to punish less experienced or outright bad creators for their inability to make better optimized content. From a company standpoint this is somewhat understandable, its derogatory and outright defamatory but from a developer and customer standpoint it is absolutely unacceptable. You constantly appeal to each and every content creators own interest in improving their skills and content optimization, this is an outright bad decision. You will never, ever manage to make content creators show more interest in improving if they didn't do so from the beginning on or had at least some sort of personality that allows thinking like that. Most content creators aren't and you are giving them zero incentive to step up their game, you don't punish them at all, you continue to allow them to game your systems that were meant to limit abuse. Have you any idea how bad the state of current avatars is? I knew it was bad but when i added polygon counts i was shocked at how wasteful each and every avatar is, yes I was shocked, the one that told you from the very beginning, well knowing that each and every avatar is a giant pile of shit. I expected over complex avatars but i didn't expect polygon counts in the range of multi-million for many avatars around me. That is not what triggered me to take this into my own hands, no, not at all. It was this very avatar, standing on a starting help island, laughing at me with its 3,500,000 polygons having roughly 40% less complexity than my own Avatar which i spend many hours and days on continuously optimizing, reducing texture sizes, disabling features where unnecessary, removing unused invisible states and cutting down on prim and polycount wherever possible to make rendering my already very light avatar even faster to render. This giant pile of SHIT of an avatar with poly counts so high, the avatar was basically a solid surface, it was laughing at me, taunting me, making fun of my optimization attempts, showing me what i already knew, complexity is useless, it in no way resembles anything that you could call "complexity", its more like a random number that increases depending on how much stuff you put on and the numbers are hidden, probably randomized each time you attach or detach something.

You always urge me to explain it in a way that it easily makes sense for you, so let me put this into an explanation that will show you that complexity as it stands now (and most likely will after whatever you have been brewing in the background) makes no sense.

A few quick facts before we start:
- More is always worse, no matter what it is, the more work to be done the slower its going to be finished.
- Rendering polygons isn't as slow as we might think but it isn't fast either if you have millions to render, especially if they are deforming.
- Textures seem like a free to render thing, they are not. Large textures can and will quickly have a massive impact on the overall performance, worst case you hit your VRAM limit and then everything goes to shit.

With that being said, let's continue.

Avatar A (Me):
35.5mb texture memory usage, 146.000 polygons (~30.000 of which are rigged), ~68.000 complexity, 30m² surface area, no particles, only a tiny couple of invisible extra objects and decent usage of normal and specular map as well as emissive masking.

Avatar B (Example above)
Unknown memory usage (couldn't see at the time), 3.555.000 polygons (~90% of which were rigged), ~40.000 complexity, 82m² surface area, no particles, most of the entire avatar were extra invisible states and body parts, no normal or specular map used.

146.000 - 3.555.000 total (2435% of me or 24 times me)
30.000 - ~3.200.000 rigged (10666% of me or ~107 times my body)
30 - 82 m² surface (273% of me or 2.7 times me)
1.2x multiplier for invisible surfaces
68.000 - 40.000 complexity (58% of me or two thirds of me??)

HOW? I have less polygons. I have less rigged polygons. I have less invisible states. I have less surface area, i use less VRAM memory (pretty sure), i have less everything, hell i even use less screen space (my avatar is smaller than most others), yet for some reason Avatar B gets only 58% of my complexity, how is this even possible? How can an avatar that clearly has more impact in every aspect that is measurable have less complexity? Explanation: You weight important, impacting features way too less. Instead you focus on punishing invisible objects (which shouldn't even be rendered in the first place) and add huge multipliers on top of features that are basically free, like glow. Given you have post processing glow enabled, which you must if you use Deferred Rendering, it's being rendered at all times anyway, regardless if you can see it or not. I put up a metric fuckton of objects and made them all glow like a Christmas tree, i could not measure a single FPS difference, sure internally it probably has some sort of impact, it needs to be processed and added but its so goddamn fast. The worst offenders however are polygons, 15 polygons for a single arc if i understood correctly, however using my calculator this doesn't add up at all. To go below 40.000 arc with polygon alone (not counting all the multipliers) you'd have to count roughly every 85 polygons as 1 ARC and that's just the minimum. I wonder how you got these values. This is the reason good avatars get high ARC counts and bad ones get better or equal ones. You can shave off too much ARC by simply not using any advanced features that are meant to cut massive amounts of polygons. This gives people a false impression that using these advanced features are much worse in comparison to simply meshing out everything with polygons. In other words, ARC is simply not punishing enough. One light (i use a bunch of them for my avatar) is worth 512 ARC, that's roughly worth 43.000 polygons. One light is worth twice my avatar. Do you see the problem?

Another big problem of your complexity calculation is the fact that you roll in your statement that your calculations were tested on a variety of hardware and the new one is supposed to be tested on a wide variety of them. You are adding variables where none belong. You're trying to make compromises due to different hardware, you shouldn't. You test it on one singular, decently working hardware level, one that is fully capable of running solid 60 FPS with all options enabled and then measure the impact it has, you don't try to find the middle ground between shit hardware that can't even handle vertex shaders and sees no impact because it's only capable of producing single digit framerates and hardware that is capable of running Second Life to its fullest, by doing so you jeopardize the calculation, the only way of making the calculation accurate over a wide variety of hardware would be having a variable complexity calculation which in turn would totally and completely make complexity useless as a global value and would only ever mean something to the person itself, this would not only make optimization harder but would make setting a decent complexity limit impossible because it varies from person to person on top of the variance between Viewers already present. You need one singular test one that takes both experience of the rendering engine, as well as framerate comparisons and test results into account, that is what i'm doing here right now and i'll tell you here and now that my calculation is not misleading, it is not perfect either, perfection in a world like Second Life is impossible but my calculation does its intended job much better than what your original calculation does, it identifies resource hogs and jellydolls them, even if this means 90% of the avatars around you get jellydolled. It's not a bug when everyone gets jellydolled, its the simple fact that they are simply unoptimized and especially to you that shouldn't come at a surprise. If we really want to achieve better optimization of content we need to tighten the screws. Bad content needs to be punished, it needs to be jellydolled or outright derendered, people using said bad content should be notified that something is wrong with their stuff, if they themselves do not care enough to trigger interest in optimization then you'll have to force them by pulling the rug under their feet and unless you come up with something that i deem accurate enough to represent "complexity" that does its goddamn job of derendering resource hog people (which it currently doesn't), i'm not going to pull this custom complexity calculation that is clearly doing a better job than yours out of my Viewer, warning sign or not. I'd even go as far as changing the warning and removing that misleading "misleading" because my complexity calculation is anything but misleading, you should probably put that "misleading" to your own Viewer because it misleads people into thinking that their piles of randomly cobbled together shits is good.

THAT IS MISLEADING.

I swear to god Oz, if i see another 3.5 million polygon avatar having less complexity than me in your new calculation i'll be the very first standing on your face and yelling at you in the next meeting. I refuse to accept these stupid compromises any further, either you pull through it with an iron fist or you don't attempt it at all, doing this in-between shit is just going to get your feature disabled, because that's what they are doing already, you've seen the "guides" in clubs telling people to disable it. No?


I'm sorry for the really long rant but i can't help it, this shit is grinding my gears, it has been for years and i watched it long enough to evidently say that nothing has been done to stop the resource-hoggery that is going on right now. It's time someone with the balls tells you the truth.


Now time for me to get off and cooldown for a few days, then sort this mess out that is the update 2.9.4. Snapshots locking up, framerates becoming completely unstable, flexis going haywire and that's only scratching the surface.

Sunday, December 3, 2017

Black Dragon 64x - Update 2.9.4 "Bit Dragon"

EDIT: Apparently a fix that is supposed to fix some "save as" incremental snapshot behavior was causing the Viewer to freeze on snapshot save. I removed said fix and the snapshot function is now properly working again, in fact so good, the 10 second freeze on first time saving (due to counting your snapshots) is gone too. Those 14 people who had the misfortune to download this broken build, please redownload the fixed one.


This update should really be called Arc Dragon.


So this update mainly cuts down on the giant numbers that i introduced with the last update for the render complexity calculations, the calculations are mostly untouched but will display them much smaller with a 1/10 of their original value. This means 60.000 now is almost the same as 600.000 before, keep this in mind before you say oh wow 100.000 i'm not that bad, because it means you're actually 1 million ARC.

I also have a special something that you might want to look at, i call it the Advanced Complexity Information, it's a window that lists all avatars, their attachments and their stats as well as their individual complexity values and how this complexity comes together.



The window can be found in Dragon - Useful Features - Performance Tools - Advanced Complexity Information, right below the option to display complexity. Not hard to find. I hope to improve this window with better explanation how the checkout list on the right works but for now it should give you a pretty good idea what and why your stuff has a certain complexity value. Let the optimization begin.

Other changes include more Patreon Patron's (yay) being included and a code merge with the latest Linden Release. This fixes some inconsistencies with avatar physics, they should be more stable now (but will still go bonkers with unstable FPS) and the notorious "inventory reset" issue whenever you detach something while its open. Some crash fixes and other low-level stuff are included too.

Some cool things are planned but also some bad news are impeding. :(

Have fun and FEEDBACK FEEDBACK FEEDBACK!





Sunday, November 19, 2017

Black Dragon 64x - Update 2.9.3 "Bit Dragon"

This is really just a quick update to get some of the stockpiled changes out and to clean up some things as well as add a big change i want to get feedback on.


Avatar Render Complexity (ARC) also known as Avatar Render Cost.

I changed it. Punish me Oz senpai, i broke your toy.

No seriously, the final nail in the coffin and the sole reason i finally did it was seeing an avatar with 3.5 million polygons and 2 million vertices having almost half as much ARC as my avatar which i spend a shitton optimizing all over the place, it's safe to say that i know better than this mess of ARC whats better for my framerate (well okay i literally deattached my stuff and measured too.... but... you know...) and i'm pretty certain that this 3.5 million polygon avatar is much worse than me. So how do i go about changing it? The simplest solution available. Punish high polycounts. Punish sculpt usage. Punish all the bad things.

I can write the details if anyone's interested but the gist of it is: More stuff = more ARC. Having a higher base polygon count in most cases means you'll have a higher ARC unless you do some other nasty stuff.

Needless to say i'll be tweaking these values and possibly add an option to switch between these two calculations but for now you'll get my new one, just be warned, numbers will be MUCH higher.


Look at these numbers. LOOK AT THEM. You are bad and you are bad and you too. All of you! Except those green and yellow numbers. I suppose you already knew that most avatars totally ignore ARC hence why they have such huge numbers, both polycounts and ARC... but hey, it actually helps, i'm getting 30 FPS there, which i have never ever before.

Friday, November 10, 2017

The thing about Alpha Masking.

I think it is time to give you an idea how broken Second Life really is.

In the past months after i disabled the Automatic Alpha Masking option in deferred by default a bunch of people messaged me about "strange" rendering issues. Of course i knew exactly immediately what they were talking about and i feel it is getting too tedious to explain this over and over again to each and every person, which is the reason i'm going to write this.

First things first. What is the problem? It is this:


Notice how the cubes form an abstract art like impossible image. Notice how the right most cube is in front of the bottom one while at the same time behind it. Notice how the top cube is behind all of the other cubes whereas it is actually on top of them, the cube is casting a shadow too, you can see it coming through. So what is this? It is called z-fighting, more specifically in this case it is alpha sorting (the issue, not the alpha mode).

The renderer has issues deciding whether a given face is in front or behind another due to them using alpha rendering rather than normal solid rendering. I can't explain to you why this is a thing (regardless of if you use DirectX or OpenGL) but my personal assumption from what i know about rendering is that alphas are not included into the depth map. The depth map is (as you may have seen if you used the depth mode in the snapshot floater) a greyscale image that contains depth information for the renderer to sort objects and do all kinds of neat things. Since alphas are not included in it, the renderer has no solid way of telling which face comes in which order so it has to make guesses and and that's when this alpha sorting issue will happen.

To counter this, there are many many MANY things both the developers and the creators can do, generally the best idea which most games as of today follow is simply avoiding blend alpha as much as possible because and this is the thing, this ONLY happens with alpha blending, not with alpha masking. Alpha masking is a 1 bit alpha channel (either on or off, invisible or not) thus it can be handled like any solid surface without much problem unlike 8 bit alpha which is alpha blending.

So why not make everything alpha masking? Well... see... as much as i would like to, this is the issue. You can't just set everything to alpha masking and BAM everything is fixed, each texture is unique and needs a unique alpha masking cutoff value to go along with it so the renderer knows at how much transparency it should simply use invisible rather than visible. Even worse, some textures simply can't use it because they need the alpha blending such as if you want a color grading overlay or say transparent textures like water or other fluids. In these cases we must use alpha blending.

This will inevitably cause different alphas to clash with each other and cause alpha sorting if looked at from certain angles. Myself as furry i had this issue happen long ago very often. Every single club had a transparent floor, transparent particle clouds for fog and transparent laser lights and such all over and guess what happens if you tail is a flexi alpha blending surface? You guessed right, it's gone. It will be sorted behind all the other stuff... in between... sometimes in front and everything in between that. It's a well known issue and i'm pretty sure you have seen this happen somewhere already.

But this isn't everything, alpha surfaces are not subject to most graphical effects that use depth such as Screen Space Ambient Occlusion (SSAO) and Depth of Field. In the latter case the renderer has to reside to some dirty hack by forcing all alphas internally to solid surfaces (without masking cutoff) and using those into a new depth map with those included, the result is Depth of Field going off on places it shouldn't. Here's an example of this:


Notice how the alpha glow effect is handled as solid surface, blocking and overwriting the depth to go further resulting in depth of field looking kinda broken. The same happens with particles too.

In the case of SSAO, which simply doesn't work on alpha surfaces, you'll have to look closer. It is highly possible that in any other Viewer other than my own you most likely won't notice the absence of SSAO as SSAO is by default extremely weak and almost not distinguishable from the same scene without it. Here's an example with top being alpha, bottom being masked:


Lastly shadows. Shadows from and and on alpha surfaces have all kinds of issues. For once they don't get the soften light pass which means they are pixelated rather than blurred and softened. Shadows cast from alpha surfaces have similar issues, they appear less precise and break faster than solid shadows. See these examples, top being alpha, bottom being masked:




So why all this? What are you trying to tell me Niran? I know what alpha sorting is and if i didn't i now know about it, what's the deal? The deal is many many textures in Second Life contain an alpha channel when they shouldn't which will flag any surface you use them on as alpha blending automatically which will cause all of the above mentioned issues. What's worse, Linden Labs made a feature called Automatic Alpha Masking (Deferred) and Automatic Alpha Masking (Non Deferred) for deferred (advanced lighting model) and without it respectively, these options are a hack employed before Materials was introduced, which gives us the ability to control whether we want to use masking or blending for alphas. The issue with these hacks is that they are just that, dirty hacks from pre-Materials times that are still in effect by default, they do a piss poor job at actually masking surfaces they are applied to and they hide the fact that your texture has an alpha channel and a whole host of graphical issues coming with it. To elaborate: Automatic Alpha Masking does stop quite a few surfaces from doing the alpha sorting, given they are solid textures but with an alpha channel included (which shouldn't be included), thus stopping the alpha sorting issue to appear on them but.. this only goes for simple objects and surfaces. Enter meshes. Shadows are still pixelated, SSAO doesn't work on it, lighting is off and so on. Here is an example comparison between Automatic Alpha Masking (top) and manual masking (bottom) on meshes:



Notice how the purple light on the left doesn't have any impact on the automatic one but clearly shows up as it is supposed to on the manually masked one. Notice how shadows are soft. Notice how the entire body looks much more part of the world, i dare to say "more realistic". This is with the hack enabled, yet its still broken.

So what to do about it now? First you have to ask yourself 2 questions. Can i edit the texture? If yes, do it. Remove the alpha channel if its not needed, this is always the number one priority fix. Fixing the texture means less resources wasted for you and everyone else as well as having the issue fixed once and for all. You can do this in GIMP by selecting the "Layers" menu at the top and going down to the "Transparency" sub menu, in it you'll find the option to remove the alpha channel. Optionally you can save the texture as JPEG if you are really unsure. JPEG doesn't know alpha and don't worry, SL converts all textures to a trash JPEG format anyway, no loss compared to PNG upload. If you can't edit the texture, ask the second question, can i edit the object? If so, select the prim or the single surface you want to change, go into edit mode (right click - edit) and select the "Texture" tab. Here you should find a dropdown menu that will be reading "Alpha Blending" by default, click it and change it to "None" if you are absolutely not using the alpha channel for anything.


Select "Alpha Masking" if you need alpha to cut off body parts or holes into said body parts for instance, then change the Mask Cutoff to a value that compliments the texture and makes it look good, usually something around 70-80 is a good value. I did so with my hair and it looks much better.


Textures that are made to be used for Alpha Masking obviously look even better. If you make textures always try to avoid using blending as much as possible, try to design your textures around masking. A great example of great masking usage is this Skadi Sergal:


Notice how it uses masking for the tail fluff, arm fluff, leg fluff, mane, ear fluff, chest fluff and pretty much any sort of details that resemble hair and it looks cute and fancy.

Because all these things are so horribly broken and Automatic Alpha Masking being the only thing that tries to hide it from the user i decided to disable Automatic Alpha Masking and show you the world as it really is. Broken.

But why are you doing this Niran? Why would you do this when all Viewers aren't doing it? Because i believe that hiding the issue won't help us fix it. Other Viewers are simply pussies, they fear backlash from their users, they don't have the willpower and energy to put up with you and explain to you what the issue is and how to fix it because they see you as completely retarded, on top of that, i've met quite a few extremely ignorant people who simply brush it off as Viewer bug and "not their cup of tea". Guess what, they are horribly wrong. It IS their cup of tea, THEY fucked up in their texture and it is THEIR responsibility to fix it. Only few will however and this is why i'm telling you so you can fix it yourself... if you got modding rights. I don't care if you complain at me that messy alpha is messy. I'll tell you that alpha is messy and that there are better ways to fix it than enabling a hack which merely fixes the sorting issue half of the time.

But hold on Niran... what about those poor people who bought no mod stuff? They can't just edit the mesh/object. Well... while that is correct all i can say is. Complain. Complain complain complain, not at me of course, at the creator who dares to sell you broken no mod stuff and if they want to get rid of you by finding excuses why not to allow mod permissions, send them to me, i'll give them a lecture when and where to use .... not use mod permissions. They will either listen or be ignorant, in the latter case you should stop buying their stuff and you should tell anyone and everyone to do the same, bad content creators are one thing, ignorant, improvement resistant creators are a whole nother thing. Don't support them. Instead you could buy one of those nice avatars for which you probably pay less. Support creators who put real effort into their products, who create good content, who are interested in improving Second Life with meaningful content, not some quick cash grab garbage.

To end this post, i've recently helped someone fix their Kemono and boy i was in for some fun, i ended up going through each and every face, making it invisible to see what it is, then set it to masking if its solid and blending if its an overlay. This cost me half an hour. I hate to say it but if you can't do it, i'm willing to help you and do it for you. Here are comparison pictures of before (top) and after (bottom):



Oh right. If you absolutely have to because there is absolutely no way around it. You can re-enable the Automatic Alpha Masking hack by going into Dragon - Develop - Rendering - Automatic Alpha Masking (deferred) and/or (non-deferred). I don't recommend doing it unless absolutely necessary, you'll be lying to yourself! Pink Glasses! Pink Glasses!

Got any questions? Did i miss anything? Tell me, i'd gladly like to know how to improve this ugly mess of a wall of a text.


Black Dragon 64x - Update 2.9.2 "Bit Dragon"

This update focuses on getting the Viewer up to date with the latest maintenance changes from Viewer Bear.

This includes the inclusion of a worn tab in inventory as well as a dropdown to select a search filter type, meaning you can now search for UUIDs, Names, Creators and Descriptions. The filter window for the inventory has gotten a "created by me" and "created by others" option too allowing you to further limit your search. While adding these i thought it would be the perfect time of overhauling the filter window layout too.


And since i can't stop molesting the UI when i started i also took the time to improve the object weights window and added a triangle count display to it.


The total triangle count of each avatar can now also be seen in the avatar complexity tag and to my shock... the Viewer is rendering much much more triangles than i thought in any given scene.



These pictures also make one big problem very apparent, the utter fail that is the avatar render complexity calculation. If you look at the above second example you'll see someone with three and a half million triangles (polygons) in the right  lower corner, how this person can achieve roughly half of my ARC even with my enormous amounts of optimization both on the texture part and the avatar part is a complete mystery. No avatar with 23 times as much polygons as me should have half as much ARC as me just because i use a few lights and some flexi stuff. THIS is the very reason why you see all these shit onion layered meshes but can't see your buddy because he uses a few flexi parts. This has to stop. I'm going to touch the ARC calculations with the next update.

Then there's also the addition of the several times requested FPS throttle feature, with the Viewer Bear merge it is no a thing, you can find the option in Preferences - Display as usual.


I also cleaned up some code, added the ability to fullbright and change alpha masking locally, although they only change after deselecting and masking currently only works if a face has had a mask cutoff set at least once at some point. I'll be working on the last part, can't promise anything about the first. This should be helpful to locally fix people's faces, eyes, body and so on for a picture for instance, or simply for showing them how it would look if it wasn't broken (man i could have used this so often by now...)

Also thanks to DracO HirudO, Ken Durham, Akritos Rain and Dhalgren Correia for supporting me!

The update is in the making already, sorry for taking so long with this post.


Saturday, November 4, 2017

Black Dragon 64x - Update 2.9.1 "Bit Dragon"

Ugh

So 2 weeks later and i've been nothing but circlejerking in the Viewer trying to get something done.

Sometimes you're just working for days on something and it just wont work so you seem like making 0 progress and its kinda saddening as it delays the entire update... but ohwell here we are. I got it under control.

Today i some fancy changes for you, starting off with the new screen space reflections look, you'll find it to be a bit faster and generally better looking, have a look:

Old
New


Then there's the interface overhaul, specifically the inventory and people windows. Inventory has been one of my biggest annoyances, it's one of the most used windows in the Viewer and it just looks like someone quickly threw it together, i wanted to fix that and make a new consistent layout for all sidebar-like windows, this includes the people window and later the other ones like places, picks, groups and so on. For now it's just inventory and people, both have a menu at the top right, both show info related to it at the top left and both have just one single bottom button bar now, everything looks neatly organized now. Finally. I made the groups list a bit less crappy looking too while i was at it.


New and never before seen is the ability to preview .anim animation files directly inworld on your avatar with the Pose/Animation Manipulation window. Simply open it and hit "Create", select an .anim animation file and it will be loaded and temporarily created for you to be used. Simply select yourself and hit "Apply To" to play the animation on yourself and preview it. AWESOME.

I also made it possible to put calling cards into the top favorite bar. Currently doesn't have any special functionality besides dragging it in and showing the profile on click. I want to extend it to allow more inventory object types such as objects and MAYBE even folders for favorite outfits. I also want to change calling cards to request a teleport if the person is in your friend list and automatically track and initiate a teleport to said person if you got their map rights, just like you'd do via the map but without having to actually open it and use that stupid dropdown, favoritising your favorite friends, yay! Totally made that word up.

Now comes the bad part. Still no launcher. I decided to bite the bullet here and continue naming the versions like i previously did as it makes no sense delaying the "update versioning" because the launcher is not working, i'd end up with a gazillion betas and gammas and alphas and release candidates. Screw that we'll resume the normal versions. Right now it appears like the launcher is fully incompatible with third party viewers so you'll have to update manually when i force an update... which... is the next bad news.

I noticed that Alex Ivy (64bit) changed the way the channels are displayed, i don't know if this has any impact on the update channels so when i force an update nothing might happen... that or the Viewer will be completely locked out... in the worst case that is. There's sadly only one way to find out, so bear with me here when i start forcing this update. If shit hits the fan i'll try to get this fixed as fast as possible.

Last bad news for today. No merge with latest Linden Viewer code because... i delayed this update for 2 weeks which is already way too long and i felt like i should show some actual progress and i wanted to show a fully working Viewer before making any big changes again. I know for sure that when i merge the latest code something will break again and i'll most likely notice it 6 years later down the line, like i did with a few other things... also making smaller incremental updates makes it a lot easier to find out on which version a specific issue started happening, making it easier for me to find the specific change that caused it and thus making it easier to fix said issue.

I'd like to say that the Patreon thing has received some really positive feedback so far, and quite some people have already started supporting me via Patreon.

Thank you very much

Kei Kurono
Maddy Gynoid
Richard Call
Shiruviana
Ulrike Woltering
Viki Tran
William Betteridge
YoungBlood

Enough talk for today, enjoy 3 fancy pictures i made with the Poser and another fancy random one showing the new SSR.




Tuesday, October 31, 2017

Patreon is now live but...

I'd like to take this last chance to clear some more things up.


First and foremost. Payment. Since i choose monthly payment you might want to know when these actually happen, i don't want to get you into financial trouble so listen carefully: Every month starting on the 1st of that month and ending on the 5th of that month Patreon will start collecting the payments of the previous month meaning tomorrow from 1st to 5th Patreon will collect payments from any Patron for October. That means you should make sure that in this specific timeframe you actually possess the the money you want to pay out. Not sure how much of a hassle it is for you but i imagine the first 5 days of a month not exactly being the best time for everyone.

I said i wouldn't be using goals but i added a simple one with the lowest payment possible so anyone paying anything will get it. It's really simple, you'll get your name added into the Viewer "Special Thanks" tab in the About Viewer window, note though i'll be using the Patreon name since that is the only name i can see (i think)... but you can always tell if your name differs.

Some of you might also be interested in knowing what will happen with any additional money that wont go straight into paying the bills. They'll be put aside and saved of course so i got 2-3 months at the very least saved up just in case.

I'd also like to thank everyone again for the great support. Have a nice picture!



Oh damn that's 2 pictures. Well have a little teaser of the UI changes coming as little sorry.



You can find the Patreon page on the right side, i'd recommend holding off until the 5th unless you are really eager to support right away and get charged in the next 5-6 days.

Monday, October 23, 2017

I'll be going to Patreon.

TL:DR Nothing will change for you, don't worry. Read on.



Hello, i'm Niran.


You know me as the creator and developer of Black Dragon, the Viewer you might be using as of right now. I've been developing this Viewer for 6 years now, alone, keeping this project up on my own behalf. I don't get any money for doing this nor did i ever want to as i believe that this is what makes a hobby a.. well hobby, it's something you dump your money into to have fun, to do whatever you enjoy (not that there is much money to dump into the Viewer ). This has worked for 6 years, sort of. I had to start using my savings 4 years ago to keep going and as of recently i started fearing that i might run out of money finally, the reason i fear that day is because it is the day i'll have to drop the development of this Viewer in favor of getting a real job, but Niran wait, you can still develop the Viewer right? ... Sadly no. Developing anything that is worth showing at the moment takes quite some time (sometimes days, weeks of straight writing, compiling, testing, rinse and repeat), time i won't have anymore if i get a job, given that i'll be working 9-10 hours every day minimum and i'm a very sleepy person, i need at least 10 hours sleep a day, leaving me with roughly 4-5 hours a day do anything, including eating, drinking and everything that is needed to sustain one's life... and then there is the thing with games, i'm a gamer, i play a lot of games, with friends and family too, doing so takes priority over developing the Viewer, leaving me with next to no time to work on the Viewer, not even on weekends.

*sighs* I knew this day would come...

I was always a strong believer that free content should be free which has played a big role both in the development of the Viewer itself and everything around it. One of these things is the fact that i never had a "Donate" button anywhere because it would feel to me like i owe the donor something, sounds stupid i know, but that's how i think. Rarely people have been donating me L$ in world in varying amounts which of course is the worst approach to this, both for you and me, converting to/from L$ you lose some money and L$ don't help me sustain the development of the Viewer at all. So... to get this situation under control i have 2 options. I choose to continue developing the Viewer with the help of Patreon until i run out of money, eventually after which option B would take effect and i'll have to get a job and drop the development of the Viewer.

I wouldn't be considering this if it wasn't absolutely necessary, it wasn't for 6 years. Now it is and i hate it but it's the only way to continue on that i can think of that offers the fairness i want. You see, fairness is a big part why i chose Patreon instead of Kickstarter for example.

So what is Patreon and what is the difference between Kickstarter and Patreon? Patreon is a platform for content creators that tries to offer a solution for said content creators's problem of not being paid for their work to continue working on it. Do you draw really awesome paintings of people or do you make really well thought out videos, reviews or even a game? Patreon is for you. Kickstarter, as the name implies is a platform to collect some starting capital to "kickstart" your project, such as when you want to start developing a game but you need some money to get everything going to a point that you can release it into Early Access to get more money to fund the rest of the development. Obviously this is not going to work for developing a Viewer for Second Life, at least not very well, it is the reason i believe why Kirsten failed long ago. He tried collecting 25.000$ in a short amount of time to fully offset a well paid job for one year. This is obviously not my intention, again i don't want to get paid for developing the Viewer, my personal goal is getting as much as i need to continue working on the Viewer... which... you'll laugh is a measly ~40€ every month to pay my internet because that is obviously the main thing i need to continue developing the Viewer. I hear laughter in the distance. "Niran you're doing this for measly 40€ a month?" you'll ask. Yes. Again i want to continue developing the Viewer, not make a million and 40€ are enough do to so currently, barring food and water.

So how does Patreon actually work or more specifically how will it work for you? It's really easy. I'll to utilize the monthly payment variant rather than the per-content. Why? Monthly payment allows you as the users continue using the Viewer for free, just like you did previously, nothing will change for you but now you got the option to "donate" me on a monthly basis. You can set any amount you want to pay each month, you can start and stop whenever you want. Payments are done at the end of the month/start of the next month allowing you the flexibility of choosing whenever you want to pay as much as you want if you deem it worth. For instance, if i started slacking for a month you can simply just stop paying without any repercussions for you. Great.

Let's talk benefits. Patreon offers me to set "Goals" per user or per milestone. It hurts to say but i'll not be utilizing them, at all. Again fairness. I don't want anyone to be treated differently because they pay money. Everyone gets the same, everyone can get early builds if they ask, everyone gets support if they need it. Everyone gets everything at all times. You pay solely on your own decision whether it is worth it to YOU, nothing else. Again nothing will change, for anyone, whether they are willing to pay or not.

In theory it's very easy. My Viewer has roughly 2000 active users, up to 4000 if you count part time users. If only 50 of these people deem my work worth enough to pay at least 1$ every month (roughly 40€), i'd be totally set for a while. Sounds easy enough right? Funny sidenote: If all of those 4000 users paid 1 cent every month that would be 40$.

So when and where does it happen? Starting next month i'll make the Patreon page public, i hope to get everything set up until then. I'll post the link here and possibly put it into the sidebar too for anyone interested in supporting me. We'll see how it goes. I hope for the best so i can continue making awesome stuff for everyone to enjoy.



I'd also like to use this moment before i head off to thank everyone who donated in the past regardless of how much it was as well as everyone who thanked me for my Viewer whether it was on the blog, forum, IM or anywhere else. Thanks everyone.



Also a little teaser... the next update you'll be able to preview .anim files directly inworld on your Avatar without having to upload them. I'm currently working on the exporter to allow exporting the poses/animations you create as .anim file. I can't promise though if it ever gets done, it's a very complex thing and will need a lot of testing. Also...

New

Old 

Wednesday, October 18, 2017

Black Dragon 64x - Release Candidate 2 "Bit Dragon"

Crashfix.

Fixed a crash when opening the group tab in the people window.

Whoopsidoodles. I swear this always happens on cleanups.

Tuesday, October 17, 2017

Black Dragon 64x - Release Candidate "Bit Dragon"

Quick bugfix update


A long standing issue with the top toolbar not letting clicks through onto HUDs below them has been resolved, finally!

Also info on the ease in and ease out duration of animations has been added to the Pose/Animation Manipulator window.

The missing ban button in the group roles panel has been added and hopefully AMD cards fighting the auto-scaling memory limits should be resolved now too.


Updates weeeeeeeeeeeeeeh!

Monday, October 16, 2017

Black Dragon 64x - Beta 3 "Bit Dragon"

Usability update #3.
The last one for now.


The biggest pile of changes was writing all the tool tips for the remaining tabs, they have all been tipped with a tool if you know what i mean. This includes the panels 'Notifications', 'Controls', 'General', 'Privacy', 'Sound & Media', 'Keybindings', 'Viewer', 'Chat', 'Browser' and 'RLVa' with RLVa being the worst out of them all, i'm hardly a RLVa user and i don't know what most of these options do, i tried my best explaining what i could get from the already existing tooltips and debug descriptions but don't count on them being 100% accurate. Other tabs have gotten some improvements too, namely 'Display' tab's tooltips have been improved even further.

I overhauled the 'Animation' (Animator) tab in the Animation Controls window (which is now called 'Pose/Animation Manipulator') in an attempt to speed up animation creation and make it easier to make changes to it.

I fixed the Poser being overwritten by these pesky AnyPose posestands and moved the entire window from the 'World' menu to the 'My Useful Features' menu.

As said in the last post, i was unhappy with the 'Derender' option so i moved it out of the 'Render Avatar' menu and into the main menu to the rest of the avatar specific actions.

I disabled the pesky 'Launch the BD_Launcher instead' notification for now until we actually have a working launcher.

Controls on some vehicles that utilize Shift + Left/Right should now also work, i also added the Move Left/Right option to the sitting menu in case you want to rebind them.

This is pretty much it for now. 3 Updates focused solely on improving the interface and usability, it was a lot of work and there is still much more to do but this should at least improve on the worst parts. Also... no pictures... why the fuck are there no pictures in this post... i have to fix this.






Wednesday, October 11, 2017

Black Dragon 64x - Beta 2 "Bit Dragon"

Usability update #2


This one has quite some changes in it.

I continued adding and improving all tooltips in preferences like i did with the display tab, so far 'Interface', 'Camera' and 'IM & Groupchat' have had their tooltips created and/or updated, additionally i updated the tooltips in the onscreen movement controls window, it shows you the default buttons in green now too.

The second big thing that i spend the last 3 days working on is the avatar right click menus. Menus, plural. I changed the people menu, inworld avatar menu, inworld attachment menu, IM tab menu, speaker list menu, group memberlist menu, SLURL menu and chat title menu. Every menu that has remotely something to do with someone else or their avatar has been changed, reorganized and filled with additional options.


I think you'll quickly see that they all now have a consistent layout across all of them. The only thing i'm not yet fully happy with is the derender option being in the Avatar Render menu but then again you're most likely rarely if ever going to derender full avatars en mass, but i'm open for feedback on that one.

Most of these menus have been filled with missing options such as remove friend, block text and mute voice (you can do it inworld now finally!), report option where possible, reset skeleton options (yes you can select multiple people on the People-Nearby tab and mass reset skeleton now), view chat history option all over the place and much more. I'm sure some of you will cry in agony seeing that i touched the right click menus but don't worry, you'll get used to it very quickly and its SO GODDAMN MUCH BETTER.

Then theres preferences again, i added a few missing default buttons, changed the default buttons to clearly indicate which options they change and fixed some alignments too. Should be much easier to understand now.


While we're still in preferences again, the Sound & Media tab was changed too so it fits the general layout of all other panels... for consistency you know. Also you can now enter values directly and of course see them too, should again improve readability and make it easier to understand what is going on.


The rest is just minor cleanup, fixes, layout tweaks and translation stuff, nothing you won't notice unless your OCD triggers when something has a single pixel more offset than the previous option.

There will be a third usability update which will add tooltips to the remaining preferences tabs that have yet to receive them, there might also be a few more right click menu tweaks and some more tooltip tweaks to display tab tooltips. We'll see, only time will tell what evil-ish things i can come up with.