Saturday, January 10, 2009

Been quite busy lately !

Hello there and happy new year ! (a bit late I know)

I've been so silent lately, once again that's because I was working hard on the Restrained Life viewer and on a personal project. But before I tell you what I did on the viewer, let me tell you a bit about my own misadventures...

One year ago I had bought a new computer, a brand new Macbook Pro SantaRosa, paid with some of the money I got from SL, in order to extract myself away from Windows and to be able to compile a SL viewer from the source code. In fact I almost bought that computer solely to make the RLV (one week after buying it I could release RLV 1.0a !). My older PC was still on Windows 2000 and that system does not support all the tools needed to compile a SL viewer.

Well, "extracting myself from Windows" was a total failure because I immediately installed WinXP on BootCamp and stayed with it for a year. The MacOS X part had been totally left alone because all my favorite tools were on Windows. But three weeks ago, my Windows system crashed completely and could not be restored. Fortunately all my data could be saved, but it took me more than a week to install a fully working OS X system. And that's where disappointment came : the SL viewer on OS X.4 was totally unusable, at least on my machine. I could only get 1 FPS whatever I did. Being stuck with faulty NVidia drivers sucks, I can tell you that !

Finally I bought Leopard (codename for Mac OS X.5) in which lies new improved NVidia drivers and Hallelujah ! Works like a charm now ! But I have to run SL 1.22 because SL 1.21 is still a slideshow for me. Now what about the RLV ? I mean, I can't live without it ! So I started with Mo's Mac version of RLV 1.15.2 but it was too slow for me (not Mo's fault but my graphic card's), then switched to Hyang's CV for RC 1.22.4, which works fine but I'm not a fan of the old UI. And what if the Lindens suddenly decided to make SL 1.22 the official viewer ?

That's why I got a RLV of my own to compile on SL 1.22.4, and started to work hard on it. So what does it leave me ? I'm now fully on Mac OS X, compiling RLV on Mac, but only for myself. In fact it won't make any difference for the user, because I will still compile and release it for Windows only (through Parallels and a new Windows XP that hopefully won't crash on me again). Why not for Mac too now that I can ? Because it must be done for PowerPC and Intel platforms, has to be stripped from its proprietary libraries... I'm an amateur at it, I'll leave the experts like Mo do it instead :)

So now that I'm operational again, and that you know why I'm not working on SL 1.21 anymore (because I can't, simple as that), here are the improvements I've been working on so far for the next version 1.16 :

* Improve touch and @fartouch, by checking the actual coordinates of the click rather than the center of geometry of the root prim you click on. Thanks to Lindens who overhauled the way the SL viewer handles touches, because it could not be done that way before
* Plugged a loophole around @sittp on some special objects
* Improved speed when under heavy and numerous restrictions. You won't see the difference when unrestricted, but I went from 10 to 20 FPS while completely restrained and restricted (for the sake of testing, y'know *winks*)
* Extended @accepttp to accept tp offers from anyone (before, "@accepttp=add" would not work, on purpose)
* Hide location and names on hovertexts too, exactly like in chat messages. Now radars will have a tougher time overcoming @showloc and @shownames !
* Dots in mini-map won't turn yellow when under @shownames so you can't tell if the person in front of you is a friend or not by looking at the mini-map :)
* Added a way to force a few debug settings, so far AvatarSex and RenderResolutionDivisor. More on debug settings below, because that's an important feature
* Added chat redirect with the "@redirchat:channel=add" command. That was a very popular request ! This restriction will redirect whatever you say on channel 0 to every channel specified with @redirchat (there can be several), without triggering typing nor nodding once the message is sent. Useful for gags !
* Could force sit someone anywhere even when under @sittp
* @getstatus and @getstatusall now prepend a slash ("/") before the actual list of restrictions. I do believe this should not break content (because it won't confuse a llParseString2List command), but if you think it would break a product that you sell, please send me a notecard !

So this is what you can expect for RLV 1.16, which will be released on SL 1.22. Now, 1.22 is still on Release Candidate status so I won't release the RLV yet (it's not even completely finished), but at least you know I'll be ready when it goes gold :) Of course I might make a 1.16 over a RC if it takes too long before going gold, but that would be an exception, not the rule. Release Candidates are far too unstable to be worked from.

Lastly, and yes that post is very long I know (sorry !), here is a word about the debug settings :
As you might know, going to Advanced > Debug Settings in the viewer opens a small window full of exotic words such as "RenderResolutionDivisor", "RenderGlow" and such... they are actually internal variables that can modify the behaviour of the viewer a lot. Some of them are useless, some are crucial, and some are just... fun.

In order to not break someone's viewer (by setting a variable that would make it lag or something, we never know), my approach is a "white list" one, which only accepts some well known settings. At the time of this writing, there are only 2 : "AvatarSex" and "RenderResolutionDivisor". Here is what they do :

* AvatarSex : This one does... nothing by itself. It is "just" the variable that decides your gender, the one you chose when you signed up, remember ? As avatars don't really have a gender, scripts always have to ask the user what gender they are, or rely on "they", "their" and "them" generic words... Now the viewer can be interrogated directly with a @getdebug_avatarsex=2222 command. It can also be set, for example for forced feminization.
* RenderResolutionDivisor : This one is fun, it simulates a lower screen resolution. The higher the number, the lower the resolution. In-world, that makes you see all blurry, like if you were drunk or something. Combined with clever use of @setenv commands, it allows nice effects for sure !

Note : one can set these settings through a script, retrieve their values and also lock them out, exactly like Windlight settings.

Whew ! That's it for now, folks. Hope it does not make you drool too much. Hehe.