Sunday, July 7, 2019

Unoptimized Content is a Huge Problem, But How Can LL Fix it Now?

Like clockwork, whenever the problem of unoptimized content in Second Life is brought up, there will be people saying "There's nothing to be done for it now! Changing the rules will break too much existing content!" If you've never heard any potential solutions it's easy to see why someone would come to this conclusion, but is it an accurate assessment of the situation? Not entirely, and I'll explain why.

 If Linden Lab haphazardly released "new rules" for content tomorrow, such as a hard cap on avatar complexity or a complete change in the way Land Impact is calculated, there would be chaos. Almost all existing SL content would be returned and people would find they could not wear most of their favourite avatar accessories. This is the "Content Apocalypse" most people conclude will happen if LL makes any attempt to reign in unoptimized content so late in the game, but this assumes LL rushes in blinded and with a heavy hand. The fact is, LL could take a more nuanced and long term approach to the problem.

 Up until mesh importing was introduced to Second Life, object complexity for environments was kept in check with "prim limits". Every object was made of prims. Each prim counted towards land's "prim limit" Make a chair out of 10 prims, it counts as 10 prims towards that land's "prim limit". But there were three problems. First, not all prims were created equally. A torus uses far more polygons than a cube, for example. The second problem was that textures were not taken into consideration. Textures play a huge part in rendering performance and prim limits ignored this entirely. The third problem came with the introduction of mesh, because mesh could not be calculated this way. You could create a highly detailed, high poly mesh object and it would only be one object. It wouldn't do to have it count as only one "prim".

 So Linden Lab introduced "new rules", "Land Impact". Now the complexity and size of an object would determine it's land cost. Existing prim content was unaffected. If you build a 10 prim chair today, it will still only cost 10 prims. It is only when you link prim objects to mesh that the "new rules" will be applied to the whole link set. This is why linking prim objects to mesh can result in an increase or decrease in the "Land Impact" cost of said prims.

 To further push the change from "prims" to "land impact" all new features released after mesh would use the "new rules." Keyframe animations were introduced around the same time as mesh, shortly after I believe. You could use this to create much more believable elevators and moving platforms in SL. But, if you built an elevator out of prims and applied a script using keyframe animation features, the prim elevator would use the "new rules", land impact instead of prims. The same was true with materials and pathfinding and any other new feature. If you wanted to enjoy the newest features SL had to offer, you would have to use the "new rules". And over time more and more new features and new content using those features appeared, after only a few years almost the entire grid had adapted to using Land Impact instead of prim limits.

 You probably see where I am going with this. LL could introduce "new rules" to content creation yet again, using the same approach. Let's use animesh as our example starting point. Animesh already calculates LI differently than existing mesh content, and if you link a static mesh object to an animesh object it will change how it's LI is calculated.

Animesh can also be worn, it would not be a stretch to make it so if you want to wear animesh you have to adapt to a hard cap on avatar rendering impact. It could work much like land impact already does. In order to be effective avatar rendering impact would have to take texture use and polygon use into better consideration than ARC currently does. Avatar rendering impact would also need to be universal, not different viewer to viewer like ARC currently is.

Legacy content would be preserved in that to revert back to the "old rules" you would simply need to detach any content using new features like animesh. People could continue using their old, laggy content as much as they liked, but over time the draw to adapt to the "new rules" would get stronger as more and more features were released. In fact, I'd argue that retroactively applying this change to animesh now would still be feasible. Animesh is new enough and rare enough that most content would remain unaffected. There'd be grumbling, sure, but it would be a drop in the bucket and quickly pass.

"But that would just mean people would refuse to adopt new features!" This is the argument some make. It's rubbish. You only need to glance around SL to see how many people have refused to adopt mesh, materials, etc to see the folly of this argument. People like new features. As long as those features add to the SL experience, people are willing to make the compromise. And the more such features add up, the stronger the case for adapting becomes. The fewer the holdouts remain.

To be clear, this approach would not solve SL's performance woes overnight. This approach takes the long view. Preserving legacy content and allowing the userbase to adapt to the "new rules" at their own pace. It would likely be 3-5 years before we finally saw widespread improvement, and that's perfectly fine.

 LL can afford to take the long view. SL isn't going anywhere.

No comments:

Post a Comment