Winter's Blog

  • Who is this “Winter” person?

Black Box: The Appearance Hud

Posted by Winter on Wednesday, March 27, 2013
Posted in: Winter's Blog. Tagged: ER, HUD, planning, scripting.
Black Box: The Appearance Hud

About a week ago, the HUD portion of the project reached it’s ‘feature complete’ state.

In theory.

I turned to my friend and mentioned that essentially, this was all the engine I would need to build a set of color-changing shoes. Just the hud, and the buttons and scripts I’d already made. Her response was “prove it”.

And so, for the last week or two, I’ve spent most of my time taking a pair of ready-made shoes, and adding customized ER textures and my shiny new HUD system. Now, this is something that a lot of stores do. There’s a lot of high-quality pre-fabricated content out there. You purchase a resale license, and then you take their often plain, white model, and turn it into something unique and desirable. The most fun of the whole project was making the latexxy textures for the boots. I had a blast doing it, and really feel good about the end result.

ER Latex Ankle Boots - Plateau

Work in Progress.. final product may vary slightly.

The harder part was yet to come. Taking this mishmash pile of prims and buttons that I called a “working hud”, and actually turning it into something not just usable, but attractive, and hopefully user friendly. This meant several days of designing button graphics, anguishing over how best to communicate “pushing this button does this thing”. And on top of all of that, I had to resize and position the buttons so they’d all fit on the HUD in attractive, and somewhat balanced arrangements. And I also had to create a few new buttons along the way that I hadn’t anticipated needing during the main scripting phase. (like a “minimize hud” button). All while keeping an eye on memory usage, and making sure the script had enough free memory to work without crashing.

Today I put the logos on the HUD. That’s the last difficult step really. From here on out, it’s the standard sort of routine.. checking permissions, removing certain debugging messages, making sure that all the parts are ready to be sold.. then putting them into a box, and creating vendor art.. choosing a price, etc. Clean up, set up, etc.

I can’t offer you a timeframe when these boots will be all finished and finally up for sale.. there’s some RL things I need to handle in the next couple of days.. and that will surely mess with my availability. But you can look for them soon.

Side roads

Posted by Winter on Monday, January 14, 2013
Posted in: Winter's Blog. Tagged: ER, frustration, holiday, planning.
Side roads

I’ve taken a break from the big bad black box project. It was running me into the ground emotionally, and I was well past needing a break.

I spent a bit of time involved in a little light RP with my Mistress, which seems to have somewhat run its course already. Then I got back into playing a bit with my child-av alt.. some fun times there, she just got a kitten!

All of that aside, I did get into a slightly different building project, thinking that if it was “just building” maybe it would be more centering. I’ve had a rough emotional time over the last couple of months. The Holidays really did me in emotionally, and coming out of that has been slow. Unfortunately, that side project, which I originally anticipated would take just a day or two, is quickly snowballing into a month-long project.

Sigh.

Unfortunately, the idea is too good to abandon or postpone.. so there we are.

I’ll keep working on this side project (which sadly, I can’t post about just yet) until it’s finished, and hopefully it won’t require as much time as it feels like it will.

At least what I’m doing is somewhat enjoyable.

Black Box: Feeling around in the dark

Posted by Winter on Thursday, January 3, 2013
Posted in: Winter's Blog. Tagged: ER, HUD, scripting, second life.
Black Box: Feeling around in the dark

I make these progress posts, as much for myself as for anyone else. It’s such a complicated project, it becomes easy to forget what I’ve accomplished from day to day.

I was nearly driven to tears at one point today, by this scripting project. So much so I ended up lying in bed with a pad of paper, scribbling notes, because I couldn’t stand sitting in front of the computer one moment longer.

Today I managed to devise a ‘standard’ for how the linkmessages within the HUD will be done. The challenge and response messages are nearly identical, but one sends a integer, and the other returns a key. I decided to use the ‘integer’ and ‘key’ elements of linkmessages to accomplish this, which was actually quite a stunning solution that I’d spent hours fighting with before I realized I could just use the integer and key slot intrinsic to every linkmessage. duh.

