Friday, August 16, 2019

Pixel Factory Debut!

After a long, long hiatus I am relaunching my Second Life store as Pixel Factory. I've retired all of my pre-mesh content except for my free shape set and camera HUD.

 The first brand new items are these four hair styles, designed for anime type Second Life avatars!

Each hair style is only L$150, comes in rigged and unrigged versions, including a colour HUD as well as full perm textures and UV guide for modders! You can purchase them from the Pixel Factory marketplace store now!

Wednesday, July 31, 2019

Blender for Beginners

Do you want to create content for Second Life but have never touched a CG modelling program in your life? Are you an SL pro, but have absolutely no experience beyond making content for SL? In either case I highly recommend the Blender Guru channel on YouTube. He does fantastic tutorials. He doesn't waste your time, but neither does he go so fast that you feel rushed. He doesn't skip steps and he's good about repeating tips to get you used to them rather than assuming you remember everything perfectly the first time you hear it. And he breaks everything up into bite sized lessons that never drag on too long.

Give the tutorials a try for yourself:

The beginner tutorial start here:

The intermediate tutorial start here:

Even if you've been making content for SL and consider yourself a pro, I do recommend you check out at least the intermediate tutorial. Making content for SL there are some important aspects to CG modelling that you're not likely to be exposed to, such as proper UV unwrapping.

If you believe you know all there is to modelling, at the very least I'd encourage SL users to check out this part of the tutorial, dealing with UV unwrapping:

I hope all of this helps and happy SLing!

Monday, July 29, 2019

The Best Building Tip Nobody Knows!

Use skyboxes for building interiors! 

Turn doors and other entrances into teleporters so people can enter and exit. This frees you up from the constraints of the environment and also makes sims less laggy by moving a lot of content out of rendering distance!

For example, if you have a house at ground level, make the door into a teleporter that takes people to a skybox 400-500m up! You'll see a huge FPS increase doing this because your computer will be rendering far less at once. And since you can build up to about 4000m up, you can space out your interior skyboxes. So if you have an enormous interior area you can split it into sections, spaced out to keep framerates high.

 And if you use an Experience key on your land, you can make it so people can just walk into the doors and be instantly teleported to the skybox, for a relatively seamless experience.

 If you have limited prim space you can also use this trick with a holodeck style rezzer system so building interiors are only rezzed when you're using them! This way you have virtually infinite prim space.

Textures and Lag

A lot of people never consider the correlation between textures and lag. Fact of the matter is, most of SL's performance issues are due to texture bloat. Videogames rarely use textures larger than 512x512, games like Crysis and Skyrim are often using 128x256 textures on surfaces SL users leap straight to 1024x1024 to texture!

Gamers know those 4K HD texture mods come at a big performance hit if your machine doesn't have enough memory to handle it, and even games running those mods are typically rendering a fraction of the amount of textures Second Life throws at your videocard.

 Many attachments, such as hair, even have 512x512 or 1024x1024 store logos plastered on a hidden root prim you never see, that texture is still eating up VRAM and SL only uses 512MB of VRAM for textures before your framerates start to crawl.

 A good rule of thumb is that unless a surface is 10x10m or larger, you should use a texture smaller than 512x512 and avatar attachments almost never need textures larger than 256x256 unless they're full body mesh.

 There's never a reason to texture hidden surfaces and you should always try to combine textures and use the entire texture map where possible.

Texture responsibly and happy SLing!

Tips for a Larger, More Detailed and Less Expensive Second Life!

Sadly the sim is gone, but this entire city fit into 1/4th of a sim. Including the trees and hills in the distance. All of the buildings are 1=1 scale instead of 2-3 times larger like most people in SL build. When you build smaller, the amount of space you have to work with is larger!

  • Larger mesh objects use both more space and more Land Impact. If you pay $300/mo for a sim but you scale everything up way too big (which most people do) you're essentially throwing away $225 every month because if you scaled everything down closer to 1=1 you'd be able to fit 4x more content in your sim.
  • Size is relative. If you make your avatar larger, everything around you appears to shrink. Make your avatar smaller and everything around you appears larger.
  • Animations can work with small size differences, but not large size differences. Take a dozen average adults and you'll get less than a foot difference in height compared to SL where the average adult human avatar is anywhere from 5' to 8' tall. This is why your animations & furniture rarely work well.
