OpenSim is an open source version of Second Life. You install, run, and configure it, set up a viewer, and it's your very own virtual world. SL has tons of object (prims) that are given away or sold and OpenSim is a blank slate. But it's yours and you have full control over who can access it and what they can do there. That makes it an excellent resource for teaching.
There are lots of tutorials on getting your own OpenSim up and running out there but 90% are just for standalone sandbox on your own machine and the rest are for grid mode in which you link your region with others out there on other people's machines. I'm writing this tutorial because I want to run my own sim but have my students connect to it through a client viewer on laptops connecting over our school's wireless network. The basic plan is installing the opensim service on a computer, installing MySQL so objects have permanence and don't have to be reactivated when the sim restarts or users log off, and giving that computer a static IP so client apps always know where to find it. With this setup you can run the sim on one computer and connect to it from any other computer on your school network, but it's not publicly available outside your school unless you open that IP up through the firewall (which I may consider later on). Here's how I did it (UPDATE 10/16: I've just upgraded to the newest version of OpenSim using Diva's Distribution, which makes all of the following pretty much obsolete. I'm just keeping the old steps below so I can look back some day and appreciate how far it's all come. It's now SO much easier. Here is the tutorial for the Diva approach.)
- Desktop running Windows XP SP3, assigned a static IP by the DNS server, no monitor, I just log in remotely. (Ask your system administrator to assign the IP if you, like me, can't.)
- MySQL 5.1 installed (good instructions here, a little old. The Toad (MySQL GUI) part is for an earlier version of Toad, but the idea is to create a root account and create a new database called 'opensim'. If you prefer you can use the mysql command line (tutorials here and here instead for mysql command line tools. No need to create any tables. OpenSim will do that on first run. Stop the first tutorial and continue to the next step when he gets to configuring the opensim.ini file because it's for an older version of OpenSim.
- Okay, now go download an opensim binary (look for the Windows binary on the right, soon to be version 0.6.6). The version I've installed is 'standalone' 0.6.3. The two flavors of OpenSim are standalone and grid mode and I spent two days thinking that since I wanted to share out my region with other computers on our LAN I needed grid mode (which is much more complicated to install). After much frustration (couldn't connect) it dawned on me that grid mode is for connecting regions over the internet. Standalone is what you want if you're just looking for an insulated virtual world not connected to the other regions out there.
- Run the installer but don't start OpenSim yet. First you need to edit some settings in the OpenSim.ini file you'll find among the many files in the Program Files\OpenSim folder. OpenSim.exe looks to this file for all of its configuration info so you set these here by adding and removing semi-colons so it will ignore and follow what you want it to.
- So open OpenSim.ini in a text editor.
- Under STORAGE add a semi-colon in front of storage_plugin = "OpenSim.Data.SQLite.dll"
(and the next line "storage_connection_string" if it doesn't have one).
- You want it to use your MySQL database to store primitives and user attributes so they stay from one session to another. I believe the default, SQLite, isn't good with that. So remove the semi-colon from storage_plugin="OpenSim.Data.MySQL.dll" and the next line.
- One the connection string line you'll need to add your database details, storage_connection_string="Data Source=localhost;Database=opensim;User ID=root;Password=yourpassword;";
- Under the PHYSICS section you might want to uncomment the physics = OpenDynamicsEngine line. This physics algorithm prevents objects from going through each other whereas the default doesn't.
- The PERMISSIONS section allows you to set permissions (obviously) but I haven't played with that yet. I will definitely revisit those settings soon. Once OpenSim is running, you can shut it down, change settings, and restart it if you want to adjust things.
- In the STANDALONE section there are more SQLite settings and you need to change them to the same MySQL settings as in the STORAGE section.
- There are more interesting settings further down that I haven't investigated yet, like SUN for daytime and nighttime automation and VOICE for voice chat. I'll update when I get these figured out. You'll see below I'm not using the Hippo Opensim viewer but if you do you'll want to fill in the GRIDINFO section which gives the appropriate details to Hippo when you set it to your sim.
- Now go to exactly 3:00 here where they are starting OpenSim.exe and follow their steps, which continue on in part 2, EXCEPT where you put in the region IP (at 5:00) you'll want to put in the computer's fixed IP. You can stop when they get to downloading Hippo Viewer.
- I tried Hippo and it's great except that if students are connecting on Windows machines with network accounts Hippo has no way I could figure out of saving the sim IP as the default for all users on the machine. Instead, I downloaded the Second Life viewer, installed it on the student laptops, right clicked on the desktop icon (which will need to be moved to the All Users desktop and given full permissions to 'everyone') and added the following flag in the 'target' field: -loginuri http://fixed.ip.ad.dress:9000/ That reroutes the viewer to your sim rather than actual Second Life on the web. If you don't want the occasionally racy SL screenshots showing up either you can add -loginpagehttp://fixed.ip.ad.dress:9000/?method=login.
- Now with your sim running, open the SL viewer from the icon and login with the master avatar account you created. I hope it works!
- Finally, you might be wondering about voice chat. There's supposedly a module, explained here, that enables that through the SL viewer. We'll see. I've spent some time on this but I'll address it in a separate post because it turns out to be quite involved.