INI Files and Associative Arrays in LSL on OpenSim

I have a dirty little secret. As much as I love building and tinkering and just plain messing around in-world, something I haven’t done nearly enough is script with LSL. It isn’t because I can’t. Although I relegated programming to a hobby years ago now, I once wrote software for a living. Picking up the basics of LSL really isn’t a challenge. The problem is that I just don’t like it. It’s… very awkward. It’s fine for a small, simple script, but once you try to do anything really large it gets unwieldy to the point where I just want to bang my head on the desk. I have a whole laundry list of things I wish LSL did better, but this post isn’t really about that. Instead it’s about one way I make my life a bit easier. Or about killing two birds with one stone.

Continue reading


Imprudence is OpenSim’s IE6

No more Imp!If you’d asked me just a year ago if I’d tell people not to use Imprudence on OSgrid, I’d have thought you were joking. Never was there a better viewer for OpenSimulator; Team Purple made a significant effort to make quite certain that OpenSim support on Imprudence was second to none. It has been officially endorsed by OSgrid admins and offered as a premier download on OSgrid’s download page. For the vast majority of regions on OSgrid, usage of Imprudence 1.3 or newer easily accounts for at least half of all visitors. People are used to using it, and it fits like a very comfortable glove. I was, and still remain, a very vocal cheerleader for Imprudence as a stellar example of a third party viewer that was done right, with the utmost professionalism.

The problem is, it’s old. Imprudence hasn’t seen any updates at all since September of 2011, the last actual full non-beta release was 18 months ago now, and no new updates are anywhere in sight. Development on it currently seems moribund. Even if it comes back to life, the backlog of improvements necessary to once again make it a first class viewer in terms of features has grown quite long, and will just keep getting longer. There have been 38 (thirty-eight!) official releases of the LL viewer since the 1.23 code-base that Imprudence is based on.  That’s an awful lot of bug fixes and refinements. And that’s not taking into consideration non-official third party features that have since been created.

It has gotten to the point where Imprudence is holding us back. There have been some very nice features introduced that some content creators are hesitant (or just unable) to embrace because they fear that Imprudence users won’t be able to use them. Some new features make life quite a bit easier for users in terms of managing inventory, clothing, or privacy. A few examples of just some of the major features are:

  • Shared media (web integration and javascript)
  • Multiple attachments per attach point
  • New attachment points for the neck and root
  • Multiple wearables
  • Mesh support
  • Deferred lighting and shadows
  • Ambient Occlusion
  • Depth of Field
  • Display Name support
  • Parcel Invisiblity
  • Direct Delivery

Some of these are a bit SL-centric. Display names and Direct Delivery are unlikely to come to OSgrid or OpenSim very soon. And a few of these, like multiple attachments per point are not yet supported by OpenSim, but should be soonish.

Other features people will point to as being too slow. This is, frankly, complete nonsense. Windlight suffered from the same claim, with just as much substance. If you disable shadows, AO, and DOF in a newer viewer, what you’ll wind up with is a Windlight capable viewer just like Imprudence, only with a newer, faster, improved renderer. The only real technical reason for a user to be unable to run a newer viewer that I know of is that since the 2.7.1 codebase, SSE2 support is required in the CPU. But this has been supported in all AMD and Intel CPUs since about 2003 (nearly a decade!). If a user’s computer is that old, it is unlikely that even Imprudence barely runs. And if you happen to think mesh is too slow, then you really need to read the article written on Raz’s Blog that clears up a lot of the myths that keep circulating. Mesh is often much faster than an equivalent prim build for a number of reasons.

Things like deferred lighting really, really improve the experience. Content creators are stuck designing for an out of date look. Lights are much brighter, numerous, and more effective in newer viewers. They make a major impact in an environment in terms of ambiance. Shiny also looks different, and much, much more realistic on my opinion. Imprudence actually has some support for this if you know where to look, but it has a very old and out of date version of shadows and lighting, and it’s not at all stable. The viewer renderer has improved immensely since Imprudence’s last release, not just in that it can make things look better, but it terms of speed and stability.

I’m a little puzzled at how anyone could not want multiple attachments per point. Once you use this, you wonder how you ever lived without it. Justin Clark Casey has begun work on supporting this on a development branch of OpenSim, and Imprudence won’t be able to use it.

What’s more, LL has made it clear that soon any 1.23 based viewer is going to be obsoleted by plans to redo how avatar baking is done over in SL. Right now, baking is done on the viewer, which is then sent to the simulator and then relayed to other avatars. LL plans to instead do avatar baking server-side in an attempt or increase reliability and efficiency. You will still be able to use a 1.23 based viewer, but be ready to see everyone as gray. It is a safe bet that OpenSim will soon follow suit in an effort to retain compatibility.

I really understand the love Imprudence gets from users of OpenSim and OSgrid. It deserves that love! But it’s holding us back, and it’s old. It’s time to start exploring the many available alternatives, a few of which include Singularity, Firestorm, Zen, or Teapot. Yes, these are different from Imprudence, and make for a change you’ll have to get used to. But Imprudence is the past. It isn’t joining us in the future. Change in this circumstance is good, and we’ll do ourselves a favor to fumble just a little but with an interface that’s a bit different until we’re accustomed to it. The fumbling won’t last long, and in just a little while you’ll wonder why you waited so long.