I also came up with a rather elegant (I think) way to compound the productID and partID into a single prefix expression, and how to test for it.

if (prefix != productID + partID && prefix != productID) return;

I’m seriously proud of that.

I managed to get the texture controls working with this system, able to integrate an included partname in the texture change controls, into the message being sent, and using the above test, telling the receiver how to deal with the information, and whether to act on it, or ignore it.

This should drastically reduce ‘heat’ in multi-part products when a message is only meant for a certain part (the boots, in the siren AV, for example).

My next task will be to integrate this technique into the other existing HUD controls. The buttons and toggles and such should be FAIRLY easy. The bitwise stuff I’m expecting to be QUITE challenging, as will be the radio button stuff. The Color changer will probably be the hardest of all to add this functionality to. I may end up “cheaping out” and just having those harder controls generate some ‘heat’ in unaffected parts… just because I’m having a very hard time picturing how I could integrate that information into a bitwise set.

Maybe get the target information from the clicked control and assume it’s the same on all searched and found controls in the same bitwise or radio set? If that’s greek to you, don’t worry. it’s pretty hard to follow for me too. but there might be a trick hiding in that statement, that I can use tomorrow.

cryptic note to self: on searching prim descriptions, find ?’s and check for matching partID before parsing the tags in the control? or just ignore everything before and including the “?” perhaps?

Silence.

Posted by Winter on Monday, December 31, 2012
Posted in: Winter's Blog. Tagged: difficult times, lonliness, sadness.
Silence.

Loneliest I can ever remember being.

Black Box: Thinking out loud

Posted by Winter on Saturday, December 22, 2012
Posted in: Winter's Blog. Tagged: brain freeze, ER, frustration, HUD, planning, scripting, second life.
Black Box: Thinking out loud

The “Resizing a matched pair of things” problem.

The HUD is dumb. really dumb. When you press ( + ), it sends the message “hood.z=1″ Now that’s all well and good, as it tells all objects with prims named “hood.z” to scale by 1x their step factor. (if the step factor is .05, for example, then this command says “scale to (1 x 0.05) + your current scale factor in relation to the default scale.. so if it’s at 2x the default scale, now it will resize to 2.05x).

That’s cool, except where it involves a pair of shoes, for example. Ideally you want both shoes to scale together as a single item, that is to say, with a single set of buttons telling both shoes to scale together.

The Problem comes in that a pair of shoes is actually two separate attachments. One shoe could get unworn, or lost in inventory.. and it’s possible (thanks to COPY permissions) that you might have two pairs of shoes, or let’s just say two shoes that you might try to wear together, that were sized to fit differently.

These two shoes of different sizes, would continue to receive resize commands from the HUD, and would scale in relation to those commands, but they would not match. The larger shoe would always stay larger than the small shoe.

Fact: there *IS* a reset button to reset the shoes to the factory ’1.0′ scale. That’s certainly useful in this case.

But Ideally, I’d want a way to command the left shoe to sync up with the right shoe.

Do I need a button for that? or should that action be default behaviour?

Creating a “Master” and “Slave” version of the receiver scripts is an option here. The Master would respond to .z commands, while the slave wouldn’t. On receiving a .z command, the Master script could calculate the desired scale factor, and spit out a .y command, that the slave script would react to AS IF IT WAS A .Z COMMAND, searching out .z prims.

This approach would add a minor amount of delay to the process, but not too much, I don’t think.

The downside is that now there would be two slightly different versions of the script that would need updating.

Perhaps this could be mitigated, by turning this into a simple integer flag in the script’s header. “isSlave”. I can then do a simple check on the whole “if message contains “.z”" bit, with a && !isSlave. That would effectively shut this function off in the slave.

