29 September 2006

GAH!

Ah! so this
http://forums.secondlife.com/showthread.php?t=140042
is why my spheres and cylinders aren't lining up anymore!

27 September 2006

It hates the holo-vendor, it does, my precious!

Well, that was frustratingly educational. Turns out
you can click on BUY, enter zero for the number of
lindens, and no money event will fire. *snarls, yanks
hair* I could make freebies sell using the TOUCH
option on the pie menu or something, but your typical
user isn't going to think of trying that. I finally
accepted that this particular holo-vendor won't sell
free items. It does IM the owner with information
about the sale now.

Lots more thinking on holo-vendors and their usefulness.

I also went ahead and took pictures of my cages and
prepared them for sale at SLExchange. Writing ad copy
makes me laugh. I'm going to wait until Friday to
enter the information on the website; I seem to get
more sales that way.

25 September 2006

Building, Vending, etc...

Scripting groups of prims to move is a PITA. The copy-paste sucks, but with all of the grid-wide script shutdowns lately I don't dare leave that info in the script's live memory. Getting the positioning info was easy - I gave each prim a unique name and a "positioning" script that had them announce their rotation and position on touch. Touch, move the group, touch again. Copy it all out of the chat history. I saved the object with the positioning scripts in case I decide to add more "animations" later. I have a LOT more respect for those people who make the giant animated dragon avatars now.

I also built a hidden laboratory to be known as the Super Sekrit Research Lab. Boring old skybox scripted to turn transparent at my touch. Gives me a place to work on scripting and building when I don't want to be interrupted. The avatar I tend to wear while building (the black female poodle with glasses and a toolbelt) is a no0b magnet. Most of the time I don't mind, but when I'm hip deep in scripts it isn't the time to teach someone to teleport.

I also built an avatar that's a bunch of metallic "eyes" and circling bits of metal. It looks a lot more like a "we" than an "I". Drove around one of the sandbox sims in it and had fun talking to some builders, and introduced a fairly new SL'er to the scripting group.

I ran into on of my buddies. He was showing off a new look and wanted a watch to go with it, so I whipped one up and we dropped a couple "bling" particle scripts into it. I hadn't really noticed before that how much faster I build now than I did a couple months ago. People who've been in SL for years must be scary to watch. *grin*

I sold a couple cages and poodle avatars this weekend. I need to prep my cages for SLExchange sale by next weekend. Writing the copy for those should be fun. *grin* I seem to get more sales if I put new things up there on friday nights or early saturday. Been pushing around taking a better set of pics for selling the poodles on SLExchange; the current ones are pretty boring.

I was wading thru the code for the holo-vendor and I'm pretty sure I know what to change so it allows me to sell 0L items. llSetPayPrice() decides you don't want a button if the price is zero, and the current code removes the "fill in the blank" option. It is already sending out a link message about the sale - I need to see if there's another script in there responding to it, and if I can put in my "IM the owner with location" script there.

22 September 2006

The LSL Wiki is back!

HOOOOOORRRRRRRRRRRRAAAAAAAAAYYYYYYYY!!!!!!!!

A neighbor's mall, vending, and headaches

My inland neighbor has been building a small mall, primarily selling poseballs and sex-related toys. We talked some yesterday, and she's offered me a little space in her building. Claims to be getting over 500 unique visitors daily. Among other things, she talked about how she wished she had some "sub cages" to sell. Really, all they are is a box with a locking door... so I built one. 5 prims, 2x2x3M, a door that opens and closes to the touch, a door that locks and can only be unlocked by the owner, a squeaky sound for door movement, and a sound of rattling when someone tries to open a locked door. Keeping to the metallic theme, I made them in black, gold, and steel. They're being sold as Copy only, so I decided to price them at 69L. If I sell a couple I might list them on SLExchange. Pushing around making an "asian" themed one with bamboo bars too.

She also had another idea for a scripted product she'd love to sell... I might have to try making it just for the challenge. Very, er, adult market. *wink*