A bunch of furniture at typical SL sizes. My 5'7"(6' in those shoes) avatar for scale.
The same furniture reduced to 1=1 scale. The prim floor is to show how much space is saved.

Here's a more detailed article about scale in SL if you want to read more.

Happy SLing!

Sunday, July 28, 2019

Tips for a Better SL Avatar!

Here are some tips to help you avoid common proportion mistakes and create a more attractive avatar!
One of the older starter avatars. The original is on the left. On the right is my altered version. The only things I changed were the shape and the skin, but what a difference that makes!

  • Most avatars are HUGE but due to the slider limits it's easier to make an attractive human shape if you stick between 5' to 6'4".
  • Measure your head w/ a prim then see how many "heads" tall you are! Should be 7.5 to 8 heads. More means your head is too small!
  • Groin should be at half your body hight. 
  • Hips are roughly as wide as chest. 
  • Arm "wingspan" is about equal body height.

Here are free shapes to use as a better starting point:
Here's a detailed look at proportions, shape making and the appearance editor:

On the left is the default shape that comes with the Aesthetic avatar. On the right is a shape made using the proportions guide linked above. You can see that it looks less goofy and a lot more human!

 If you're using a giant beast avatar (minotaurs, werewolves, trolls) reduce the size to about 7 to 8' to make it compatible with most furniture and animations even with human sized partners.

 It's generally a good idea to keep your draw weight as low as possible. "Draw weight" or "ARC" isn't a perfect means of knowing what avatars are difficult to render, since it doesn't account for everything that results in a laggy avatar, so basically a low ARC doesn't always mean your avatar isn't laggy, but if your ARC is high then that is definitely bad.

Tips for a Better SL Experience

Here are just a few tips that can help make SL more enjoyable!

Better Camera Settings!

Tired of the SL camera sitting several metres above your head? Feel like you're actually right there in the world with these alternate camera settings!

Minimize Your Lag and Framerate Problems!

Try to keep your draw distance under 128m! Higher draw distance lowers framerates and increases lag!

Keep your Object Detail at or below 3. Some people who sell content will tell you to go into your debug settings and set Object Detail far higher than it's supposed to be able to go. They do this because they're trying to sell you broken content without proper LOD models.

Try to keep your avatar texture use under 100MB (100,000KB). You can check how much VRAM your avatar is using through the object inspect panel in the Firestorm viewer.  Select all of your attachments then open the inspect panel. The VRAM use will be listed in KB. Even 100MB is a lot, but SL content creators tend to use lots of large textures, even when they shouldn't. So 100MB is a more realistic goal.

Don't be shy! Be social!

Talk to people! Don't be discouraged if they don't reply! They're likely busy or AFK, not ignoring you.

If you're IMing a stranger to say hi, try saying a bit more. Introduce yourself and let them know why you're messaging them. You'll get more responses that way.

Join Groups and say hi in group chat to meet new people that way! This is a way more effective way of meeting new people than sending an instant message to a stranger.

I hope these tips help! Happy SLing!

~ Penny Patton

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.

Sunday, June 23, 2019

Just How Much Does Unoptimized Content Affect You?

I often talk about the need to optimize content in Second Life, and frequently I find people underestimate just how much that would improve SL for everyone. People seem to think that because SL is so old it must just have a badly aged engine and optimizing content would only improve things a little.

 They are mistaken.

Here is the reality:

If your computer was made in the last 10 years and includes a videocard, you should be able to run SL at around the max settings, never experience texture thrashing (when textures in SL are constantly going blurry), never experience stuttering (when SL freezes up for a moment), and if you have a reasonably decent net connection then everything in Second Life should load lightning fast.

 Second Life should look this good for you at all times:

And I'm not just talking you, by yourself, in a sim that looks as good as these screenshots, I'm saying you should be able to hang out in a sim with that level of detail, surrounded by about a dozen friends, and still keep your framerate around 30 FPS, if not better.

 That's with deferred rendering, depth of field, shadows, and all the shiny features turned on.

If you have a computer made within the last 10 years that includes a videocard, what would today be a low to mid range videocard it doesn't matter, and that is not what Second Life is like for you, it is 100% the fault of unoptimized content.

 Here are the specs for the computer all of the above screenshots were taken on:

  • Operating System: Windows 7 Ultimate 64-bit
  • Processor: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz (8 CPUs), ~3.4GHz
  • System Memory: 12GB RAM
  • Card name: NVIDIA GeForce GTX 960
  • Video Memory: 4GB RAM

In sims I made myself, or the handful of other locations in SL created by people who put in the same amount of effort to optimize their work, that is my SL experience. In terms of graphics, SL runs like a dream on my 10 year old computer.

If you have a computer with equal or better specs than this, and Second Life does not look like this for you ALL THE TIME, with no "visual lag" whatsoever, no long rez times at all, no blurry textures or any other graphical issues, all with 30-60FPS or better, then compare what you do experience to this because that is how much you, personally, are being affected by unoptimized content.

What about people running on much less powerful computers?

What about people running SL on laptops or other computers with no dedicated graphics card?

For some reason, a lot of people seem to draw the crazy conclusion that optimizing content won't help people running SL on a toaster. I shouldn't have to point this out, it really should be obvious to anyone, that the less powerful your computer, the more you are affected by unoptimized content.

So, I tested each of those sims on a Microsoft Surface Book from 2015. The version without the optional graphics card, so it's running Intel onboard graphics.

At low graphics settings I got a comfortable 30-40fps in all of the pictured sims. No texture thrashing. The only stuttering I noticed was when scenes were still loading, which did not take long even on a wireless connection.

I was able to turn on everything short of deferred rendering (Advanced Lighting Model) and my fps still remained in the 20's. Turning on deferred caused my FPS to tank down to 8fps.But I was still able to run SL with shiny, glow, bump mapping, local lighting, everything short of deferred rendering at a comfortable 20fps. No texture thrashing. No stuttering except during the (very brief) times it took each sim to load.

 I had a Toshiba Portege from 2007 that I used before the Surface Book. I actually kept SL installed on that laptop because it actually ran SL better than the Surface. If I can find the power cord and spare batteries, maybe next I'll dust that off and give SL a go, but I think I've made my point.

 If SL content creators put in the minimal effort to optimize their work, everyone would be enjoying the substantial benefits. That is a hard fact.

Aren't you expecting too much from hobbyist creators?

No. Full stop. If you're asking that question I can only assume you are not a content creator. Optimizing content is easy. Extremely easy. Anyone who has the skills necessary to create content in the first place already knows enough that optimizing their content would be simple for them. It adds a couple extra steps, and may cause a project to take a little bit longer to finish, but it won't be difficult for them at all.

Here's my guide for creating your own LOD models so you can have fantastic looking content with a low Land Impact cost, without telling people to murder their framerates by forcing everything to full LOD by cranking object detail way up.

Here's my guide featuring a few simple optimization tricks anyone can do, regardless of your skill level.

If you're a content creator who already has a basic grasp of Blender, here are a couple of guide series I highly recommend you check out. They will teach you all you need to know to create better, more optimized models.

For Beginnings: The Donut Tutorial!

For Intermediate Blender Users: The Anvil Tutorial!

The Donut Tutorial gives a brief introduction to UV unwrapping, but the Anvil Tutorial goes in-depth on how you can create models with no wasted texture memory. You want to fit all the details you can onto as few texture maps as possible. Always.

Both tutorials are super easy to follow, Blender Guru doesn't skip or gloss over important steps, but he also doesn't drag things out, so the tutorials move along at a quick, but not too quick, pace. I highly recommend them to anyone creating mesh content for Second Life.

Optimization Benefits Everyone

