18 June 2018

Firestorm and OS X Mojave

At the Apple Worldwide Developer's Conference held a few weeks ago, Apple announced OS X 10.14 Mojave. In amongst all of the other things Apple announced, one announcement has made waves in the gaming world: they announced that, as of Mojave, OpenGL was deprecated and would no longer be maintained.

This is important because Firestorm, like every other graphical Second Life viewer, is based on OpenGL

I got an email from a concerned user this morning asking about the problem and urging us to convert Firestorm to Metal, Apple's new and improved 3D graphics API. Here's my reply:

***

What follows is my own personal opinion. I’m not speaking for the Firestorm team, and certainly not for Linden Lab.

I think Apple seriously shot themselves in the ass with their recent announcement. In essence, they told the gaming world to drop dead.

First, what they did and didn’t announce. What they did announce was that Mojave would deprecate OpenGL. What they did not announce was a drop-dead release beyond which OpenGL would not work. Indeed, OpenGL works in Mojave, and with a couple of fixes not related to the graphics subsystem, the Linden viewer (and, presumably, Firestorm; we haven’t tested it ourselves) runs on Mojave just fine. Those fixes will be in the next release of Firestorm, which we are moving toward.

To understand the magnitude of the problem, let me lay a couple of numbers on you. Firestorm currently consists of 25,649 files of source code, containing well over 1.2 million lines. I don’t know just how much of that is OpenGL code. What I do know is that there is no clean boundary in the viewer’s source code between the parts that use OpenGL and the parts that don’t; OpenGL is scattered throughout the entire codebase. This is true of every viewer based on the Linden Lab code, which is all of them that do graphics (with the notable exception of Lumiya, which was a ground-up implementation for Android, and a remarkable technical achievement in its own right). Some of that code is over 20 years old at this point.

Simply to factor all of that out so there’s a clean separation between the graphics code and the rest of the viewer is a monumental task. And that’s just a preliminary. Once that’s done, then a separate renderer would need to be written just for the Mac. That’s not a trivial undertaking, and to the best of my knowledge, there are exactly five people on the planet who understand the Second Life render pipeline well enough to do it: two of them work for Linden Lab, and the other three are certifiably insane. None of them are on the Firestorm team. In any event, the effort required to do this is measured in man-years.

It’s telling that Apple committed large amounts of time and money and people resources to Unity and Unreal to get their game engines ported to Metal. I’d be astounded if they did the same for Second Life. The market is simply too small.

My understanding of the Linden Lab position on this is that they’re evaluating what they are going to do going forward, and that no decisions have been made. I would hope they are at least talking with Apple to see how much time they have. They probably have contacts that let them do that. I do not, and in any case we’re dependent on what the Lab does.

While I am a faithful Mac user and have been for the last 16 years, I have not actually used a Mac as my primary Second Life system in a few years. Apple’s OpenGL implementation, not to put too fine a point on it, sucks. I usually get 30-40 FPS on one scene I spend a lot of time in, on my dual-hex MacPro 3.3 GHz/64 GB, with a Radeon R9-280X. I have actually wound up running Linux Mint natively on a second Mac Pro, this one a dual-quad 2.9 GHz/48 GB with a GTX 960. On that same scene, with the same window size, I easily turn 140 FPS or so.

Personally, I don’t see how Second Life on the Mac, at least natively on OS X, will survive the loss of OpenGL. The market’s too small and the effort’s too large to make it economical. I personally expect to find myself running Firestorm exclusively on Linux, or else under Windows in a virtual machine on OS X (which I haven’t tested at all in the past several years) at some point in the future.

Again, I must remind you that Apple has deprecated OpenGL on OS X. All that means is that they will stop supporting it at some point in the future. That point is not today, and they have not said when that point is. Until they do, Second Life, and Firestorm, will run on OS X as well as it does now.

24 January 2018

Don't just turn up RenderVolumeLODFactor!

Firestorm, like all Second Life viewers, has a large number of configuration settings. One of the most widely misunderstood is named RenderVolumeLODFactor. It’s not at all uncommon for Second Life content creators to tell their users that this should be set as high as possible so their creations can be seen properly.

But what is this magic value, and what does it really do?

