Friday, May 2, 2014

The Black Box - Reloaded

In summer of 2012 I hit a wall.

I'd been working on some new latex items that included a pair of really neat shoes. I figured I'd make them lock on, and have a little bit of color change so they matched my latex catsuits.

A few days earlier, a customer had contacted me, asking me if I could make some custom textures so their hood could match this third party catsuit that they loved. I did my best, it turned out ok.. but the way the hood was scripted, I had to remove one of the 12 built-in colors to put in their new custom color. That day, I looked at my catsuit colors and realised I didn't like some of them.

That's a hard thing to accept: that some of your work isn't as good as you'd like it to be. I held this new color in my hands, thinking how nice it would be to release it. But I couldn't make a catsuit that color, if it didn't match the colors available in the hood, implants, hairs, and so on.

The shoes I was working on.. I knew would have an issue. Even if I added 'just latex' textures to the foot part, I knew it was only reasonable for people to want to be able to match the foot part to their skins too. I'd need more than 12 latex textures there, and I'd need a tinting-tool as well.

This is of course the moment that I realized things needed to change.

I looked at my store in Healy.. constantly rubbing against the land's prim limits. I looked at how much space I was wasting in the store with ramps and walkways, and how many prims I was wasting too.

I created a whole new store made of mesh, at a time when only half the viewers could see mesh. I rebuilt my vendors to use mesh as well, allowing me to sell more products while using fewer prims, especially for things that "came in colors" like catsuits.

I planned to outsource the appearance controls. Thinking I was going to just buy an "off the shelf" texture/color changing HUD kit, I started working on a grand project to completely redesign my RLV/locking functionality in my products.

Memory Discs on the Black Box
Unfortunately, after weeks of work on "The Black Box" (as I called the locking script), I came to the realization that I needed to know how the appearance control system was going to work, before I could finish the lock

I checked into the appearance control HUD system that I had planned to buy, and asked the maker a few questions. Unfortunately, it seemed that my particular needs weren't going to be well served by his product (things like moving a piercing, if the piercing was enabled, while also changing an arousal state). To his credit, the maker of that product advised and encouraged me to make my own appearance control HUD system.



And I did. You've seen that HUD deployed in the ER Plateau Ankle Boots, and in the Jouet Doll and in the Ares Penis. It's a good system.. a touch slower than I'd like, but for what it's actually doing behind the scenes, it's honestly lightning fast.

But the 'tokens' that it uses.. the little codes in the prim descriptions that look like "eyes.c[1, 2]&lashes.a=4" aren't compatible with  the lock show/hide code in the Black Box scripts that I wrote.

I'd had this dream of a system that worked like Lego Bricks. Each product would have a locking script, and possibly one or more 'module' scripts that would add additional RLV functions. If I wanted to make a blindfold.. drop in the main locking script, and the blindfold plugin. Want to make a gag? Put in a lock, and the gag plugin. And if customers wanted something like the Fetish Doll Hood to act like a blindfold and gag? All they'd have to do is copy the gag and blindfold plugins into the Hood, and the lock script would automatically detect the plugins and know how to use them.

I spent a LOT of time on the Black Box, and it really wore me down emotionally at the time. The little tile-spinning escape puzzle was fun, but it never had it's 'unlock' button properly implemented. In fact, the whole thing had taken weeks to develop, and was still only about half finished. And it had used so much memory that I'd had to split it into two scripts.. and I was staring down the prospect of needing 3 or 4 by the time the whole plugin system was working.

The Black Box's Unlock Puzzle
And now I'd have to pretty much redo the whole thing to get it to work with the appearance HUD I'd built.

The project languished. I gave up on it. I spent my time trying to focus on making products that could use my HUD system, without needing locks... but I knew the time would come when I'd need to come up with something.

Over the past few months, I've started thinking about the Black Box.. and about 'feature creep' in general. I started accepting that maybe the grand scope of the black box project was.. beyond me.

Maybe not in terms of intelligence. I could do it.. I could work out all the functions and commands and code I'd need to make that script happen exactly the way I wanted it to. But in terms of patience, persistence.. those have to factor in to any calculation of 'ability' too. How long, honestly, can I sit and stare at code, day after day, week after week.. how many scripts, how much memory?

Is it really worth holding off fun projects like those cool shoes, for YEARS.. just to get the perfect lock?

No.

The Black Box is in my way.. it's too big, and it would require too much of me, of my time, my energy, and it's holding up the fun shiny stuff!

So, over the last few days, I've been working on a stripped down version of the Black Box project. That whole modular system? Gone.. sorry. The escape tool? As fun as it was.. I'm ditching it as well.

It's hard to illustrate a script in an interesting way. Here's a lock prim instead.

 What I've come up with is a simple, solid locking script that has a timelock. It allows self-locking, and self-owning. There's an owner's list too for up to nine owners, and the entire 'keys' concept is gone. The end result, I hope, is a bit stricter of a script.. with interesting ways to use the lock.


Own yourself, and you can undo the locks, but not the timelock. Don't own youself, and you're helpless when locked, but anyone can lock, or unlock you. Add owners, and you, or someone else can lock you into something, but only your owners can get you out.

No escape buttons. No lockpick tools.

Your only escape option is to log out into a non-RLV viewer, and reset the scripts... and you'll blank your owners list at the same time.. which means you'll have to go crawling back to them to re-add them. Of course there will be IM notices sent to your owners if you do remove your locked attachments in a non-RLV viewer.

It's a simple lock in some respects, but it's also more robust than the locks ER has had in the past, and a bit stricter too. the 9-owners should allow for more flexible play as well, and I know a lot of people will be happy that I've removed the 'too easy to push' escape button.

As of right now, the basic structure of the lock script is finished. What remains to be done at this point, is adding the commands that will tell the appearance controller to hide or show any lock prims, and writing the 'slave' script that lives in the 'left shoe' of paired/multi-part items. I feel fairly confident that these parts will be finished in a day or so.

And then I'll spend a week or so testing the system, trying to find any glitches or bugs.

When will you see it in a product? Well that's a harder question to answer. Most of the products I was developing before all this started are made with sculpts. Converting them to mesh is a small matter, but it's still a step that needs to happen. But as part of that process, I'll want to re-visit the design stage again and make them as nice as possible. Plus it's important to remember that none of those items was fully 'finished'. Likewise, updating older products will take some time as well.

But having a usable lock script will mean that I CAN make and release products that need to lock.. and it will mean that I can update older items too, without losing their ability to lock in the process.

Today, my focus is going to be on finishing out the bits that the lock script needs. We'll see what comes next once the locking script passes it's testing phase.

No comments:

Post a Comment