Technology

You are currently browsing the archive for the Technology category.

I’ve gone dark for quite a bit due to other projects, but wanted to put a post up on several issues which temporarily stalled my OpenSim efforts.  My main goal here is to ensure others don’t run into these AND for someone to post links on better approachs/solutions.

I got OpenSim stood-up and running on Debian Linux.  I then sorted out how to configure the terrain to my purposes and setup physics.  Using the client estate editing tools I also sorted out how to build/apply custom terrain textures (haven’t posted on this yet, there are some good resources out there though). 

Then I invited a few friends from SL to come on over and start building.  This is when I started to run into very practical problems.  The main issues were around avatar and object persistance across OpenSim upgrades and restarts.  The first issue I ran into is somehow I had not setup persistance of objects in the world.  Things were built, but when I restarted the server one day, it was all lost. 

Test #1: Test object persistance with a friend.  Get another avatar in your world.  Build a few things together.  Leave.  Restart the server.  Login and see if things are still there.  Do this early before you create a master piece.

Secondly, when upgrading, I had used the default MSSQL for persistance.  I don’t really know how to manage MSSQL or have any confidence that if I backed up the data I could script my way through a schema change if needed.  So, I tried to move from MSSQL to MySQL which is more familiar territory for me.  This looked like it was going to be a major scripting effort and I could not find any tools that existed to do this.  So, once again I scrubbed my sim as part of the upgrade to get to MySQL.

Test #2 Test database backup/restore.  Once you have confirmed suggestion #1, create a backup of the stores.  Try to spin up a new instance of OpenSim using these stores.  See if you can do it.

I haven’t had time to do this yet, but it will be a real issue if I start inviting several SecondLifer friends into my SIM only to have them loose everything during some upgrade.  I expect there are some solutions to this problem which have been built mainly by other grid providers like OSGrid and the like, but nothing quickly found in a web search.  Send me info if you have it :-).

Finally, I ran into a physics problem which required me to rebuild ODE on Debian Linux in order to get up to date with the latest OpenSim trunk.  This exercise and subsequent debugging was where I had to leave it.  I finally decided to wait a few months and then do a clean install/upgrade.  It was a far cry from the fun of building out your own sim.

No surprise, but OpenSim is still early days.

This tutorial takes you through the process of hosting a public, standalone OpenSim server running Debian 4 Linux at the cost of $15/month.  Major credit to Adam Zaius and his [HOWTO] Get OpenSim running on OSgrid.org for cheep cheep without which this tutorial never would have existed.

Unlike my OpenSim server on Windows this is not really guide for non-developers.  To succeed you need to be familiar with things like Unix/Linux comand line, jed, ssh, putty, screen, and apt-get.  However, I have tried to give you enough detail that you have some hope of success, but no gaurantees offered.  So, let’s get started on the journey.

After spending some time in my new Windows Vista hosted region, I started to get lonely and well bored.  Perhaps there was some Second Life builder who could stop by and whip up a scripted sailboat I could use.  Trying to give someoneelse access to Sim from my home PC-based had a few challanges and the reality of hosting your own virtual world started to emerge.  The challanges mainly took the form of Comcast and their “high-speed” broadband internet access (quotes intended).

It may be high-speed for downloading, but it is more like low-speed narrowband internet access going the other way.  Coupled with the additional costs of a static IP address and punching a hole in my wireless router led me to the conclusion I needed to host the region in the cloud.  So, I went in search of cheap but reliable and fast, hosted server which would fit into a hobbiest budget.

Step 1 - Find a Place to Host Your Region

A dedicated Blade for $60/month — Almost all cheap web hosting options do not allow you to upload and manage a customish application like OpenSim so I started to look for a basic server hosting solution.   A good friend of mine pointed me at http://www.cari.net where you can get your own dedicated blade for the extreme deal of $60/month.  This gets you dedicated hardware, a single core Celeron D processor, 1 GB of RAM, Fedora Core 7 OS, and 160GB Disk and 4Mbps burstable to 100Mbps up to 1300GB a month.  Now thats pretty great for $60 a month.  However Windows was +$20 a month another gig was +$20 a month and so on.