LOD stands for “level of detail”, which means in how fine detail the viewer will render an object. A higher LOD means that the viewer will show the object with greater detail than a lower one. A small object rendered at a lower LOD will be shown as a simpler shape; a higher LOD will be rendered more accurately.

Of course, it takes more work to render a complex object then a simpler one, and the higher the LOD required to render it correctly, the harder your computer and graphics card have to work. If there are many objects with high LOD in a scene, your computer will slow down.

The viewer manages this by determining the required LOD based, in part, on how far away you are from the object. A small, complex object 20 meters away can be rendered with a lower LOD, and you’ll never notice the difference, because it doesn’t take up enough space on your screen to show all that detail anyway. If you move yourself (or the camera) closer, the LOD will go up because the object appears larger, and the details will become visible.

RenderVolumeLODFactor controls how the viewer adjusts the LOD based on your distance from the object. It’s used in calculating the actual LOD. A higher value makes the viewer compute a higher LOD, and render objects with more detail, than a lower value would for any given object and distance.

Content creators love to set this value high, so that your viewer shows their creations with all of the details they build in. Some creators recommend numbers in the thousands. This is a very, very bad idea.

Because a higher value makes your computer work harder, raising it needlessly slows your computer down without really doing anything to make things look better. A detail that takes up a third of a pixel on your screen won’t be visible no matter ho high you set the LOD factor. Your computer will still do extra work trying to show it, though.

Not only that, but the calculation that uses the RenderVolumeLODFactor value gives a totally meaningless result for any factor above 10. It won’t crash the viewer, but it doesn’t help matters, and you’re still running the computer much too hard to no purpose.

For the past couple of years, Firestorm has enforced a limit of 8 on that value. We recommend no higher than 4, and will reset the value to 4 if it’s set higher than that. The next release will also give you a warning if you attempt to set it higher than 4.

If you’re doing high-quality photography, then you may wish to set your RenderVolumeLODFactor higher than 4. before you do so as a matter of habit, though, try it at 4 and see if it makes any visible difference. Chances are it won’t.

We hope that creators who tell their customers to use extremely high RenderVolumeLODFactor values will stop doing so. All they’re doing is showing they don’t understand how things work.

05 October 2016

Announcing the Hospes Lategum

My wife Chibi Souther and I have been working on a new project. We've created a world, and a roleplay environment, for latex lovers in Second Life: Hospes Lategum.

***

The Hospes Lategum is a society of people who, since about 500 BC, have permanently joined physically and mentally with living latex symbionts known as Lategum. The joining gives the Host greatly extended life and immunity from a wide range of environmental and biological hazards. No Host has ever died of old age or illness, though many have died of violent causes. Their need for food and water intake is greatly reduced, as well.

In their unjoined state, Lategum are, for all intents and purposes, liquid latex. They form a hive mind and communicate among themselves. In joining with a Host, they leave the hive mind, and in return gain access to the Host's mind and senses. This allows them to experience life much more directly.

The Lategum retain their telepathic communication abilities. As the bond with the Host grows, the Host gains the ability to use that to communicate with other sufficiently advanced Hosts, and in rare instances with the hive-mind itself. This is the basis for the ranks in the Hospes Lategum. The more fully joined the Host is with their Lategis, the higher their rank. The very highest ranks, Beta and Alpha, serve as senior leadership, but that is as much due to their ability to understand what the Lategum want and give those intentions effect as it is any other factor. Further, all Hosts are equals, regardless of rank, and the Alpha is subject to the same rules and penalties as the Zeta just putting on his leotard for the first time.

When one becomes a Host - the term refers to all members, even Zetas who have not been joined to a Lategis yet - one gives up their name and clothing and other trappings of one's former life. A Zeta is given a transparent latex catsuit and a leotard, which they will not remove until they enter the tank to be joined to their Lategis. The leotard bears their Host ID. This ID is assigned by the Lategum and molded into the leotard when the dispenser gives it to the new Host. From that point forward, they are known by their rank and ID, as in "Zeta 7703". All hosts are referred to as Brother or Sister, as appropriate, as well, so one might address "Sister Zeta 7703" or "Brother Gamma 3501" or "Sister Alpha 8369". They also wear a collar that not only serves as a reminder of their service, but also bears the mark of the Hospes Lategum. The collar also marks the boundary above which the Lategis will not encase the Host.