This however belies a much more sinister problem intrinsic to the way the script is written thus far. The product script is programmed to ignore all messages that don’t have the correct productID as a header. that’s great, but what of the Siren av, where 5 objects all would be on the same hud, they’d all need the same product ID.

The problem is that every command meant for the shoes, would have to be checked by the gauntlets… causing a runthrough of the linkset for every command made for the boots, on every part in the set. Is there a practical way to add a ‘partID’ to targetted controls? So that things that affect all parts get a “part=*&” while targeted controls (like the aforementioned resizers) would get a “part=boots&” appended to each message? Or maybe skip the part=* bit, and if the part header is absent, then proceed with the assumption the message is meant for that object.

Black Box – The Button

Posted by Winter on Sunday, December 16, 2012
Posted in: Winter's Blog. Tagged: ER, HUD, planning, scripting, second life.
Black Box - The Button

You click buttons to get an effect.

Momentary buttons, like the kind you might find on keyboard or mouse. Press once, let go. The button doesn’t change state, it only reacts to the pressing while you’re pressing it. It’s not “sticky” in the sense that it stays on until you press it again, nor does it change the state of any other button on the HUD..

It’s “just a button”.

I added those today. Two different kinds. The simple momentary, or as I like to call it “a button”.. you click it, and it spits out whatever description it has, as a command to the object. The second was a bit more complicated, but it goes something like this.

In the past, I’ve used a fictitious product to describe some of my controls. In one memorable case, it was a penis with 5 stages of arousal. In that example, we used a set of “radio buttons” to control arousal.. because like an old-style radio you might find in a car, pressing the channel preset buttons will change the channel (or state), but you can only use one button at a time. We talked about the “grouped toggles”.. which controlled whether something was visible or not, like a piercing or a set of cock rings. Something that you could choose to show or hide, but if you wanted to show it, you’d want it to “follow” the penis’s current arousal state.

Passthrough controls were envisioned for the most part, as particle controls. While they can be used for more than just particles, I noticed a problem with the idea of using a momentary control for particles.. that being that you’d need to know which arousal state was currently visible.. so that whatever simulated fluids were being generated by the particle system.. you’d want them to be generated in the proper position in relation to the current arousal state.

Since we use radio buttons to define the arousal state, I had to build a modified version of the grouped toggles in momentary passthrough form, to get the value from the radio set when the momentary button was pressed.

Bottom line: that’s also done.

My hud is happily generating messages with each press, and the object is receiving them, and reacting properly to each.. passing the passthroughs, acting on the ones it’s programmed to act on. It’s good progress, and I’m pleased with the results so far, even if I am burdened by depression.

With this, the number of controls that need to be added has become very small.

  • resizer buttons and a built in resizer.
  • HUD rotation controls.

I’m winning the battle, one skirmish at a time.

I’m envisioning one other weird case where I might want to build a passthrough toggle, but to be honest, it’s such a weird case that I’m not sure it’s worth bothering about, and it would require adding a ganged toggle to that control type as well.

With the current passthrough controls, I can control when a particle generator starts, but if the mode “moves on” away from the generator, that generator might keep going. The simple solution is that all particles should self-terminate.. and if you want to ‘pee longer’ for example, you press the ‘pee’ button again. That approach has certainly worked in the past.

The alternative is to have a sort of toggle control that can “turn on” a certain particle, and update it’s data should the arousal state move while it’s on. There are downsides to this approach, in that the more items I gang on to a radio set, the slower updates get as it has to parse through ALL of the prims in the object one time for each command in the message.

It’s probably better, and simpler.. to just use the momentary controls for particles.. and if I want to do anything fancy like that, simply do it on the plugin level, and skip the “visible state tracking” on the HUD.. opting for a “start particles” button alongside a “stop particles” button.

Black Box – eXclusive Alpha now works

Posted by Winter on Friday, December 14, 2012
Posted in: Winter's Blog. Tagged: computer, ER, frustration, hope, HUD, mesh, planning, privacy, scripting, second life.
Black Box - eXclusive Alpha now works