Other options considered:

  • Co-location (some services allow you to buy a machine and rent space in their datacenter)
  • Amazon EC2 (more on this in a future post)
  • Get IT friend to sneak your machine into their companies datacenter

I finally decided to start with Cari, but couldn’t stomach an extra $20 a month to run Windows.  However, before I committed to Linux I need to convince myself that my rusty *nix skills were up to the task.  This is when I found Adam’s excellent HOWTO referenced above.

Step one of Adam’s tutorial pointed me at TexTonic and a Virtual Private Server virtualization at work.  The barebones, unmanaged VPS is $15/month or 4x less than Cari’s bottom shelf.  By comparision this gets you 294MB dedicated RAM, 30GB disk space, CPU burstable to 25% of available CPU, and 500GB of monthly transfer.  Note, no meantion of what type of CPU is behind the 25%.  But at $15 a month I figured I could risk it.

In the time it has taken me to write what I did in Step 1, I had an e-mail message with my new IP address and root password.  A very easy and quick setup.  I picked Debian linux and based on my experience following Adam’s tutorial I think the Linux flavor you pick does impact the exact steps required for success.  I suggest you pick the one you are most familiar with as Ubuntu and CentOS were both options.  Otherwise, I suggest you pick Debian.

NOTE: I also picked a 32-bit operating system.  OpenSim supports 64-bit the process is much more complicated.

Step 2 - Login to Your New Server

To login to your sever you need a secure shell (or SSH) client.  The most widely used, reliable, and free is Putty download here.  One of the things I love about Putty is when you download it, there is just one file and it is NOT a zip, it is an executable.  Put it somewhere and double click it and it runs.  None of this run an installer, agree to terms and conditions, unpack and copy a bunch of crap to my harddrive, then twiddle registry keys so your presence on my machine can never be fully purged.  Nope, just one simple file. 

When putty comes up, simply enter your new IP address in to the field as shown below, leave the port to 22 and hit Open.

Putty Login Screen

Putty Login Screen

 

Step 3 - Login and Load an Editor

When the login screen comes up enter ‘root’ for the user and the password TexTonic provide you.  You should arrive at the command line of your newly dehydrated virtual server.  Before you get all the packages you need to build and run OpenSim it is necessary at least on a TexTonic clean Debian 4 linux to update where you look for packages in order to get the right version of a little program called mono. 

WARNING: The wrong version of mono caused me extreme problems trying to build OpenSim and several hours of debugging so follow carefully.

Type the following to ensure your catalog of software is up to date.

apt-get upgrade && apt-get dist-upgrade

Then load the jed editor (or another editor of your choice) with:

apt-get install jed

You can now add one location to where your server looks for software to ensure you get the latest version of mono.

Step 4 - Add to and Update Your Package Distribution List 

I won’t get into how to use JED, if it is not obvious try some docs here.  Type the following:

cd /etc/apt

jed sources.list

Add the following line at the top of the sources.list file

deb http://debian.meebey.net/etch-backports /

There is a space between backports and the last backslash.  I discovered this little gem obscurely on the opensim site under http://opensimulator.org/wiki/Monodevelop.  Under troubleshooting for Debian 4 there is a section which suggestions you use all “unstable sources”  which can’t be a good thing.

Hit ctrl-x ctrl-s to save and ctrl-x ctrl-c to exit.  Now reload the sources for your packages with:

apt-get upgrade && apt-get dist-upgrade

Step 5 - Load the Necessary Packages

Using “apt-get install packagea packageb packagec” load all the following packages. 

apt-get install subversion nant, monoSubversion is only required if you want to pull directly from the source code repository.

OpenSim Documentation lists the following required packages for Debian 4

  • mono
  • libmono-corlib2.0-cil
  • libmono-sqlite2.0-cil
  • libmono-system-web2.0-cil
  • libmono-microsoft8.0-cil
  • libmono-system-runtime2.0-cil

