I’ve been making a few objects here and there in SecondLife. Most of them have scripts in them. Over time, I have updated my items with bug fixes and feature additions. I could just drop items on everyones profile, but as more people start buying, this becomes a hassel.
I purchased an auto-upgrade machine that my customers could approach with a license key. If the license key was validated, and a more recent version of the product was available, they would be given the newest version. This is nice, but it requires my customers to guess when a new update is available.
I started looking around and found an item called SL Courier. It allows me to compose a list of peoples names and identification keys along with a list of products to send them. Once I release a new version, I just put the product in the couriers inventory and tell it to deliver to the list of past customers.
This solution seems to be the best for keeping my customers up to date with the latest products. The problem is that I don’t have everyones identification keys. Through my in-world object sales and selling through the web on sites such as SL Exchange, SL Boutique, and SecondServer, I am only able to get a list of names of the people who purchased my products.
At first, I created a customer registration product that the customers could manually rez and say “register”. After about 40 seconds, it would confirm there registration after sending me there name and identification key. It was a little more convienient, but I was finding that a lot of people were not going through the process and that it just took too long.
I decided to make a different attempt. I changed the actual package that my products are delivered in. A customer normally has to rez the package and open it to remove there products. I’ve started working on a little project where I can make that box talk to an in-world server and send me the name of the customer, there identification key, and the name of the package that they are opening.
I went to the internet and found a website that could generate bar codes online. There were a ton to choose from. I liked the look of MaxiCode by UPS, but I found a better resolution of it at another website. I also looked at different types of shipping lables such as those for the most often used UPS, and USPS. I put everything together to make my own version of a shipping label.
When the box is rezzed in the world for the first time, the label gathers the necessary information and encodes a message. The label turns yellow when it sends the registration information out. I spent a good deal of time working within the limitations of LSL script (MD5, XOR, Base64) to make it semi-secure. I also setup the scripts to warn me if I didn’t set the permissions correctly for the next owner. If I give the package to someone, I want to prevent them from looking at the password and the servers id in the scripts. This way, I have a visual cue (the shipping label turns red) and some messages telling me what is wrong and what I have to do.
There is a lot of work into the communications with the in-world server. The label makes a few attempts to contact the server. Each time that it fails to receive a response, it turns cyan and waits a little longer before trying again. This is just in case the sim that the server is on goes down, or its email que is full. If the server can’t be contacted after about an hour, I stop all registration attempts and notify the customer that they should notify the seller of the problem. I also make the label turn purple as a visual cue as to a response problem.
If everything goes well, registration usually takes only a few seconds and the label turns white once it has completed. All the scripts in the label are deleted to prevent duplicate registrations.
The server itself is a beast. I am usually limited to 16kb of memory per script. When I worked on my sim land owner scanner in the past, I learned how to expand that memory and communicate with other scripts within the same prim. I’ve used that experience here and made a few scripts whose main purpose was to store and retrieve data – just like a disk drive. In fact, I called each script “Disk 1”, “Disk 2”, etc.
When a message comes in and is decoded and validated, it is sent to a disk that has the most free space available. Then every 24 hours, a log of all data is sent to my email account. Email messages are limited to about 4 kb that are sent out from SecondLife. It isn’t much, so as I compose the email, I constantly check how large the message is, and how much data I’m about to add to it. If it is too big, then I send out an email and start composing a new one.
Email was a big issue in the past mainly due to the script delay penalty enforced on it. When I used this mehtod in the past, my script would suffer a 20 second delay. A friend of mine in-world had pointed me in the rite direction to make another script to send the email for me. I send a message to that script and then let my original script continue on with its own workload. Instead of a confirmation after a minimum of 40 seconds, I get them in about 5 only because I set my timers to check emails every 5 seconds on both the server and the package.
I am almost on the edge of actually puting my system into production. I have a few tweaks to do before it is ready. Drive management needs the most attention rite now.
It is crazy with how much work you can put into a game. I hope to start profiting later on from it. The materials (prims, scripts, notecards) are unlimited in supply. Your mind of skills and creativity are all that limit you. I can build just about anything from scratch and people actually buy them. So far, I’ve made about $14 this month. I pay less then that in monthly account fees in order to be able to own land (otherwise accounts are free).
Since I own more then 512 square meters of land, I pay an additional monthly fee. My accounts land fees has me paying at $75 per month, and my wifes is as $40/month. Yes, you read rite. So hopefully that $14 starts gradually becomming a bigger number. If we both sold off all our land, except for the last 512 sq. m. each, we would be making a profit every month with just my product line.
Why is land important? Land gives you the ability to have prims. The more land you own, the more prims you can have. Many people who don’t have land, and those that do, go to sandboxes to make there own stuff without a strict prim limit. I consider these places to be laggy. I’ve gotten into problems with one place where I couldn’t get out of it. Half the time you meet up with people that are there to ruin everyones day, and you also run into the occasional experiments that have gone wrong. On top of that, I’m just as much of a hermit in SL (Second Life) as I am in RL (Real Life).
You can also rent land or buildings from other players. You can rez your objects or build new ones there, but there is usually a high priced monthly fee to help the owner pay for there own accounts land costs.
The other reason to own land is to have your own freedom of expression. A perminant place of residence. Someday I’ll write about what I’m doing there. Most of what I do is make new products to sell or assist in selling to other players. For now … I leave you with just the shipping confirmation project. I only need 2 prims for the project and could do that on just 16 sq. m. of land and still have room for one more prim.