When the Zeta is ready to be joined to their Lategis, they first remove their uniform, and stand naked for the last time in their lives. They then swear the Hospes Lategum Oath, by which they devote their lives to serving the peoples of the Earth, before entering the joining tank. The Lategum flow into the tank, and one of them joins with the new Host. The tank empties, and the newly joined Host, now at the rank of Epsilon, steps out to begin their new life.

Part of progressing through the ranks of the Hospes Lategum is spending time in silence, surrounded by liquid latex, meditating and learning to communicate with the Lategis. The required time increases as the bonds one seeks to form increase. As the Host ascends in rank, the color of their uniform leotard changes, as does the rank letter on it next to their ID.

With the sole exception of the current Alpha, all who are not fully human within the Hospes Lategum are products of the society's genetic engineering efforts. They do have human characteristics to varying degrees, ranging from nekos with feline ears and tail to people who differ from their feral antecedents only in being bipedal and sapient. Not all Children of the Lategum, as these are known, are joined to a Lategis and part of the society; many have, at their own request, been sent out into the wider world.

***

The Hospes Lategum group in Second Life is open to both sexes and all species, subject only to whether the avatar's body is such that a uniform can be made for it. The story is flexible enough to allow for a wide range of personal histories.

As a roleplay community, members are expected to be able to roleplay. In order to advance in rank, those who don't have a known history in other RP groups will be expected to demonstrate those abilities. This requirement isn't intended to discriminate, but rather to ensure that people can actually roleplay.

The only cost to become and remain a member of the Hospes Lategum is the MD Pod Prisoner suit, which is used for the meditation system. If you already have one, you'll need to have available (either saved or unpacked from the original box) a level 0 helmet. If not, the cost is L$300, and it may be purchased in the uniform fitting room. The Hospes Lategum uniforms and accessories are free of cost.

We do not require that you remain in uniform when not at the Hospes Lategum island. When there, however, you must be in uniform, including an enabled renamer and group tag. At Epsilon rank and above, you have been joined permanently with your Lategis, and so may not appear there without it.

***

Interested? Check out the documentation at the Hospes Lategum wiki. The Hospes Lategum headquarters are in the Catalina region of Second Life. Any Gamma or above member can invite you to the group.

I hope to see you there.

17 July 2015

LL to merchants: No TPV for you!

Yesterday, Linden Lab announced that merchants would be migrated to the new Viewer Managed marketplace beginning next Thursday, July 23, and that once migrated, merchants would need to use the Second Life VMM Viewer to manage their stores.

Never mind that the viewer is, as I write this, only a release candidate, not even in full release yet.

I've written before about the process we follow to keep our code up to speed with LL's. The main thing of interest here is that we need to do things in the same order as LL releases them, so as to keep merges from becoming an unmanageable mess. LL only released the prior merge, the series of attachment fixes known as Project Bigbear, this past Tuesday.

On top of that, the Lab insists that we not release code of theirs until it's at least at RC status. We can merge earlier if we wish - at our own risk. We did, actually; Ansariel Hiller has a repository she's been merging the VMM stuff into. Repeatedly. LL has, more than once in the process of VMM, reformatted the XML code that describes the user interface. Every one of those merges has been a major effort to clean up. When she complained, she was told "that's what you get for merging early". The clear message: don't merge things until they're RC.