Adam recommends a bit larger set including:

  • subversion
  • nant
  • mono-gmcs
  • libgdiplus
  • libmono-i18n2.0-cil

I ended up with many more once it was all said done, but never got the libmono-i18n2.0-cil which may be one of those “unstable sources”.

Once everything is installed which may take a little bit, check some versions with the following commands:

svn --version (mine was 1.4.2 (r22196))

nant --version (mine was 0.85)

mono --version  (mine was 1.9.1)

WARNING: The version of mono should be 1.9.x, I could not build OpenSim 0.5.8 or the latest turn using mono 1.2.2.1

Step 6 - Download and Build the OpenSim Source

To download 0.5.8 (latest stable):

cd /var
svn co http://opensimulator.org/svn/opensim/tags/0.5.8-release opensim
cd opensim
./runbuild.sh
nant

To download the latest and greatest trunk version substitute:

http://opensimulator.org/svn/opensim/trunk opensim

With lots of luck, you will get a clean build.  If you have issues many common build problems are documented in Opensimulator Troubleshooting (your mileage may vary).

Step 7 - Edit the OpenSim.ini file Spin It Up

First you need to create a new ini file and edit it to use the OpenDynamicsEngine or else you will be able to just walk through prims.

cd bin
cp OpenSim.ini.example OpenSim.ini
jed OpenSim.ini

Comment out the line: physics = basicphysics and uncomment out the line physics = OpenDynamicsEngine. Ctrl-x Ctrl-s saves, Ctrl-x Ctrl-c exits.  Now spin it up.

mono OpenSim.exe

Then answer the questions thusly:

  • Region Name [Opensim Test]:
    • The name of the your new Sim, you can safely change this but keep it short and one or two words, I no evidence to suggest it would not work with a long sentence, but based on SL sim naming conventions I’m suggesting you adhere to this if you are not a developer.
  • Grid Location (X Axis) [1000]:
  • Grid Location (Y Axis) [1000]:
    • Starting location in the world for your avatar.  Keep defaults.
  • Internal IP Address for incoming UDP client connections [0.0.0.0]:
    • Should remain 0.0.0.0
  • Internal IP Port for incoming UDP client connections [9000]:
    • Modify only if you are planning to use a different port or expose your sim to the internet
  • External Host Name [127.0.0.1]:
    • WAKE UP HERE!  Put in the external IP address to your server 
  • First Name of Master Avatar [Test]:
    • First name of your main avatar
  • Last Name of Master Avatar [User]:
    • Last name of your main avatar.  Yes, you can pick this in Opensim :-).
  • (Sandbox Mode Only)Password for Master Avatar Account [test]:
    • Password for your avatar

At this point the Opensim server should be up and running

Step 8 - Login From Somewherelse and Test with your SL Client

You can’t just login with your Second Life client because it has no way of knowing about your Opensim server.  You need to launch the SL client with some command line parameters to tell it to use Opensim vs. the SL grid.  Open a command window and navigate to the directory where you installed Second Life.  You should find SecondLife.exe  You can then type in:

SecondLife.exe -loginuri http://<YOUR IP HERE>:9000/

Start Building.  Or if you are so inclined learn how to create your own custom terrain here.

Step 9 - Keep OpenSim Running After You Log Out

The final step is getting OpenSim up and running even after you log out of your Putty/ssh session.  To do this first shutdown OpenSim by typing “shutdown”.  Then enter the following sequence:

screen
mono OpenSim.exe
ctrl-a ctrl-d

You should now be able to logout and your region will still be up and running. Try it!

Continuing to drive an interop standard, Linden Lab starts to build code to bridge into OpenSim.  Biggest open question is how will content movement happen and how will creator rights be protected or put at risk?

My second experiment in writing for the press. 

MIT Technology Review Article

My first press article… ever

MIT Technology Review

http://www.technologyreview.com/article/21100/

 <<Previous Section     Tutorial Start

In part 5 of this tutorial, we will finally get Opensim running. After a few edits to some config files you will be able to fire up your first sim.  My apologies for the delay of this final installment which may have frustrated a few of you, I got caught up in the Google Lively launch.

