Tuesday, September 29, 2015

Late September update

Although I only just pushed the "publish" button on the previous post, I did want to give an update on a couple of other new features that I've implemented, that will be available in the same update that includes support for "bound poses".

First is a new on-chat event that fires when the wearer speaks in chat.  The wearer's most recent chat is now available in a variable, and the combination of these two features makes the implementation of chat filters, garblers (think gags) or other manipulations of speech possible.  The on-chat event and the speech variable operate even if speech is prohibited (via mayspeak no), which allows for an interesting effect where open chat is suppressed but attempts to speak are redirected as IMs to an owner.  When coupled with an inability to hear anything except the sub's owner's speech (via mayhear no mayhearme yes), this enforces an isolation from other people in SL and a dependence on the owner that's much more effective that simply forcing the use of IMs.  Since the sub's owner's speech is still audible, people who overhear (one side of) a conversation are likely to figure out what's going on, which some subs may find exciting.

At the moment, implementing a decent garbler would be pretty hard, given that it would have to be done using the Mesmerizer's built-in expression language.  If I want to support this use, it would probably be better to create an "extension point" where an external script can interface with the Mesmerizer in a supported way.

The second new feature is the ability to store and execute scripts in notecards.  A script is any sequence of Mesmerizer commands, although as the original intent was to allow a Mesmerizer to carry around a collection of trances, there is special support for writing text to the wearer's screen.  Indeed, the initial implementation only supported scripting of trances, automatically enabling a spiral and background pictures during the run of a script.  However, the ability to use any Mesmerizer command means that Mesmerizer scripts are capable of being much more that just hypnosis scripts, so now the background pictures and spiral have to be explicitly enabled by the script.  While my expectation is that they will still be used primarily for stored trances, scripts can also be used to collect any sequence of commands into something that can be run by a single command.  So they are rather like the existing execute command (which allows the firing of a trigger), except that they're much better suited for running long sequences of commands, and that you can define any number of them without causing trigger recognition to slow down.

The big down-side of these scripts is, of course, that they are notecards, which means they can't be added or altered dynamically.  I have been considering supporting in-memory storage of scripts as an alternative, which would allow them to be dynamically modified.  My concern with that is around memory management - avoiding the dreaded stack/heap collision error.  I think I need to come up with a robust solution to that before I make dynamic scripts public.

Both these features, along with the bound poses and the accompanying re-vamp of modes, should be available in the beta version soon.  To upgrade, just send me an IM and I will swap your existing Mesmerizer for the current version.

New release version and looking forward

A brief update on how the CHAOS Beta is going, as well as what to look for in the next update.

 

 0.97v

So far, there has been one serious bug found in the Mesmerizer, which necessitated issuing a new release - 0.97v.  If you are using an earlier version, please contact me (Nue Broome) in-world and I'll replace your Mesmerizer with the latest release version.  The effect of this bug is that you couldn't remove a permission or denial once established.

The Mesmerizer allows you to dynamically add permissions or denials to attempts to place you in a trance, if there is no existing permission or denial that applies to the person attempting to induce the trance.  You have the option of making your permission or denial permanent.  If you choose to do this, there is no command available to revoke the permission or denial later.  Since the mesmerizer wearer typically does not have access to any commands (unless established as triggers by an owner), the way that you would remove such a persistent permission or denial would be to edit the Access notecard.  However, this only allows you to move them from one list to another - if they were permanently permitted, you could edit the Access notecard to permanently deny them access, but you couldn't return them to the default "undecided" state.

So 0.97v adds a "reset" keyword to the Access notecard.  When read, this clears all the permitted, denied and owners lists.  The intent is that, if you need to restore the mesmerizer permissions to the state given by the Access notecard you would make the first line of the notecard be reset, which will clear the lists, and then the rest of the notecard will re-populate them.  This process removes any dynamically-added "permanent" permissions or denials.  Once you've saved the Access notecard, you should open it and remove the reset keyword, and then save it a second time, so that if it is read again it won't delete dynamically-added persistent entries again.


Upcoming

The most significant new feature I'm working on at the moment is a redesign of how modes are defined, and an expansion of the concept to support bound poses, along with drawing chains, if you happen to be wearing LockGuard cuffs.

Today, a mode is a little like a mini-AO - it defines standing and walking animations that replace whatever animations your own AO has set up, to facilitate roleplay.  The Mesmerizer comes with pre-defined Ballet and Doll modes, and, like most Mesmerizer features, is designed to be user-extensible - it's very easy to add your own modes.  Today, each mode is defined in its own notecard, with a name beginning with "mode:", so the built-in modes are specified in notecards called mode:doll and mode:ballet.  These notecards just specify the animations to be used by the mode for walking and standing.  It has always been my intent to expand the animations to include some of the other motion types, such as turning and running.

I recently started looking into adding some "bound" poses to the Mesmerizer, along with the ability to draw chains from LockGuard cuffs.  This would allow you to turn any set of LockGuard-compatible cuffs into pose cuffs.  My original intent was that this would simply involve the Mesmerizer playing an animation at the same time as causing appropriate chains to be drawn.  However, there are some "bound" poses that should allow quite a lot of motion.  For example, binding your wrists together behind your back shouldn't prevent you from walking.  The "play" command, which is the normal way the Mesmerizer causes an animation to play, is intended to be used with standing animations, and actively prevents you from walking while an animation is playing.  So it struck me that these bound animations might be much more like a mode than simply playing back an animation.

This approach offers a number of nice features.  For example, even in a more severe bound position - a hogtie, for example - there can be some mobility.  The use of a mode allows a walking animation to be specified (although the "walking" animation for a hogtie would be more like "wriggling").  The mode would be extended to allow specification of the chains to be drawn, as well as any required LockGuard id values.  It might be feasible to specify "prereq" commands that would be executed if the necessary LockGuard points aren't found - so that, for example, putting you into a "Hogtied" mode would automatically cause you to wear your favorite set of wrist and ankle cuffs, if you weren't already wearing cuffs that could properly chain.  There would likely also be the ability to specify commands that would be executed on entry and on leaving the mode - so that, for example, when you were placed in that tight hogtie, the Mesmerizer would also prevent you from touching anything that's not right under your nose.