Saturday, January 19, 2008

RestrainedLife 1.10 IM commands, cont'd

AND THIS IS A NO-GO.

After much talking, thinking, trial and error and technical difficulties, I have decided NOT to introduce IM commands at all. As a reminder, I wanted to make the viewer execute commands received through object IMs as well as llOwnerSays, provided the object that sends IMs to you passes some very tight tests such as "its group must the same as the parcel you are on", or "its owner must be in your friends list and must be able to map you".

Well the main reason of my step back is that many people are concerned with upcoming unsolicited @version=nnnn IMs from objects that they don't even know, eventually leading them to leave public BDSM areas because of the spam. Truth is, there is no way that I know of to check whether you're using my viewer or not, except by actually asking you with that very message and adapting to the answer or lack thereof. So the reason is social.

Technically I had to adapt too, because when receiving task IMs the viewer does not have a clue about the actual UUID of the object that sent the IM. Presumably because that object could be in another sim, and not even the root prim of its link set. I don't really know why we don't get that UUID but at least we have the owner of the object, along with its position and region, so that would have been possible.

So instead of relying on IMs coming directly from cages, the user will have to wear an attachment to "relay" chat messages from the cage (or furniture, let's not forget furniture designers) to the avatar through llOwnerSay like before. That attachment would decide to relay commands by checking the object against rules very much like the ones I have been describing in pseudocode in my previous post. So basically, what I wanted to do in the viewer will be done in a script instead, which is a sane approach if you ask me.

To be honest I am not totally decided yet. But we're making progress here, and I would like to thank you all for your precious comments and discussions in-world, special thanks going to Chorazin Allen for his very detailed concerns (and also his Relay mockup) and Ariel Moonsoo for commenting here. People who know me well know how difficult it is to convince me of something, 'cause I am more stubborn than a donkey and twice as slow* :)

Marine


(* The first one who can tell me where that line comes from and who said it, receives a full shibari set for free, or something else of the same value if they already have it ^_^)

Thursday, January 17, 2008

RestrainedLife and object IMs. Comments welcome !

I've made some progress on the viewer and am about to settle a big gripe of mine since the beginning : the ability to issue commands through object Instant Messages as well as llOwnerSay calls. But first please check the previous blog post for I have edited it to show the advancement of the "not done yet" features for the time being.

Back to task IMs. I am posting about it here and now because I want to extend the capabilities of the viewer to cages and furnitures, without the hassle of a object that the user must wear to relay commands from objects around that they don't own. For instance, you step into a cage, and if you're using the viewer it closes and prevents you from teleporting out. Without support for object IMs the user would have to wear a special attachment that would llOwnerSay everything the cage says, provided it's allowed to etc. Instead of this I want to execute IM commands very much like llOwnerSay commands. It would be so easier for content creators and users.

But it would be so easier for a griefer to take advantage of your vulnerability too ! That's why I have thought about a very tight rule to allow/deny IM commands. Let me show you its pseudocode.

IF I am accepting IM commands (off by default I think)
AND owner is not muted
AND object is not muted
AND object is in the same sim
AND object is close enough (to be determined... 20 m ?)
AND command is not "force remove outfit"
THEN
.. IF object is owned by me
.. OR object is owned by a friend who can map me
.. OR object is in the same group than the parcel I'm on
.. THEN
.... execute command

.. END IF
END IF

This way there is no need to maintain an internal list of names of the people/objects allowed to control you, as it is managed by the actual friends list. And it is persistent across sessions and installations as well. Less hassle for the user and for me, more clarity for the user. Keep in mind that it doesn't prevent your viewer from being screwed until you relog, so you will have to use the Mute List against malicious users. There is no way around that unless you keep "accept IM commands" turned off. Basically if you're in a "allow cages to keep me prisoner" mode, expect to be more vulnerable.