The next level is done.. the .x commands now apply to the model. Turned out to be pretty darned simple to implement.

This “Exclusive Alpha” command is useful in situations in which there’s a given set of prims with the same names, and you only want to show one of them. For example, let’s take the arousal states of a penis. let’s say this fictional penis has 5 arousal states.. you only want to show one at a time.. so you want to show all prims that say “penis.x=1″ and hide all the ones that says “penis.x=2″, or 3, or 4, or 5.

That’s working. And along with it, the function that would move an optional piercing alongside those arousal states, is working too.

The exclusive alpha function is a bit sluggish in my 89 prim workbench rig.. as stated previously, the problem comes in where a button might generate 3 or 4 commands in a single message. Each command causing the linkset to be searched through once, and each tag in each prim’s description checked against the command. With 4 commands.. that can be 356 prim checks.. and with an average of 2-3 tags per prim description, that can lead to over 300 prim information queries, and over 1000 data comparisons between the moment the button is pressed, and when the action is completed… not to mention the time it takes to actually perform any linkset changes, nor the time it takes the message to be sent from the HUD and heard by the object.

Thankfully, most products I can envision using this function on, will be relatively low prim. And those that do get their primcounts up there a bit, can be shortcutted somewhat, by converting some of those prims into combined mesh objects. Referring back to the genital example, imagine a series of cock-rings that would fit on the aforementioned penis.. instead of using 25 individual torii (5 per arousal state), those rings might be combined into a single mesh object with 5 ‘faces’ that could be alpha toggled, with 5 ‘rings’ per face.. thus reducing the number of ‘prims’ that have to be checked, and speeding up the performance of the script.

With today’s accomplishment, all existing HUD controls now work as intended, if not quite as fast as hoped.

Remaining controls:

  • passthrough buttons
  • grouped passthrough buttons that can pull a value from the radio buttons
  • resizer buttons and a built in resizer.
  • HUD rotation controls.

After that, it’s back to the lock, to get it in shape to be used.

Tomorrow though, I’ll be moving my computer upstairs into my bedroom, where I’ll have privacy surrounding my online activities, for the first time in over 3 years. I’m expecting a long downtime, as I have to disassemble my desk to move it, then reassemble it, move all the bits up there, rewire, and then configure the network stuff.

Combine this with some uncertainty about the networking at home, a possible ‘going to see ‘the hobbit” plan.. and whatnot, I probably won’t see any significant return to scripting until Sunday or Monday.

The Black Box.. more baby steps

Posted by Winter on Wednesday, December 12, 2012
Posted in: Winter's Blog. Tagged: brain freeze, lonliness, planning, scripting, second life.
The Black Box.. more baby steps

Things have been quiet. Over the last few weeks, as you may have noticed, I’ve been somewhat afk from SL.

An ill-conceived attempt at dieting put me in the hospital, and then the inevitable depression and isolation that followed had me looking for new fun and adventure, which I found in the form of being a child avatar. More anxiety as astronomical hospital bills began to arrive, and I started applying for financial assistance. I came up for air once or twice to make a couple of new holiday freebies, and then tinkered just a tiny bit, with the appearance HUD.

The appearance hud became.. bloatware. Or more accurately, it became a tangled disaster under the weight of the features I was trying to cram into it. Each new button I tried to add complicated an already overtaxed messaging protocol.. to the point that I had to tear it apart and rebuild even the syntax of the messages sent BY the HUD.

A new engine for the HUD was built on the ashes of the old.. and soon the HUD was doing things I’d never expected it to be able to do… with one catch. The example object wasn’t reacting to ANY of the messages, because now I had to rewrite the receiver script.

This had all been born out of a desire to gang together commands. So that a single button or message could contain multiple commands. A ‘reset’ button, for example, might include the factory defaults for textures, colors, alpha settings, even scaling and so on. With the press of one button, I wanted the POSSIBILITY of sending 5, 10, or however many messages of any kind.. and having the receiving object process those commands and execute them, in unison.