I'm not satisfied with the base holo-vendor. I use the Hibrid 1.5c. It works well, but I want to make a few changes. It does not vend free items, something I consider a problem. I like mixing freebies into my vendors to encourage people to look at all the items. The vendors don't suggest to the casual brower what's being sold - they have to interact with it to find out. I'm considering changing the base into a large poster showing a composite picture of all the items. I need to change the _HOLO script to have the item llOwnerSay() if the spawned holo is not temporary - I've messed that up twice. I also want it to IM the owner when it makes a sale with its location.

On my ship, there's now a pile of cannonballs to go with the cannons. There's a poseball in there masquerading as a cannonball. I found a free sitting pose that makes AVs look like they have a terrible headache and I just couldn't resist using it.

21 September 2006

Look at me!

*laughs* I got mentioned in the web version of Popular Science Magazine. I'm mentioned in the 8th pic too.

20 September 2006

If they're screaming, you're doing it right.

I was reading this article and it got me thinking. It is a common pattern with MMO games (like WoW, DAoC, EverQuest, etc) that fans tend to savagely and repeatedly attack the company running them in forums, blogs, and the like. They call you nasty names, rant about your incompetence, comment on your lack of brains and your likely ancestry. Who wants to be on the receiving end of that day after day?

If you get a lot of hate-mail you're doing something right. It shows your product has earned commitment and passion from the people using it. People are emotionally invested. As your customer base becomes invested in your product, they want more control over how it works, how it grows, and how it is administered. They aren't passively watching TV; they want to participate. In Second Life, whether or not it was intentional, this commitment is actively encouraged - the client comes with building and scripting tool, and people are encouaged to create content. It is "your world" as they say on the front page.

I've heard several times (with WoW, DAoC ) that roughly 10% of regular players even look at their MMO's company hosted forums. Fewer than that post. You have to log in with your account information to read SL's forums. Linden Labs potentially knows who and how many of their users read their forums. I'd love to know how many different accounts logged into SL over the last month, how many logged into their forums, and what the overlap ratio was.

I understand the desire not to spend more time and money on moderating the forums, but they are moderating their new blog as well, so I'm not sure how much of a savings this will prove to be. Trying to protect your team's morale while still appearing (and hopefully being) accessable to your user base isn't an easy task. The move away from Linden sponsored forums may be worth it in the short term; the new blog format doesn't thread, so I expect long-winded "conversations" will move to other venues.

18 September 2006

Cannons and other scripted toys, and a whole day to play!

I logged on Sunday at four in the morning (insomnia again) and had the whole sim to myself.

Completed the cannons in their basic form - they shoot in whatever direction they're facing, there's a nice "boom" sound and some flaming particles, and whoever's in it flies. Uploading the boom was a pain; I learned that sound files become much quieter after loading. To get the angle of the push I'm now using the location difference between the hollow cylinder of the cannon and the curved prim that closes the back of the cannon. You can aim the cannon up or down and the force follows suit. If you know someone who wants one, or if you want to be shot thru the sim, IM me. I will probably add a circus texture option and maybe a flaming wick before I start selling them.

I added a switch and some link messages to my ship so that all the runway lights turn on and off as one. Did a cute timing trick so that the particles seem to turn the corner.

No exciting scripting, but I redid my anchor arrangement and raised the boat another 30M. Gets me away from the view of my neighbor's little mall with the giant glass wall, but low enough that other people's skyboxes don't feel too close. I added some boat pics to Snapzilla, but the camera doesn't love me.

One of my european friends was on, so after letting me shoot him from a cannon, I helped him troubleshoot a scripted toy he'd bought that was an incredible example of awkward user configuration. If you expect you users to configure a tool using notecards, design your project so they'll know how to do it right. I've had free AOs and holo-vendors that were far easier to configure. What about contacting the maker? My friend did. Telling your customers that they're stupid is not the path to a good reputation.

I took some free bird and insect sounds and made a script that randomly plays the daytime sounds during the day, and the others at night. A little ambience. I need to explore the distance the sounds travel; if I decide to give this away I don't want to aggravate neighbors.

Gorilla and his friends (a group of neighbors) decided to invest heavily in the sim. They've bought up all the remaining coastline that was for sale and plan to keep it open and available. I'm happy about that - some of the plots were large enough that they could have supported casinos.