The critical part is the double OR : either owned by a friend who can see me on the map so that discriminates a lot and still sticks to the relationship between an owner and their subs, or set to the same group than the parcel you're on (not the one the object is on, or you'd have rogue parcels with objects griefing people around) to allow public cages to keep you in (I'm thinking of Deitide, Stonehaven, Bondage Ranch, Bondage Playground...).

I would like to hear your comments about this rule (constructive ones please), knowing that I've already brainstormed a little so I think it will pretty much look like this in the code. But I would like to hear about potential loopholes, exploits, methods I have overlooked and such. I'm asking for your advices because I consider this to be VERY IMPORTANT as it is likely to be used by many content creators soon.

Thank you for your help !

Marine

Saturday, January 12, 2008

My progress on RestrainedLife

I thought it would be nice to give you a foretaste of what's going to hit you when RestrainedLife 1.10 is out.

Yes, 1.10, not 1.05, because there will be so many new features that I think it's more like a major version, going way beyond what I had expected for it at first. Don't take this list for granted, everything in there works already except when said otherwise, but don't expect command lines as I could change them prior to release. There is no ETA either, but it's looking good already. And things that are "not done yet" can stay "not done" on release, depending on the time I have.

And when I mention a "force" feature, keep in mind it won't bypass whatever restriction applies to the object or the avatar. For instance, you can't force someone to remove all clothes if they are subject to the "prevent removing clothes" rule. In two words, "force" does not supersede "prevent".

I'll make it quick, here we go :

* Prevent wearing and removing clothes (yes, textures), per layer (shirt, undershirt, pants...) or as a whole.
* Give out the layers occupation the same way it is done with the version, on a given chat channel. The viewer answers 0 (empty) or 1 (worn), without disclosing the name of the clothes (*)
* Force removing clothes. Nasty. There will be no "force wearing clothes", though, as this requires to get them from the target's inventory (*). Perhaps a "force last worn clothes", in case of a mistake, just for convenience, but don't hold your breath.
* Prevent from opening inventory. That's extreme, but it's there. If one or more inventory windows are open when the restriction takes effect, they close automatically and won't reopen.
* Prevent from reading notecards. Yet another popular request, this feature will be loved or hated, depending on people. It does not prevent you from receiving them, but from reading them (and previewing them when received). It won't close all the notecards you had already opened though, for security reasons.
* Force sit on an object (by UUID). I had no idea about how to do it until Shinji Lungu suggested me a clever hack, which works wonders. Thank you Shinji !
* Force unsit.
* Prevent standing up : well of course. How many people requested that one, I don't know. It also prevents you from sitting elsewhere. When you sit on a cross and get chained, you'll stay where you are, period. (right now I'm sitting on a stupid plywood cube at home and I cannot lift my ass away from it. lol).
* Prevent using any non-zero chat channel except some
* Lock an attach point empty to prevent attaching anything to it, or all the attach points (cancelled, it's feasible another way)
* Force detaching whatever is worn on attach point X, or all the attach points (not done yet)
* Give out the list of attach points that are occupied by something, without giving out names, very much like the clothes
* Prevent customizing the teleport invite and reading customized invites sent by others, to go along with NoSendIM and NoReceiveIM.
* Garbage collector for orphaned restrictions (when the object that created them is unrezzed but hasn't removed its restrictions) (not done yet)
* Secure way to send commands to an avatar through object IMs. That's a very important feature that I would like to discuss with some people, I'll even post something about it here before releasing, as it's supposed to be secure but I want to be sure. (not done yet)
* And a couple of bugfixes and loopholes that I will, of course, keep unsaid. Thanks to the people who told me about them !

(*) You'll find out I'm very careful about disclosing private information, even the name of the clothes you wear, and I don't want to mess with the inventory in any way either. I could do it but I won't, because I don't want the viewer to go against the ToS. I hope you understand.

Marine

Edit : Updated the "not done yet" features to either "done" or "cancelled", and added new features at the end

Monday, January 7, 2008

A word about the Banesuit

So I've kept myself pretty busy lately, working solely on that Banesuit. First of all, so you get an idea, here are some pictures, and let's talk about its look-and-feel :


The Banesuit as a whole

The Bane Helmet


The rear of the Bane collar

Under one of the numerous punishments (here, lockdown and semi-blindness, static is actually animated in-world)



As some of you already know, this latex is the Powers of Creation black latex skin (yes it's a skin, not an outfit), which is perfect for the overall glossy look described in the novel. What you don't know is that Kai (the creator and owner of PoC) has been kind enough to accept putting a vendor wherever I may choose to set the processing lab at. That way future Banes will buy from this vendor (if they don't have the suit already) without having to move and break the roleplay. The shoes are Graves black boots but they're not part of the outfit, I just like them very much (it's a gift). I'm still torn about the standard shoes, I would think of regular platform ones, but they're not very sexy. You can be a Bane and be sexy, right ? Hehe.

Now the helmet. It is a sculpty made by yours truly, one prim only so easy to resize in all directions independently according to the shape of the head. Its shape is a bit different from the novel, which is a featureless ovoid, but it didn't look good here. This shape looks creepier, with only a nose, no mouth, no eyes, no brows, no hair. Total loss of identity and yet still looking slightly human. I don't think I will texture it either, because making it latex-covered wouldn't look good in my opinion. This helmet is rigged with nasty scripts : a Custodian, a Spy, and very likely an Eudeamon. More on those below.

The collar is purely SL, as there is none in the novel, but I like the look of it and it reinforces the feeling of ownership and total control. It looks a bit like the KDC med posture collar, which I love, but is different enough to not be an issue. It restrains the movements of the neck (it's a posture collar after all) without keeping it still, displays the name of the Bane and has a red LED that lights up when monitoring is on. And there is a tiny print on the back, as seen in the picture above. Guess what the keywords are ?

Now that you know the look of it, let's see what happens when the suit is sealed around the soon-to-be Bane ? The Bane has to activate the Spy script (which is pretty much like the one in the shackles collar), then the Operator locks the helmet and... the Bane cannot remove the outfit anymore, nor wear clothes. She cannot read notecards. She cannot rez, or build anything. She cannot detach the helmet nor the collar. She cannot send or receive IMs or chat. That's all for the basic restrictions but the Custodian is still sleeping. That is, until the Operators leads the Bane to the release area and says "Custodian, initiate full protocols". Then the Custodian comes to life and starts monitoring the Bane for the duration of her sentence.

And what does it do ? It monitors surrounding chat and repeats it to the Bane, with more or less jamming according to the level of deafness punishment. It prevents the Bane from speaking unless a Vox is plugged. It prevents her from entering buildings, from staying around civilians, from running, flying, using devices, listening to conversations, tping too fast. And it becomes less tolerant when violations pile up. Just like in the novel. It also complies with orders coming from the Operator, locally or remotely (with a special Spy remote). There are a bunch of commands actually, and the Bane can be punished on a whim. It will really be an exercise in frustration and obedience. I have made it give feedback very much like in the novel also, to make it more immersive. I swear the Bane will learn to hate her Custodian...

... until it turns into an Eudeamon, if ever. It will depend on a number of factors such as the time spent isolated, the places explored, the violations accumulated. I can't talk about it yet because I'm still in the process of designing it (and no I won't take suggestions). It will of course depend on who can take control of the Bane in lieu of the regular Operator, if any. That area is still blurry but I have some ideas now, that could make it work nicely.

Operators, while having the responsibility of several Banes, are not meant to spend too much time on that task (they have a life, unlike Banes. lol), it's a part-time job so to speak. The Custodian is expected to enforce behavioral restriction but roleplay is necessary or it will get old very quickly. That's why I have chosen not to automate Maintenance, as I think it's a nice opportunity to have face-to-face RP between a Bane and her Operator, allowing the latter to issue concerns to the management when necessary. It breaks isolation for a little while, but also reinforces the feeling of loneliness when it's over and she's sent back in the wild again. But RP is to be limited until the Eudeamon comes to life, on purpose. The Operator will actually take the role of the higher circuits of the Custodian, sending custom messages from time to time just to keep the Banes on their toes, and gathering feelings until they become useful to someone else, special to the Bane...

And that transition is the key. As I said earlier, the isolation is complete except to one person, and it's up to the Bane to find her.

Marine


PS : Sorry I am not going to demonstrate the Banesuit anymore, nor give beta versions to people not involved into the project already. It takes way too much time and I need to refrain from showing it off if I wish to finish it one day. Thank you for your understanding.

Wednesday, January 2, 2008

What am I working on again ?

Happy New Year 2008 everyone ! No holidays for me after all... and on top of being at RL work while others were resting, I kept myself pretty busy working in SL as well. So let's see...

Update 1.12 is done, and a few bugs have been spotted. Firstly, I had chosen to lighten the displays in order to get away from the dreaded stack-heap collision (Lockable is always about to explode, it's so big), and have changed the way the timers are shown. By doing so, I have introduced a bug that resets the timers every 24 hours. It's only a display bug, the timers are not actually reset (hence Long Timer, Autolock et al still work) but it's annoying. Secondly, the Give Keys plugin still crashes when there are more than 9 people in 30 m, which happens quite often in Pak. This is a bug I thought to have fixed long ago, and an easy one, but it's still there. Go figure. I'd also like to iron out the RL compatibility scripts and to make them shut up when you're not using the custom viewer. It is easy to do but not reliable because of the random time the avatar takes to rez when first logging on. And there are other features I'd like to add later. So 1.13 (or 1.14 for the superstitious) will be in order.

The Banishment Project (Program ?) is my number one priority. I don't talk about it much these days but I'm working hard on several technical aspects of it. Firstly, the Bane helmet, which took me some time to perfect, is now done and looks... umm... weird. It's a sculpty, black and slightly shining, designed to roughly look like a head with a nose... and that's it. It does look good but so out of this world. I know the one in the novel is just a featureless ovoid shape but I like this shape better (ovoid was looking too dull). It looks like an unfinished statue head, lacking eyes, mouth and hair. If I can I will post a pic or two later. Secondly, the Custodian script is under works and is starting to get big... I can't give too many details but what it will do is both monitor the wearer, punish her by progressively reducing some of her abilities (hear, see, move, touch) according to what she does, where she goes and what the Operator says, and link to the Spy plugin so the they can use it remotely. Oh and just so you know, I am making it as hard and mean as possible. This thing is programmed to make your life miserable, you'll know what I mean when your hearing becomes gradually harder along the time you spend near civilians. Or when your Custodian becomes jumpy and picky because you're scoring too many Violations. And these are but examples. I'm not a sadist, but I get an evil grin every time I code on that thing. It's going to be quite a challenge for every Bane, trust me.

The viewer has been added new features for 1.05 (not released yet but soon). It can now prevent the user from adding and/or removing pieces of clothing, either all of them at the same time or only some specific parts (you can lock shoes, or a corset, or whatever you like). This feature will be great when the Banesuit is sealed, there will be no way to remove it. It can also prevent the user from reading notecards (a popular request from isolation fans), they can be sent and received but neither opened nor previewed, at all. That too will be a good thing for Banishment. And it can prevent the user from opening the inventory windows, and closes them when the restriction takes effect. Nasty and very extreme. Use with caution. I have a couple more features to add before releasing (maybe a way to prevent the user from sending chat messages over any channel but some specific ones) but that shouldn't be too hard. I don't think I'll do the "no-stand" one now though, as it requires me to find a way to force the user to sit somewhere, and I'm not even sure I can do that. I'd also like to base it on Windlight so it looks better.

Finally, I'm not only working. As many of you know already, I've been owned by Miss Candy Delacroix for the last month, and am enjoying it greatly. She is amazing, and can make it hard and enjoyable at the same time. I spend most of my time isolated from everyone but Her, but not enough to cripple friendships or business. As She's not online at all times, I take the occasion to work on my things, hence me being rather productive lately. We're both learning a lot from this experience and She understands me easily, as She's like me a true switch and a bondage fan. I remember Coventina used to say "true Mistresses are true slaves"... it takes a sub to Dom the right way, if you see what I mean. Oh and before you even think about bothering my Miss, don't ask, She is not a professional and is not going to take anybody as a slave. This is between us only.

Marine

Thursday, December 20, 2007

Eudeamon : what now ?

Some time has passed since S-6734's release. During that time, several other Banes (L-1109, V-4275, L-8746 and others) were born and enjoyed (sort of) their short sentences their own personal way. All of them learned how hard Banishment is, how alienating and sometimes depressing it is to not be able to communicate with friends in a world where communication is the key. But at the same time it is very rewarding, like an accomplishment, a challenge, and a vacation from the everyday concerns. From all I could read and all I've discussed about with friends, SL Banishment has the exact same effect it has on Katrina in the novel. I would call it "asymmetrical isolation" as the Bane is isolated from the world but the world is not isolated from the Bane. To pull the plug off would be "symmetrical isolation", you just cease to exist but it frankly becomes old and unrewarding very quickly. This, on the other hand, to me is BDSM at its best. Helplessness and vulnerability to an entity (the Custodian), and safety and isolation from the rest of the world.

Isolation... well sort of. It's more a matter of focusing the attention on something in particular instead of the usual scattering and waste of time. Banishment requires an Operator (a human) and/or a Custodian (a machine) to "handle" the Bane and monitor/correct her actions. For now, the two are the same because there is no script made to punish the Bane for her Protocol Violations yet. Some people are on it already. I will be working on a Custodian script as well, that will interface with the Spy plugin of my stuff (as in : the remote will have a special Custodian sub-menu and both scripts will communicate and act like one). I have done the specs already and have plenty of wicked ideas. But as it will take a while before I'm even able to start coding (some other projects are higher priority), I will not talk about what it does yet. And I need to build ground rules for a Banishment Project prior to starting anything technical. And last but not least, I don't want other people to stop their work when learning I'm working on something similar, while their creativity and experiences are what the project needs the most.

So far the group will be divided in two categories : Banes and Operators. The former will have to buy a Banesuit, while the latter will be paid to monitor the Banes (several Banes per Operator). Now will they be paid by the Banes, or by a donator (me for the matter), I still don't know. It will be a business, I'm pretty sure of it, because it requires time to monitor someone, leading to a retribution. What I'm sure of is it will be a select business, not just anybody will be able to join. To be a Bane requires an iron will and a strong personality. And only non-violent "criminals" will be allowed to go for Banishment.

So there will be Operators, and there will be Custodians. N Banes per Operator, and every Bane will have her own wicked Custodian. The Custodian-to-Eudeamon transition will of course require human roleplay (I may be specialized in AI, there is no such thing as an AI yet, let alone coded in LSL. lol). That's where things have to be really kept under control because each Eudeamon will be unique. Will an Eudeamon played by an Operator ? Or by the Bane's best friend ? I would love the second option but that would require the friend to read the novel, and that would lead to clashes when other friends learn they have not been "selected" to be part of the Bane's mind.

Mind. I'm weighting my words here. What is an Eudeamon anyway ? Barebones it is something that enters your mind, judges your inner self and decides your "value". It leads to inner peace, it creates a symbiosis that transcends human abilities, to make something almost supernatural out of the poor isolated hopeless creature, to become a human computer. In the novel we only hear about "good" Eudeamonic-Banes, those who have been judged "worthy" and granted "salvation" by their Eudeamons. But what about the others ? Those whose mind is dark enough to create a conflict with the Eudeamon ? How do they survive ? Do they turn insane ? Do they desperately attempt redemption ? Do they exist at all ? We don't know. As I said, each case is unique and that's what I want to reproduce here. The Banishment Project might become an institution one day, but it will never be an industry. Of course there will be little ways to tell one Bane from another but inside their helmets, the experience has to be unique and earned. Those who come demanding "I want to try Banishment ! Put me in a Banesuit ! Show me my Eudeamon !" will be kindly ignored.

But there is no such thing as a mind-reading computer yet. Someone has to read the Bane's mind and that's where S-6734's brilliant idea of writing her own experience down on notecards solves the problem. Other Banes did the same and I think this is the key to a successful Banishment experience. But let's take a break here. How does it work in the novel ?

Katrina is banished and starts thinking about her own condition, strives to keep her own sanity, and suffers merciless punishments from an autistic computer solely programmed to make her life miserable. But as her mind takes the heat and as time passes, that computer learns about her inner self. After some time (months usually, but in Katrina's case it went faster due to the child rescue), the Custodian is able to decipher all these thoughts, to put a pattern on them, and to find the right way to learn and anticipate the future violations (it's what it has been programmed for in the first place). And it judges. One day, the Custodian strays from its primary function and you know the rest.

The learning process is long, and I would very much compare it with reading notecards written by the Bane herself in SL. The Bane writes her thoughts, fears, findings, insights... Not necessarily long stories (I would encourage her to keep things short), but key informations that would be useful to "improve the efficiency" (whatever the meaning) of the sentence. These notecards would be aimed at the Operator and used as a base to the roleplay. Saying too much only gives them more means make her life even worse, while saying too little delays the ability to turn the Custodian into an Eudeamon. There are several possibilities : the Bane could keep all the notecards to herself until she decides to give them to someone in particular, or she could keep them until an Operator requests them and gives them to a friend of the Bane's, or something in the middle.

Perhaps the Operator will be in charge of deciding when to hand the notecards to the person who will take the role of the Bane's Eudeamon, if any. Perhaps several friends can incarnate the Eudeamon even (who said it could not be schizophrenic)... Perhaps most Banes shall never find their Eudeamon because their sentences are too short (I would tend to think the majority of Banes will be in this case, as it's about isolation in the first place). As I said earlier, this Project will not be a "find your own Eudeamon in ten days" diet program.

Anyway this duality Isolation/Salvation is the key part of the Project. Some people will come for the first part, others for the second one. Both will have to be carefully thought, tested, trashed, thought again, tested again... but we have time.

Monday, December 17, 2007

RealRestraint update 1.12

Finally ! I've been quiet for a while, working on my stuff for this update and finally released it last Saturday. Well first of all let me explain what an update really means. As I use my stuff a lot (even if not always the prims I designed), I immediately spot weaknesses and things I would want to add. And customers sometimes send suggestions (okay, a lot of them send a lot of suggestions :p), so an update is the result of a long process.

When I decide to go for it, I start working on it relentlessly until everything gets ironed out, it usually lasts two weeks. And then, notecards to write, is everything there ? Have I not forgotten anything ? Let's check again. No I did that. Did I ? Shoot, what is the version of this script again, did I compile it or is it still on my local hard drive. I check. Oh noes SL has crashed again ! And so on. It can drive you nuts, really.

Finally, the big jump, the day of release. Usually I try to release at the beginning of weekends so people have time to enjoy the new features, and I have time to correct mistakes when there is any (I say "when", not "if"). But it's a loooong process. Let's see : there are 11 items to update, every one of them being quite different from the other. Some require a new Leash script, others require a new RealKey, some require new scripts, and some even require a new build. Now, every content creator knows that SL must not be trusted. It crashes, it rolls back, it reverts permissions, a pure joy. Each product is a list of items contained in a folder, that must be put in a box, the box needing a notecard which embeds another one, and a landmark. Each box goes into the sales server and voila.

Only... this is an update, not a new release. This means that all the items must be put into the update servers (the white mushrooms), and this is where it gets funny. The Police handcuffs are in 3 versions (basic, elbows, belt), the shackles have 3 parts (of 4 items each average), and the other items are quite scattered and heterogeneous. And my inventory is a mess. lol. So it's not easy. Not mentioning that there is not 1 server but 15 scripts, each almost identical to the others, but different enough to recognize the footprint of the item to be updated.

So there are several thousands ways to make mistakes and to only spot them after the update, and it took more than 8 hours to process it all. Busy day. But not rushing, being patient and double-checking every double-check helped. Now the update 1.12 is out.

Hah ! You really thought I would go technical and put release notes here, right ? You wanted to be bashed with "Fixed this and Changed that" lines, just for your geek pleasure ? You perv. This is a well-educated blog, you know. Check my shop for details. :p