And there lay another problem in waiting. As each command had to be processed separately, and each prim in the linkset had to be checked each time a command was processed.. and then each tag in the prim’s description had to be checked.. well soon I had loops within loops within loops.. and in an 80 prim object, that could result in 320 prims having their descriptions read, if each prim had 3 tags in the description, that could be, well let’s just say.. a lot of things to look up and check.

The larger the object in terms of prims.. the more commands in a message.. the longer the wait, the ‘delay’ would be, from pressing a button on the HUD, to seeing the result completed.

And customers would (mis) interpret that delay, as ‘LAG’.

So I made the difficult decision to go with the “fly apart, fall together” approach.. that is to say, move/hide/recolor/retexture/whatever each prim, each face, as needed, as we come to it. Meaning that instead of having a 2 second delay between pressing a button, and seeing a color change.. you press the button, and the color change washes over the affected prims in the linkset, one at a time, like a very fast moving wave. It still takes the same amount of time to finish, but it looks like it’s doing something, instead of just ‘waiting’.

It’s the best option I’ve got at this point.. and it’s not a bad solution. Most products in SL these days, use this “washover” style effect for making changes. It can be a little disconcerting at first, especially with heavily primmed items. But for the most part, we’re talking about products with fewer than 100 prims.. and most of them, with only about 20 prims in a given prim group.. meaning that at any time, on any given command, only about 20% of the prims in the linkset will be being affected by the changes involved in that command.

So where does this leave the project at this point? Color change, texture change, and “simple alpha” changes are all working (a simple alpha change is, for example, the alpha change that shows or hides the straps on the Fetish Doll Hood).. whereas, an “exclusive alpha” change (not quite working just yet) is a change like the one that would change the shape of the base HOOD when you show or hide the straps. That function isn’t done yet… but it’s very close.

Functions that remain to be implemented at this point, include the aforementioned exclusive alpha function.. a passthrough message that allows me to send messages to a plugin script from the HUD (like messages to a particle generator, for example) .. a special ‘linked’ version of that passthrough message, so it can gather it’s value from the state of other controls on the HUD (partial examples for this are already finished as part of the ‘radio’ and ‘group toggle’ controls).