Torley got back to me. Said that scripted prims were a big source of lag. Textures too - small, few, and repeated are good. Whether they are library or not doesn't matter. The built-in skirt doesn't add lag. I wasn't sure about that since it was added later. She also pointed out this article as a resource on the wellbeing of sims.

EDIT: This article explains why custom skins and no-prim clothes and the like don't add to lag. So clothes, tattoos, makeup, etc are merged together into the same number of temporary textures regardless of what you use.

15 September 2006

links

Sometimes I love amazon...
here

Advertising, graphic design, and SL
here

Torley's music archive
here

A vast collection of resources! Classroom style.
here

Thoughts on my first crowded event

Last night was the first time I've been on a sim with over 100 avatars on it. Only crashed once. I got to "see" Jonathan Coulton, get attacked by a giant squid, and hear a lot of music.

Instead of listening to the music thru SL, I attached WinAmp to the music stream. I encourage you to try this - if/when a sim goes down, you can still enjoy the music.

We've all heard about how large events encourage participants to remove attachments and active scripts, so I whipped up a no-prim avatar. I was surprised to see many long-time residents didn't do the same. They didn't ask us to remove anything; I don't know whether that would have kept us from crashing or not.

I'm wondering if it would be worth making up a line of no-prim, no-script avatars to gift people with at events. Concert Carmen, Event Ernest, White Noise, etc... Would people use them? Would it significantly affect sim lag? Time to email the watermelon-decorated Torley, and see if I can get some Linden wisdom on this.

13 September 2006

Baby, what'd I do? Please come back!

Oh scripting wiki
Why have you forsaken me?
I flail helplessly.

The lsl wiki is a wonderful resource. I came to SL knowing how to program, and it gave me the information and examples I needed to satisfy my building urges with ease. To the people who made it what it was, I thank you.

The old scripting wiki remains down. The new site isn't up yet. The available mirrors I've found are either out of date by six months or more, incomplete, or the links all lead back to the original wiki. The frustration is unbearable. I scream, rip at my hair, rend the flesh from my body. All is futile. *sobs*

I forsee a lot of private copies, assuming it returns.

In other news, I should quit acting antisocial and go join the SL group called "Scripters of Second Life."

11 September 2006

Cannons and Taking Shots at the Newbie Experience

Sunday was a busy day for me. I redid the boat into a boat-platform. I must remember to take pictures. It has three sets of lift balloons, the anchor, a 20m x 20m platform with railings and marquee lights, and a triangular covered front area with metal rimmed portholes suitable for cannons. There's an attractive sitting poseball hiding in one of the portholes. (Speaking of which, I highly recommend Thunders Animations. No relation.) Being a ship, it required a wheel to steer it. The wheel uses llTargetOmega() to spin for a few seconds in either direction when touched. And then there's the cannon...

It isn't complete yet, but it does load, make a "boom" sound, and launch people in the direction the cannon faces. I am fortunate to have such tolerant neighbors. *grin* There were a couple bouts of scripting agony; the Lindens have taken down the LSL wiki site to do upgrades. Having never used llPushObject() before, this made the cannon's scripts a bit more challenging than I had planned. I still do not understand the meaning behind having both "impulse" and "angular impulse." In the end, I resorted to setting the angular impulse to <0.0,0.0,0.0> and working with a normalized impulse vector (to describe the direction to fling people) multiplied by a predetermined "force."

