Work in progress, June 23rd 2009
Posted by Xugu Madison in News on 23/06/2009
I’ve just added a script to record sales from XStreetSL directly into my own database. This will simplify administration and hopefully make update delivery more reliable. Previous to this, we’ve had to search for the UUID of avatars who have bought items from XStreetSL, to deliver to (LSL only supports delivering to an avatar by UUID, not name). This can be an unreliable process when we’re dealing with several hundred avatars, so having the UUID recorded directly from the original sale will definitely help.
This is also the first step towards better support, by having an easier way for me to track what customers have bought, for when support queries come in. This means when I get vague and ambiguous support queries I stand a better chance of being able to reply directly instead of asking questions in response.
Longer term, I’m hoping to make scripts available from this web site, for anyone who has purchased them. After all, you paid for them, if LL won’t let you back them up, I might as well.
From a script point of view, my current priorities are wrapping up a roleplay “game” safe (I’ll link across to the final product once it’s done), and a rezzing vendor based off the single object rezzer. More details on both later in the week.
Reflections on selling scripts in virtual worlds
Posted by Xugu Madison in Opinion on 09/06/2009
Partly for my own benefit, partly for anyone else coming after me, my thoughts after a year of selling scripts inSL.
First of all; no-one wants to buy a script, much in the same way no-one wants software. People want magic to make their problems go away, and it’s the job of a scripter to get as close to that situation as they possibly can. Scripting is a customer service business more than it is anything else, to the point I was commenting to a friend I should call the store “Xugu’s Customer Service (and scripts) Store”.
Secondly, you probably cannot differentiate yourself from the competition on price. There are very VERY few scripts in SL that are too complicated for a bored developer to write because they fancy it, and then release for free. You therefore have to differentiate on features and support (which takes me back to my first point).
My attempts to sell more scripts by making them cheaper has only ever worked if the script is free. My most profitable item has been a L$1,000 swing/slide/blind/phase door script, despite the fact it’s the most expensive (equal) thing I sell. Temporary sales will help, if marketed correctly, but flat out setting the price low will mean people assume it’s of lesser quality.
On the other hand, features are the way forward, particularly the tricky stuff. This is a two-edged sword; get too fancy, and you’ll trip yourself up. However, scripters with a good grasp on vector mathematics (for making things spin, move, etc. in smooth ways) are rare. Scripters with a grasp on web services (for external storage, for example), also quite rare.
Thirdly, know your target audience. If you don’t know why someone would want a script, how you persuade them they do? For example, I do a builder tool for re-texturing prims; about a year before this one was written, I wrote something similar for someone else, but they wouldn’t tell me exactly what they wanted it for. Net result, they got something better suited to window texturing, and I got something I couldn’t readily sell until someone else came along with better requirements and I could finish making a script people wanted.
On a related note; shopping is inherently a bit dull. You can either make it easy, or more fun. To make it easy, focus on getting the key points about a product across to the customer; the images I use in-world and in XStreetSL are designed to provide key bullet points on a product, for example. While most of my products now have instructions available before you buy, maybe 1 in 20 avatars actually ever reads them before the purchase. To make it fun, put out widgets. You’re a scripter, this should be easy; people like things that spin, or talk, or just do fun things if they click them, leave a bunch around. My store has a rezz-day present giver, a big button marked “Do not press” and an age/height detector, for example. There are other product demos around too, but seeing a door swing isn’t so much fun (unless you’ve been really looking for a swinging door, in which case it may be the most awesome thing in the world to you).
Finally, pricing. Unfortunately, you can’t price a script by how complex it was to write, but instead you have to price based on how much the customer wants it. If you don’t think you can sell enough to cover your time, at a price the customer will pay, then don’t write it. This means selling some scripts for more than you’d like to (example: Click ‘n’ tell) and some for less than you’d like to (example: Bell script); in the end, you just have to hope it all balances out.
Also, if you put an item out, and it’s not selling well, be cautious of changing your pricing. If you got the price wrong at the start, why? If not, why are you changing it? Look instead at marketing. Talk to your target audience, get them to give you feedback on the sale stuff. I have an ongoing issue with my texture/color changing HUD scripts, for example. It’s got better since people went “Hey, you know that script you’re marketing at hair/eye producers? Considered it would work well for shoes too?”, but once I have more time it’s on my to-do list to go over the marketing materials for.
Heavy duty avatar age & height detector – L$50
Posted by Xugu Madison in Products on 09/06/2009
inSL: http://slurl.com/secondlife/Sunweaver%20Air/203/30/141
XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1530284
Heavy duty version of my avatar age and height detector. Designed with busy clubs/shops in mind, this version can handle 10 avatars per second sustained. No getting confused with names (like some age detectors), no having to wait for it to handle the last avatar before the next can be looked up, this just keeps on going.
Don’t believe me? Teleport on over to my store (http://slurl.com/secondlife/Sunweaver%20Air/203/29/141) and try it. Bring a dozen friends, really see if you can break it. Key features:
- Copy/mod; put out as many as you want, and you can even edit the script if you want.
- Displays height in both metres and feet.
- Displays height including shoes (+- 3cm accuracy) – many height detectors don’t.
- Handles leap years.
- Supplied with a simple sphere and texture container, or drop the script into whatever object you like.
Output looks like:
Age & height detector: Xugu Madison is 1815 days old, 2.21m / 7’3″ tall (with shoes).
Want something that’ll pick up an avatar’s rezz-day? I also sell a rezz-day present giver.
Landmark configured multi-destination teleporter – L$250
Posted by Xugu Madison in Products on 06/06/2009
inSL: http://slurl.com/secondlife/Sunweaver%20Air/203/30/141
XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1522692
This is a multi-target teleporter script, driven by touches on the surface of the prim it is contained within. It is shipped with a simple numbered texture, but owners are encouraged to replace it with a texture showing labels for destinations (for example, in a shop you might label them “Sofas”, “Beds”, “Tables”, etc.). Avatars click the surface of the prim to pick the destination they want to go to, and it then either changes to a sit teleporter for that destination (up to 300m away), or opens their map at that destination if too far for sit teleporting.
- Destinations configured entirely by landmarks.
- Full access control – owner only, group only or everyone, with whitelist and blacklist support.
- Access controls and number of destinations can be changed by notecard.
- Any distance – up to 300m away, uses sit teleport. Beyond that range, uses map teleporter (great for inter-sim teleporting).
- Link safe.
- Ideal for shop/large build navigation boards.
Destinations are arranged on the prim surface in a grid of columns and rows. A sample teleporter with 6 rows and 2 columns (for a total of up to 12 destinations) is included to get you started. If you’re unsure, full instructions are included below or feel free to contact me.
Parcel radio tuner script – L$50
Posted by Xugu Madison in How to, Products on 27/05/2009
XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1499268
inSL: http://slurl.com/secondlife/Sunweaver%20Air/204/22/141
This is a parcel radio “tuning” script, which provides a dialog menu of owner-picked stations (up to 12) to users. Has full access control; default access can be owner-only, group, or everyone, and that can then be modified by whitelisting or blacklisting individual avatars. The script is supplied full perms for resale as part of radio objects (but not for resale with copy & transfer permissions).
PLEASE NOTE: The owner of the radio object MUST be the owner of the land the radio is on, for this to work. If the land is deeded to a group, the object must be deeded to the same group. See the LSL command http://wiki.secondlife.com/wiki/LlSetParcelMusicURL for details.
This would be well suited to a club environment, where the owner puts down this radio to allow club staff to change media stream, but there are plenty of other uses too (personal use radio with a few favourite channels, for example).
Instructions
To get started, copy the script and the supplied Configuration notecard into your radio object. It will load the notecard, which provides two sample radio stations and sets the access permissions to “everyone”. Click the radio to bring up the dialog menu, then click a radio station name to “retune” to it.
Configuration
To reconfigure the radio, edit the included notecard. Lets start with the supplied notecard as an example:
access=everyone
whitelist=Xugu Madison
blacklist=Doctor Evil
station=RadioRadio http://media1.servercave.com:15822/radioradio.ogg
station=Sanitarium FM http://www.sanitarium.fm:8000/
Line by line, this example:
- Sets the access control to “everyone”, as opposed to “owner” or “group”. Please note that for group access; the user’s ACTIVE (as in the one in the tag above their name) must match the group of the radio object.
- Whitelists Xugu Madison (myself); this doesn’t make a difference with the access control set to everyone, but if it was set to owner/group access then it would allow me to use the radio anyway. You probably want to remove this line!
- Blacklists Doctor Evil (who I’m hoping doesn’t and never will exist on the grid). This means that they can never use the radio, irrespective of the access default.
- Sets up a station called “RadioRadio” with the URL http://media1.servercave.com:15822/radioradio.ogg
- Sets up a station called “Sanitarium FM” with the URL http://www.sanitarium.fm:8000/ -
please note however that LSL does not support dialog menu buttons over 12 characters in length, so this is trimmed to “Sanitarium F”.
Full perms synchronized color cycler script – L$250
Posted by Xugu Madison in Products on 27/05/2009
XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1498627
inSL: http://slurl.com/secondlife/Sunweaver%20Air/204/35/141
Prim color cycler script that will automatically synchronize with other scripts within 10m. Useful for eyes, dance balls, walls, hair, just freaking people out, whatever you like. Does not require prims to be linked. Used by dropping the the script (and optionally a configuration notecard) into the prims to be color cycled. Then take and rez the prims, or use “Tools -> Reset Scripts in Selection” to trigger a resync.
Configuration
Configuration is done by values in a notecard, called “Configuration”, and placed in prim inventory with the script. A sample notecard is shipped with the script:
channel=-120
color=<1.0, 0.0, 0.0>
color=<1.0, 1.0, 0.0>
color=<0.0, 1.0, 1.0>
color=<0.0, 0.0, 1.0>
color=<1.0, 0.0, 1.0>
steps=12
rate=0.5
# faces=1,3
“channel” sets the communication channel that the scripts synchronize over. This MUST be the same in all scripts to be synchronized, so they can communicate.
“color” adds a color to the list of colors the prim is cycled through. Each color is expressed in the format LSL uses, a set of red, green and blue values, expressed a numbers from 0.0 to 1.0. For example, <1.0, 0.0, 0.0> is 100% red, 0% green, 0% blue.
“steps” indicates the number of steps (in-between colors) generated between each color listed in the “colors” configuration. The script automatically generates these colors on the fly, to provide a smooth transition.
“rate” indicates the time, in seconds, between each in-between step.
“faces” indicates the faces of the prim which are to be colored. If excluded (or commented out, such as it is here by putting a ‘#’ at the start of the line), defaults to all sides of the prim. A prim face identifier is included in the package, which can be used to identify the number of each face of a prim.
Bell script, L$25
Posted by Xugu Madison in Products on 26/05/2009
This is a script to play a looped sound on click, ideal for a door bell or similar. Supports access control (owner, group or everyone, with whitelist and blacklist support), and is supplied full perms (so also good for anyone learning to script).
XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1374178
inSL: http://slurl.com/secondlife/Sunweaver%20Air/195/36/141
Click ‘n’ tell – L$25
Posted by Xugu Madison in Products on 24/05/2009
Script to notify the owner of a prim when it is clicked, and the identity of the avatar that clicked it. Includes a link to the avatar’s profile, so you can easily identify who they are. For example:
Click ‘n’ tell 1.0: I’ve just been clicked by Xugu Madison ( secondlife:///app/agent/c5ff894e-d6e4-48bb-b6fe-f143447d95a1/about ).
Due to how object -> avatar instant messages work in Second Life, while the message only goes to the owner it shows up in the local chat tab (instead of being a new tab as avatar instant messages do). Second Life also rate-limits messages from objects, so if the prim is clicked repeatedly (over about 15 times in 30 seconds) the script could lose some of the clicks.
This is an XStreetSL exclusive at the moment: https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1491906
Speech reader script – L$250
Posted by Xugu Madison in Products on 23/05/2009
Again, not new, but first announcement here; notecard/speech reading script (inSL). Ideal for helping with presentations, SL-weddings, etc. this script allows you to select a notecard from inventory (by means of a paged dialog menu), and it will read it out, with configurable pacing. It can take an unlimited number of notecards to read (selection by dialog menu), and optionally can animate the avatar while a speech is read out. Speech rate and distance are configurable by notecard, as are the details of who exactly can use the script.
Instructions (Copied from the included notecard)
- Open the box (I’m assuming you have if you’re reading this).
- Copy the “Speech reader 1.2″ script out into your inventory, and the sample Configuration if you wish.
- Drop the speech reader script into an object of your choice, along with any notecards for it to read.
- If you wish to animate the avatar while the notecard is read, drop an animation in to prim inventory as well as the notecards (a full perm chicken dance is provided if you need a test anim).
To use, click the object the script is in, which will bring up a dialog menu. From there, select a notecard or press “Prev” or “Next” to move between pages of notecard names. Once a notecard is selected, it will request the notecard from the asset server (this may take a couple of seconds) and start reading it once the asset server responds. The script will attempt to animate the reading avatar with it if can find a suitable animation in inventory, and will not start reading until animation permissions are received.
To pause playback, put a line with just “[PAUSE]” on it in the notecard, as in:
The itsy bitsy spider went up the water spout.
Down came the rain, and washed the spider out.
[PAUSE]
Out came the sun, and dried up all the rain
And the itsy bitsy spider went up the spout again.
This will cause the script to pause on that line until clicked to indicate it should continue.
Configuration
Configuration is done by a special notecard called “Configuration”, such as:
access=owner
read_delay=1.0
whitelist=Gusher Castaignede
whitelist=Xugu Madison
blacklist=Doctor Evil
shout=false
All lines should be of the form “setting=value”. This example does the following:
- Set the access permissions to “owner” (can also be “group” or “everyone”), allowing only the object’s owner and anyone in the white list to access it.
- Sets the delay between reading lines of the notecard, to 1 second.
- Add “Gusher Castaignede” to the white list.
- Add “Xugu Madison” to the white list.
- Add “Doctor Evil” to the black list.
- Have all text from the notecard said (as opposed of shouted).
If access permissions were set to group instead (“access=group”), anyone with the same ACTIVE group as the one the object belongs to, would be able to access it (except for people in the blacklist). If access permissions were set to everyone (“access=everyone”), anyone except avatars in the black list would be able to access it.
Read delays are specified in seconds, and are a minimum of 0.1 seconds due to LSL limitations.
White/black list commands add to the list (rather than replace it). There is no way of adding multiple avatars from one line.
Shout can be set to “true” or “false”, and primarily affects the range at which the speech reader can be heard.
“IMs are capped daily”
Posted by Xugu Madison in Opinion on 22/05/2009
I was thinking about the idea of customer support, in part due to the post “What happen to having Customer Service!” on XStreetSL. Many shop owners in Second Life have “IMs are capped daily, please send notecard” in their profile. IMs are capped in Second Life® because they have a finite amount of storage, and have to decide to put a limit somewhere; this makes sense to me. If you enable IM to e-mail this tends not to be an issue, unless the IM->e-mail gateway decides it doesn’t like you (happened to me twice so far).
Here’s the thing, though; I have paid for Jabber (same protocol Google Talk uses) IM service, as well as Google Talk account (e-mail address is in with any of my free products). Why, then, does it even make more sense for people to contact me in-world, through a proven flaky IM system? It’s like being forced to contact a website through one of the webforms where someone has decided that a 20×40 text field should be plenty for anyone.
There are things IM can’t do; SL needs for people to be able to talk to each other based on proximity. That just doesn’t map to IM. The groups system in SL apparently would turn even the hardiest of Jabber servers into a quivering wreck. However, what about combining the two systems? Let me use my own IM system to receive IMs from virtual worlds. Don’t tie my status for IMs to my in-world-ness, tie it to whether I’m available to chat.
Same for e-mail. Let people e-mail me directly from in-world. I understand not everyone wants their e-mail addresses published, but how about making it an option for those of us who work professionally in virtual worlds?