In short, everyone would benefit if content creators optimized their work. You would. I would. All of the content creators would. There is literally no downside. We'd all get higher framerates. Most of us would be able to run SL at higher graphics settings and still get higher framerates than we do now. Stuttering and texture thrashing would be a thing of the past.

 Linden Lab would benefit probably the most, because it would be a lot easier for them to draw many new Second Life users into the fold. And that would mean healthy growth, and LL would be able to afford to put even more resources into making SL even better for everyone.

Monday, June 17, 2019

Why Anticipated Second Life Features Go Unused Once Released

Linden Lab as a usability problem.

They cater Second Life towards a general audience of hobbyists, but then make the tools more difficult to figure out than similar tools found in programs aimed at professionals. For a good example of this, let's compare creating an NPC in Bethesda's creation engine compared to creating an Animesh NPC in Second Life.

 To create an NPC in Skyrim or Fallout 4, you open up the creation kit and you're met with an interface like this:

From this interface you can easily and quickly set up the NPC's skin, bodytype and other physical features. You can assign them to a specific cell in the game, choose the actions they can use, the equipment they're carrying, create dialog trees, their voice type and much more. Once all that is set up, all through the simple interface pictured above, adding the NPC to the world is as simple as click and drag. You've finished setting up an NPC that will wander around, interact with furniture, has all their animations, audio clips, everything.

 This is a tool used by professionals, and serious hobbyists, and yet to do the same thing in Second Life takes substantially more work. To keep things simple, let's focus on just one aspect, creating your NPC's appearance. Now, as of this writing, you are unable to change the appearance of an animesh NPC. Shape support is coming, and apparently soon, but to apply a shape to an NPC you will need to write a script. That's right, no sliders, no preview, just you and a text editor. You need to apply the script. Height, bodyfat, head size, arm length, hand size, each of these is a line of code in the script you'll have to write.

 Imagine for a moment you were making a character for a videogame, the character you're playing, one that gives you a lot of freedom with regards to your character's appearance. You'd get something like one of these interfaces:

Imagine if in any of these games, instead of the appearance editor you were met with this:

No appearance editor. No sliders. No preview so you could see your changes in real time. Just a text window in which you would have to use C++ or some other script language to write a program to determine your character's appearance. How far do you think you'd get?

THAT is what Second Life expects of you, when you want to create an NPC. According to the lead developer on this project, there are no plans to ever provide an interface. They expect it to all be done via script, and they think that's good enough.

 I don't mean to single them out, it's not a decision they should be in a position to make. The problem is that Linden Lab has plenty of programmers, but no designers. At least not when it comes to developing SL and its tool set. That is why it's not just this one feature. Everything in Second Life is this overly complicated. Want to apply an animated texture to the face of an object? You write a script to do that. Want to have a boat sail around in a circle? Get ready to write some code! Want to make a chair people can sit on? You need to write a program that will play the animation, and position the sitting avatar with the correct position and rotation.

 It is because of this complete lack of end user accessibility that many of Second Life's features go entirely ignored. Years ago we got the ability to create paths for objects to move around, as well as behaviour patterns and interactions, but you'll probably never see anyone in SL using these features. If you tried, you'd likely find it easier to boot up Unity and make your own videogame.

 This is Second Life's usability gap, and it has consistently been one of SL's biggest obstacles to success.

 Look, Linden Lab. Ebbe. If on the off chance this blog ever catches your eye, you need to hire some design people. I'm not talking programmers, you have plenty of those and I'm not disparaging their talents, but what you need to compliment those programmers are people who understand what the end users need to actually make use of Second Life's features and tools. People who can communicate those needs to the programmers. People who can write a design doc, then work with the programmers to make it a reality.

 Maybe you already have people like that but don't put them in a position where their expertise makes a difference. Maybe you don't and you need to look elsewhere to bring that kind of experience and talent to the table. Whatever the case, until you recognize your company's blind spots and hire the right people to shine light on SL's real problems, you won't be able to substantially turn around SL's decline, and you won't be able to create a next generation platform that people will actually embrace. You'll just keep tripping over the same problems Linden Lab has been blindly stumbling over for decades.