Other than building... I talked with some neighbors, noticed that the coastline in front of my land is still for sale, modelled a spiked armband made by a friend (there's a pic of that on Snapzilla,) helped a couple of newbies, adjusted one of my vendors at Rainbow Mall, and finally got around to checking out the Burning Life displays. If you haven't been there it was... trippy. I did laugh at the one commenting on camping chairs and typical newbie behavior in SL, but it makes me wonder how much of that is because of the awkwardness of the newbie experience in SL. When I compare my first ten hours of SL to the same in WoW or other massive multiplayer environments, SL still does an incomplete job of pulling in new people. Socializing, interesting locations and events, educational resources, how to use the Search, money trees 101, links to common web resources, etc. New Citizens and groups like them help fill in the gaps, but I was well past my first ten hours before I found them, and based on conversations with newbies, my experience wasn't unique.

08 September 2006

Scripting rambles

It may be time to learn about llPushObject(). Seeing as if you own the land it'll work on any targets regardless of whether "no push" is turned on or not. *grin* My cannons will be a lot more fun!

I really wish that phantom and non-phantom objects could link together and keep their states. Having to script objects containing both so that they play well together is a pain. Either sensors or channeled llSay(). I admit, I'm overly fussy about cleanup issues - I've been setting things so that if the phantom object is deleted the non-phantom one respawns it, and if the non-phantom one is deleted the phantom one calls llDie(). And coordinating how to keep them "together" when the owner decides to move it - bah! But in the end I think the scripts are generic enough I can drop them into future projects, so it'll probably prove worthwhile. But oh was I frustrated when I discovered that llVolumeDetect() doesn't respond to things rezzing or dying!

While I'm daydreaming, the other thing I'd really like is some kind of display showing me which prims in an object have contents. Scripts, objects, notecards... I can get an "active script" view using world controls - it turns them a creepy red like the "invisibility detection" view.

07 September 2006

Optimizing focused spaces

I'm wondering what the optimal size for a partying area is in SL. Assuming avatars of standard size (You should have seen the giant robot that flew by yesterday! Bigger than most houses!)

I'd need enough space for everyone to stand around. And clustering space, people often like to go off in small groups. If the space is too large, people don't interact. You need activities, toys or a good host to provide interaction topics when people aren't the best at smalltalk. In real life, I'd add food and booze to the list - I could probably use "free gifts" as a replacement. Music helps.

Then there's the SL specific issues. Camera space, and whatever effects the distance of whispers and says have on such things. High ceilings are a must - most people don't use the "1st person" view, and the camera defaults to floating a bit above the avatar. Texture lag, and controlling view angles to reduce lag.

Boats, Cannons, and balloons

I don't like the pirate ship, the insides are too curved to be useful and it just seems like a wasteful use of space. The marquee lights rock though. I think I'm going to redo it into a floating raft. That'll be easier to resize and party on. I think I'll add a higher platform so I can keep my "climbable" rope - and I like the idea of a multilevel environment. Maybe a cannon that people can shoot themselves out of? I think I'll be twisted and keep the pirate boat theme but get rid of the boat. Aim it to encourage people to look toward the ocean and away from my neighbor's floating 10M rotating cube. (She and I talked some yesterday, she seems okay although it was a little strange watching her test a new box of sexual positions...) If I decide to make a roof and don't want people standing on it, I have to remember to make it phantom.

Now I'm thinking about that cannon... I can use llSitTarget() to go in any direction up to 300M. I want it to shoot in the direction the cannon faces, so I need the rotation of the cannon and a distance calculation to get the SitTarget location. I can probably use a default animation to show someone "loaded" in the cannon. Sit loads them, Touch fires the cannon. If someone is in the cannon it fires them into the air. I need a sound and some "boom" smoke too. Bet I could sell it.

I also want to make a free random balloon on a string vendor. Everyone should have a balloon. If I use GetInventory I can make it generic enough that I don't have to mod the script every time I add another kind of balloon.

Jonathan Coulton in SL!

The guy who sings "Codemonkey" is giving a concert in SL! Thursday, September 14, 2006 at 5PM (SL/Pacific) .
More info here. Which reminds me, why the heck isn't there a single web source somewhere to get information about events that aren't *ingo, sales, or repeats?

06 September 2006

Home, and a possible pirate hangout

I finished assembling the little shop on my land. Boxes for the poodle avatars are looking good, and I put up a holo-vendor with some freebies, my scripted grills, and other stuff in it. I added my toolbelt to the freebies, although I think I won't bother adding it to my SLExchange list. Sticking with the parkland theme I've got going, the shop is housed in a small pavillion. I need to add a lightsource to the shop. I'm still trying to decide if I want to add a little stone path from the patio to it.

I'm now dreaming of making another boat, this one unanchored. It'll be higher up (more skybox-like) and intended as a party platform. I think I'll put teleporters on the boats so it'll be easy to go from one to the other (and any others I make in the future.) Primwise, it won't cost any more than adding another level to my existing boat, and assembly should be easier since I'll only have to swap out a set of sandbagged balloons. It'll have to have a plank and a pirate's flag. I might have to talk to Gorilla about linking it with his build when it is done - he's a neighbor who's been building an entertainment park a little further down the coast.

Particles

I ran into a wonderful use of particle effects the other day. They can be set up to look like marquee lights! I got some from Big Bowie.

Speaking of llParticleSystem... It turns out to be like llSitTarget() and hovering text, you can remove the script but the particle-generation remains a property of the prim. You have to explicitly turn it off with a call of llParticleSystem([]).

04 September 2006

Sit - llSitTarget()

One of my buddies was helping a friend decorate. We both rifled our inventories looking for some kind of seating that would blend in. I came across a decent looking freebie lounge chair. Maybe I got it at Yadni's? *shrug* A couple texture changes, and WOOT it looked like it belonged. Then I decided to sit in it.

Thus began my llSitTarget() adventures.



First I hit the scripting wiki. I decide to use the basic built-in sit so that I don't have to bother with permission-to-animate.

Every prim has a "sit target" that I can adjust with a script. Looks easy enough.

llSitTarget(, llEuler2Rot( * DEG_TO_RAD));

So I whip up a new script and drop it into the base prim. I spend some time adjusting the numbers so that I'm not sitting with my shapely behind in the air. Then I drop out of the editor, and click to sit. And my rump is in the air again. WTF?

Again, every prim has a sit target. So when I clicked on a prim other than the base one, it chose the sit target of that prim. *smacks head* Okay, so how do I get rid of the sit targets on the other prims in my chair? Or do I have to set ALL of them?

The only way to clear the sit target is by calling llSitTarget(ZERO_VECTOR,ZERO_ROTATION); Ah! Good, I can get rid of all these unwanted sit targets. With that in mind, if I want a sit target I cannot use all zeros for position and rotation. I've gotten some odd results from this - if the object is big enough, something else determines an appropriate spot to sit? Not sure yet.
default // How to make a prim with no sit target.
{
state_entry()
{
llSitTarget(ZERO_VECTOR,ZERO_ROTATION);
}
}

But the multi prim chairs I've seen don't have a script in every prim. So what am I missing? If a script gives a prim a sit target, and that script is deleted, the sit target remains. Okay, it is a property of the prim, like those HoverText scripts you always see in gift boxes. Drop in a copy of the "NoSit" script, then delete it from the prim. Keep your rear end off the arms of my chair!



But, um... what'll happen if someone tries to sit on my chair and clicks on a prim without a sit target? Will they end up using the base prim's sit target or ???

If the primitive the player clicked on has no sit target, and one or more other linked objects have sit targets that are not full, the sit target of the object with the lowest link number will be used. So it will run thru the prims it is linked to until it finds one with a sit target. That works for me. Useful for benches and stuff with more than one "seat" as well.

Speaking of benches... I have this two prim bench at home... Time to teleport back to my home parcel and edit the bench. Each prim gets a sit target, one on either side of the seat. Great! I click on the base prim and as expected I sit in the "first" seat. Then I click on the other prim and I sit in the "second" seat... because If the primitive the player clicked on has a sit target and that sit target is not full, that sit target is used. Time to sit down and enjoy the view!



EDIT: More here.

Temp-rez scripting, and new experiences.

My neighbor closest to the coast decided to leave the sim. Governor Linden decided to sell of a large hunk of coastline and she didn't want to see what will become of it. I was weak and had many new experiences. I own twice the land I did yesterday, I know how to exchange USD for Lindens, and I pay land tax.

In other news, I now know that the easiest way to position a temp-rez item is using llRezAtRoot(). If you don't have anything at the root of the rezzing object, make yourself a tiny prim and place it there. Saves hours of fussing.

The balloons and sandbags on my flying boat home now rez themselves, with a throttle script in place for when the sim becomes stressed. Read the scripting section on lag sometime. I used llGetRegionTimeDilation() to determine the sim's condition, and the rezzing prims pop up a cute bit of hovering text when the script is throttled.