Step 1 - Start the Opensim.exe application

Find the Opensim.exe in an explorer window.  Right click on the file and select “Run As Administrator”.  If you don’t do this, it won’t work.  A windows command shell will come up and you will see messages indicating Opensim is starting up.

Step 2 - Enter First Time Startup Data

The first time you do this you will either get errors or be prompted for some default information.  If you get errors it is likely that you did not configure the database settings properly or your firewall is hindering your progress.  Below are the prompts and what they mean.

DEFAULT REGION CONFIG

  • Region Name [Opensim Test]:
    • The name of the your new Sim, you can safely change this but keep it short and one or two words, I no evidence to suggest it would not work with a long sentence, but based on SL sim naming conventions I’m suggesting you adhere to this if you are not a developer.
  • Grid Location (X Axis) [1000]:
  • Grid Location (Y Axis) [1000]:
    • Starting location in the world for your avatar.  Keep defaults.
  • Internal IP Address for incoming UDP client connections [0.0.0.0]:
    • Should remain 0.0.0.0
  • Internal IP Port for incoming UDP client connections [9000]:
    • Modify only if you are planning to use a different port or expose your sim to the internet
  • External Host Name [127.0.0.1]:
    • Modify only if you plan to login to this sim from elsewhere
  • First Name of Master Avatar [Test]:
    • First name of your main avatar
  • Last Name of Master Avatar [User]:
    • Last name of your main avatar.  Yes, you can pick this in Opensim :-).
  • (Sandbox Mode Only)Password for Master Avatar Account [test]:
    • Password for your avatar

At this point the Opensim server should be up and running

Step 3 - Login with your SL Client

You can’t just login with your Second Life client because it has no way of knowing about your Opensim server.  You need to launch the SL client with some command line parameters to tell it to use Opensim vs. the SL grid.  Open a command window and navigate to the directory where you installed Second Life.  You should find SecondLife.exe  You can then type in “SecondLife.exe -loginuri http://localhost:9000/ -loginpage http://localhost:9000/?method=login“  Replace localhost:9000 with the server/port in question if you have modified the defaults above.

Start Building.  Or if you are so inclined learn how to create your own custom terrain here

<<Previous Section     Tutorial Start

 

Well it’s official Google has invited themselves to the virtual world party with Lively. Here are some early press links to explore along with thoughts from some of the technology leaders in the space:

If you’ve have ever wanted your own Second Life Island/Estate but didn’t want to pay the $1700 bucks plus $300/month fees for it, then this tutorial series is for you.  I will take you through downloading, installing, and configuring an Opensim standalone server on Windows Vista using the community edition of MySQL. It is all free of charge thanks to many others who are forging a freely available virtual world platform.
Freshly Spun-up OpenSim Server
If you are not a developer, no worries, we will not be building any source code, downloading any version of Visual Studio, or learning how to use subversion. You will have to edit a few config files though and create a database so roll-up your sleves and prepare to get a little dirty.  

All in all, I was pleasantly surprised by how quickly and easily it was to get a Sim up and running.  I’d estimate this process will take you a few hours.

If you are unfamiliar with Opensim project, then now is a good time to get acquainted with it.  Opensim is basically an open source virtual world platform that acts and behaves very much like Second Life.  The approach being used it basically to reverse engineer the Second Life backend given knowledge gained by Linden Lab open sourcing the Second Life viewer and the work done by a group called libSecondLife

An Opensim server is not connected to the Second LIfe grid, but there are various Opensim grids already coming into existence (some of these I’ll explore later).   You will not be able to export your Second Life objects/avatars and import them into your new sim, but you can re-build your objects and reuse your LSL scripts.  There are many limitations relative to SL like no currency/economy structure, however, for a cost free ability to experiment with a SL island/estate there is no better alternative.

This post will be updated with all the tutorials as I complete them:

When you are done you will have a whole sim to yourself along with your crispy new avatar, you’d better get building.

Please let me know if you encounter anything that is confusing, any new gottchas I should point out, or any inaccuracies and I will make updates.