So with all of this, we're just now getting to the point we can merge VMM into the mainline viewer. That's when we begin to make sure it fits in with the rest of the code, and find and fix bugs (often, LL's), and basically make sure it's up to our standards. Our release cycle takes a few weeks because we actually test things before turning them loose.

The upshot: We will not have a Firestorm release with VMM in time for our users who are being forced to migrate to VMM.

This is not a problem to LL, of course. As far as they're concerned, users should be on the official viewer, anyway.

To our users, however, it is a problem. LL has a terrible track record of listening to users, and it shows in their viewer. We're already starting to hear complaints from folks who want no part of the LL viewer. This thread on SLUniverse is typical.

Jessica Lyon posted late in that thread (as I write this) that we may release a preview viewer for merchants to use to do VMM while we rush through the QA cycle for the full release. This is a much less than ideal solution; previews are explicitly unsupported, may change, and aren't guaranteed to work properly. We don't like doing them. In this case, LL's ...planning may force our hand.

I don't know why LL feels compelled to force people into VMM while the viewer that's required to support it isn't even an official release yet. Whatever the reason, this seems like particularly poor planning, as well as a distinct "see figure 1" to TPV developers and users.

Sadly, it's in line with their normal ways of doing things, and what we've come to be used to.

Update, 18 July: According to this post on LL's forums, the VMM version of the official viewer won't be a full release by the 23rd either! Not only is this a "see figure 1" to TPV-using merchants, but merchants in general. The net effect, since Oz will not commit to releasing the VMM viewer next, is to force us to either push VMM as it stands now and deal with potential merge headaches should they decide to release something else first, or else hold off on our release and force users to use the LL viewer to manage their Marketplace items.

Real TPV- and merchant-friendly, LL...

07 July 2015

Another one bites the dust

I did something this morning I haven't done in years on my main account: "set home to here".

For the last several years, my home is on a sim run by my good SL and RL friend Axi Kurmin. Cursed is a Goth village, home to the last true Goth club in SL, Gothika, and carefully curated to keep an overall theme. Axi did all of the landscaping and, after an incident with a former business partner, controlled all of the building as well. There's a small commercial section, and Tonya's Restraint Works' main store and demonstration playroom are there.

All of that is, at minimum, moving elsewhere. Axi finally gave in to the stress and the economic pressures and is dropping the sim. Gothika and the cemetery that goes with it are moving. So is Axi's workshop. The other rentals are ending as of July 23, the due date of the next tier payment.

Why? Put simply, the US$295 a month sim rental is too much for Axi to support. Having her own sim let her run events her way, on her schedule and on her terms, but that's become far more stressful than fun. The rents she was able to bring in didn't come close to covering the cost. And she's got a lot better use for US$295 a month these days than running a sim that's become a source of stress.

So now we have one fewer privately-run sim in SL.

Last night, my wife Chibi and I moved our home to a new location. I have my own homestead that I used for other things, but mostly rented out. My home is now there, on a very tall hill another friend terraformed for me. (I can't terraform worth a crap.) We got a copy of the house, and moved everything to the new one in just the same spots as before so it immediately feels like home. There's still some work that needs doing, but not much.

The store and playroom are, at least for now, going to close. It's not like I got a lot of business out of them anyway. I've got a project percolating in my mind that will eventually require a new physical store, but for now my stuff will only be available on the Marketplace.

Perhaps I should rename my sim, though...somehow, Catalina doesn't seem appropriate any more.

I have to wonder how many sims are going away because of the price. US$295 a month is pretty stiff for a hobbyist, after all. With the release of experience tools, LL is giving creators the wherewithal to create the kind of experiences that Ebbe Linden says he's after. That's great, but it's getting harder and harder to be able to afford the kind of space needed to create a great experience. (And individuals are not getting grid-wide experience keys.) LL's just shooting themselves in the foot keeping tier as high as it is.

I know tier's LL's cash cow...but is that business model sustainable in the face of the outlays needed for Sansar? How many more sims can LL afford to lose? Axi's one sim isn't much, true, but it is emblematic of a bigger problem.

19 March 2015

LL says "we know what's best for you!"

Inara Pey posted a very good rundown of Ebbe Altberg's comments on SL:TNG at VWBPE 2015. There's nothing really new there, but Altberg did come flat out and say what LL had danced around before:
We have stated that we’re not planning for our client, at least for the beginning – and possibly never, but never say never -, but we’re not starting with it being open-source.
I can certainly understand why they're doing it, but it doesn't speak well for their openness to NIH ("not invented here") ideas on the new platform. Basically, they're saying "we know what's best for you, so shut up and eat your Brussels sprouts".

We've been here before. Remember Viewer 2? Yeah, me too. There's a reason that Firestorm has the overwhelming majority of users on Second Life, and Viewer 3 (the descendant of Viewer 2) is in third place: LL's viewer does not fail to suck. Users told LL all about that, loud and long - and LL didn't back off and didn't listen.

I'm sure LL has a vision for SL:TNG. I'm sure it's great stuff, working equally well on platforms from the iPhone to the Nexus 9 to the PC/Mac to Oculus Rift to...you name it. I'm equally sure it, like every software system, is designed with a specific usage style in mind. Programmers develop software with a mental model of how it is supposed to work and how users are expected to use it. No matter how hard they try not to, they can't help it.

Those mental models are very difficult for a programmer - or a system architect - to overcome as he works, and yet they're the first thing to go by the wayside when actual users start to use the system. Just like no battle plan survives contact with the enemy, no software system survives contact with users intact. This is the way of the software world. A wise system architect takes that into account, and designs systems with maximum flexibility for different usage styles and patterns and needs.

LL's track record in this regard, not to put too fine a point on it, sucks rancid pond water. Why? Because they have a terrible record when it comes to listening to what their users have to tell them.

In an ideal world, there would be little need for a Firestorm, let alone room for it to demonstrably become users' favorite viewer. That's because, in an ideal world, LL would implement the capabilities of the viewer that users want and need themselves.

As I said, I can understand LL's hostility to the idea of SL:TNG being open source. When it comes to SL, LL is in a very unenviable position for a business: they do not control their own platform. They can't make significant changes to it without getting viewer developers - a bunch of unpaid volunteers who have other things to be doing with their time - to line up behind changes. No business wants to be in that position, and most businesses can't afford to be there for very long. In fairness, the only way LL was going to regain control of their platform was to do exactly what they're doing.

This is the nightmare scenario that LL, at least in their own minds, cannot afford to repeat with SL:TNG. If I trusted them to actually listen to their users when we tell LL what we want and need, it wouldn't bother me very much. The problem is that I don't and neither does anyone else. Can you see LL doing the equivalent of RLV in SL:TNG? Me either.

And that's the problem. They don't understand that there are people whose use cases for the platform do not match what their intentions are for it. Yeah, they'll probably accommodate furry avatars. (And the folks who can get in early with good stuff will do well. But Maya, LL? A 3D modeling program that's hideously expensive and has a reputation of being even harder to use than Blender?! Forget about user-created content...) But the adult BDSM community, for example, can go whistle.

Make no mistake, there's lots to like about what Ebbe laid out for SL:TNG. A new avatar skeleton and base that fails to suck is a welcome advance. C# as a scripting language is a sensible choice, if not the choice I'd make. (I'm a Python bigot.) (And to the guy who claimed on Inara's blog that LSL is a functional, fourth generation language: What are you smoking and where can I get some?) An emphasis on new user discoverability is a good thing, to draw people in and keep them. Scalability is immensely important. And the change in emphasis in revenue generation from tier to sales taxes is imperative.

Still, there's a big gaping hole in LL's plans, labeled "user direction for the platform". LL's not going to hand over control to outsiders. But there has to be a happy medium there somewhere. I'm disappointed they're not even trying to find it.

15 February 2015

Thrown out of paradise

A good friend of mine is currently spending time as a bane. He may be the last bane in Marine Kelley's program, as it's been shut down, but he's still sealed into his banesuit. He's serving a 96-hour sentence that's grown by about 8 hours' worth of penalties, and he's about 44 hours in.

Needless to say, he's been spending a lot of time sitting around, enjoying the scenery. He'd settled on the spectacular sims that make up the Calas Galadhon park as being wonderful places to hang out. He even wanted to contribute to the park, so he donated L$5000 to its upkeep. This is his second sentence, and he spent most of the first there, as well.

This afternoon, though, he was informed that he wasn't really welcome at Calas Galadhon. One of the owners there asked him to stay away from places where others might want to enjoy the park, and that while the sims weren't designed for role-play, the owner would let it go as long he was somewhere out of the way.

I know all this because the conversation was routed through me. My friend contacted me outside SL, since as a bane he's thoroughly locked down with RLV, and I spoke with the owner on his behalf.

My friend isn't sure what he did to cause the problem, but he's decided to stay away from Calas Galadhon so as not to cause any more problems than he already has. He's looking for other places to hang out where he won't get run off.

Speaking for myself...I've long thought Calas Galadhon was one of the jewels of SL. The builds are spectacular, and obviously a labor of love. The owners have poured their heart and soul, as well as a highly nontrivial amount of money, into those sims, and it's their right to run them as they choose.

Still, I'm a bit disappointed that my friend feels unwelcome there...