Also needed will be a set of resizer controls that will be built into the HUD’s receiver script (and the establishment of the token structure that will store the scale and position data for each prim).. as well as some controls for the rotation of the HUD itself (this is more about keeping things neat, as it creates the ability to have 4 ‘pages’ or ‘tabs’ on the HUD, letting me not overwhelm the user with a solid wall of buttons.

Following all of that, will be a need to revisit the locking scripts, and teach them how to find their new tokens, since I’ve changed the syntax for how those are written. Additionally, I’ll need to spend some time with the lock, adding the filtering that determines who can see what buttons on the lock dialogs.. and of course I’ll need to add those alarm messages if the thing gets unworn while locked. Lastly, I’ll need to actually add the unlock command, so the puzzle can actually successfully unlock the item.

As you can see, there’s still a huge pile left to be done.. and I haven’t been super fast lately. That said, I’m going to try and work through it a piece at a time, as much and as often as I can stand to.

New Profile Pic

Posted by Winter on Thursday, November 22, 2012
Posted in: Winter's Blog. Tagged: artwork, second life, styles.
New Profile Pic

My current profile pic on Second Life

Made a new profile pic for SL. Also added a new userpic to my library.

 

Transgender day of Remembrance

Posted by Winter on Saturday, November 17, 2012
Posted in: Winter's Blog. Tagged: frustration, lonliness, sadness, transgender.
Transgender day of Remembrance

I’m Transgendered.

I hate the “Transgender day of Remembrance”.

This solemn occasion happens annually around this college town, where some well meaning people take turns at a podium and monotonously intone the names and numbers of our dead.

I’ve done my turn on that podium.

I’m not a numbers person. I’m not an activist. But Transgendered women die every year due to violence and things like drug overdoses and suicides, in far far greater percentages than almost any other subgroup you can name. Transgendered women of color have it worse.

I’m white, I’ll state that now. But I grew up in the San Jose, CA area, and I don’t ‘feel’ all that disconnected from the latino/mexican/hispanic culture that I grew up surrounded by. I have no claim to an ‘of color’ label, but I certainly feel their losses as my own.

I lived less than a half hour’s drive from where Gwen Araujo was murdered by 4 men that she knew, at a party in Newark, CA.

I didn’t know her, but that happening changed me, and it changed how I thought of myself, and my transition, and my home. It changed me from a lost trans girl struggling to define herself, to a angry frustrated activist, wanting to make a noise, make a change.

I tried then raising a flag under the “Transgender Liberation Front” banner, but the grey haired, old guard Trannies in the local support groups, wanted little or nothing to do with me or my issues.

A year of homelessness, and 9 years off HRT, took a lot of that fire out of me. Or maybe it was just the realities of losing my Father, my grandparents, entering middle-age, or just being so very tired of shouting into the wind, alone.

In this town, the Transgender day of Remembrance is a 4 day long festival that ends 4 days before the ACTUAL day. I call it a festival, but it is indeed fairly somber. There’s some film viewing and discussion meetings and such. Why they changed the DAY of remembrance, I don’t know. I’m a bit unhappy about that. Feels a bit like moving your local town’s observance of International Holocaust Remembrance Day because it fell on a Tuesday.

Unfortunately I put myself in the hospital for this one. I would only have been mildly interested in the Thursday ‘coffee social’.. I am not emotionally strong enough to handle the intoning right now, and I’ve seen too many depressing films. The local scene is dominated by trans men and other assigned-female-at-birth gender queer individuals. I wouldn’t expect their film choices to be uplifting, or remarkably relevant to me. I also expect a fair share of allies and supportive girlfriends and so on.

I won’t be so pessimistic as to say they’re all there looking for “ally merit badges” but sometimes I catch myself thinking it.

It’s a college town, a major university town. There’s more activists and vegans per capita than anyplace else in the world. As well as a huge number of “LUGs” and “BUGs” (Lesbian or Bisexual until Graduation).

Anyways, I won’t get to go this year. And I’m sad.

Sad, because that part of me that still wants to avenge Gwen, still wants to fly that flag. Sad because I won’t get my turn at the podium to intone the dead. But sad mostly, because in this shithole college town, there’s very little support for this one lost, poverty-line, middle-aged tranny, trying to find her footing again.. and I could use a friend or two.

Therapy starts up again soon, now that I’m back on solid food. Maybe there’s some resources out there I don’t know about, or maybe I can shoehorn myself into some of the college clubs.

Posts navigation

← Older Entries
  • about.me

    WINTER

    WINTER

    Artist, illustrator, designer, modeller, costumer, builder, & scripter:  creating costumes, furniture, & avatar accessories in Second Life.

  • Where is the ER site?

    Looking for Eclectic Randomness' main site, with links to Second Life store locations, product listings and info on our affiliate program? Click here!
  • Link Up!

    Second Life SL Marketplace Twitter Flickr YouTube RSS Feed
  • Friends

    • Cheesius
    • Kyrah Abattoir
    • Ciarhwyfar
    • Emilly Orr
    • Marianne McCann
  • MyFitnessPal - Nutrition Facts For Foods

  • Tags

    artwork brain freeze computer cooking difficult times ER fear frustration holiday hope hormones HUD illness keto lonliness love marketplace medical mesh minecraft mischief nostalgia planning privacy rogues & scoundres sadness science fiction scripting second life shopping star trek styles transgender website what I eat why do I eat that?
Proudly powered by WordPress Theme: Parament by Automattic.