How to Build Your Own Virtual World with Opensim for Free - Part II

Error message

  • Deprecated function: Return type of DatabaseStatementBase::execute($args = [], $options = []) should either be compatible with PDOStatement::execute(?array $params = null): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2244 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/database.inc).
  • Deprecated function: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in drupal_random_bytes() (line 2268 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/bootstrap.inc).
  • Deprecated function: rtrim(): Passing null to parameter #1 ($string) of type string is deprecated in url() (line 2349 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/common.inc).
  • Deprecated function: Creation of dynamic property SelectQuery::$alterTags is deprecated in SelectQuery->addTag() (line 978 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/select.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property SelectQuery::$alterTags is deprecated in SelectQuery->addTag() (line 978 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/select.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property SelectQuery::$alterTags is deprecated in SelectQuery->addTag() (line 978 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/select.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in url_is_external() (line 2393 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/common.inc).
  • Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in url_is_external() (line 2395 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/common.inc).
  • Deprecated function: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in url() (line 2311 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/common.inc).
  • Deprecated function: Creation of dynamic property SelectQuery::$alterTags is deprecated in SelectQuery->addTag() (line 978 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/select.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property SelectQuery::$alterTags is deprecated in SelectQuery->addTag() (line 978 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/select.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).
  • Deprecated function: Creation of dynamic property DatabaseCondition::$stringVersion is deprecated in DatabaseCondition->compile() (line 1865 of /home1/touchvoi/public_html/webmac/rocketvirtual/venture/includes/database/query.inc).

Installing the Diva Distro Standalone Hypergrid Edition of Opensim

This is "How to Build Your Own Virtual World with Opensim for Free - Part II", a continuation article for Rocket Virtual on how to build your virtual space (or world . . .) Fast! series of articles by Michael Blade.  Part I is here.

As you probably already know from the previous readings we will be using the Diva Distro Standalone Hypergrid configured version of opensim.  The reason for this is basically because it is easier to setup and has a update command for future versions of Opensim.  As of this writing we are at version Opensim 0.7.0.2.

You also know these instructions are specific for Windows 2008 Server and Windows 7 OS configurations.  It does not show you how to setup a Opensim virtual world hosted on your home cable modem OR on a grid.  That requires specific routers (hardware models) and knowledge of how to configure NAT (Network Address Translation) for those routers and a dynamic DNS service.  That is beyond the scope of this article.

However, what is done in this article would still have to be done for those other configurations as well.

So let's continue . . .

 

Opening the Right Ports

The first thing you need to do is to open up ports on the firewall for Opensim to run.  Trust me, opening the additional ports up to 9012 for UDP are needed for a later step in which we will create a large island terrain of 12 multiple regions.

OPEN:

TCP port 9000 (Inbound and Outbound)

UDP ports 9000-9012 (Inbound and Outbound)

 

To do that type "check firewall status" in the Start Menu search of windows.  Then select "Advanced settings" option on the left side.  Follow along with pictures below.

 

 

Now you will notice "Inbound Rule" and "Outbound Rules" and the "New Rule..." on the right panel.  Using these we will open the necessary ports for TCP and UDP Inbound and Outbound.  Also notice the "Refresh" option, which you can use between port openings to see your progress.

 

 

Now, starting with inbound first . . .  Click on "Inbound Rules" and then click on "New Rule...".  This will start the New Inbound Rule Wizard.  Select the "Port" radio button and click "Next >".

 

 

Next "TCP", then select the "Specific local ports:" and input the "9000".  This will open up port 9000 for Inbound TCP.  Click "Next >".

 

 

Allow the connection, Next >.

 

 

Leave these checked, unless you have a reason to uncheck any of them.

 

 

Label the rule correctly.  This is important because we will be creating several rules, Inbound and Outbound, TCP and UDP, with various port numbers.

 

 

Now you will want to do the same for "Outbound", port 9000, TCP.  repeat the steps above for "Outbound Rules".  You will also need to do the same for ports "9000-9012", for UDP inbound and outbound, you can input them with a dash "-" between the port numbers for a series of sequential port numbers.  Please be sure to open all the correct ports inbound and outbound or you will have problems when installing and connecting to Opensim with the viewer.

 

Installing the Diva Distribution of Opensim

The proper download, "diva-r13981.zip — Preconfigured hypergrided standalone" can be found here =>>  https://github.com/diva/d2/downloads

FOLLOW INSTRUCTIONS FOR INSTALLING THE DIVA D2, You can skip "STEP 0-1" in her instructions, since we are a windows setup with .NET C# CLR installed already (this is the same as Mono).  Also we have already completed "STEP 1" the MySQL setup in the previous article and opened the firewall ports for our server setup, therefore simply "BEGIN AT STEP 2" in her instructions to be found here =>>   https://github.com/diva/d2/wiki/Installation  NOTE: PLEASE RETURN TO THIS ARTICLE AFTER STEP 5.  Of course ignore the instructions for other OSs (namely Linux/Unix).  You don't need to flatten the terrain, unless you would like.  We will be modifying the terrain and other things next!!! 

 

 

Creating An Island World

 

At this point, after connecting with a viewer to your newly installed Opensim Diva Distro, it's really not that impressive.  So, I'm going to show you how to create a full island world which looks something like the picture below.

 

 

Now that's more like it!

I will be taking .png files from the Viradu Science Fiction World as a base terrain, which I created in Photoshop a few years back.  The names of the regions (large block areas in Opensim) are RocketVirtual4.png through RocketVirtual12.png files, with special creation terrain and backup, restoring scripts, including a region configuration file.  Download these files first now into your server where Diva Distro Opensim is located and now installed.

1.  Now we are going to get use to the Opensim Console and its commands.  We need to turn off Opensim.  At the Opensim Console type "Shutdown" (without the quotes) and press enter.  This will cleanly terminate Opensim.

2.  Now find the Diva installation and go to the /bin directory.  Most likely located C:/diva-r13981/bin on your server.  Copy the files you downloaded,  files "RocketVirtual4.png" - "RocketVirtual12.png" into the directory along with the various .script files as well.  All except  RegionConfig.ini, that file needs to be edited and placed somewhere else.  We'll get to that step in a moment . . .

3.  First find the /config-include directory which should be there under the /bin directory.  Inside that directory open the file titled "MyWorld.ini".  That file holds configuration information which overrides Diva's Preferences.  Open the file in wordpad.  Find the top section "[StartUp]".  At the end of the section, before the next which should be "[DatabaseService]".  Add the following (2) lines of text below:

; *** Override Diva's Personal Preference for Mega-region until problems are fixed
CombineContiguousRegions=false
 
4.  Save the file.  The text you added overrides the Mega-region option in opensim.  This makes it one big region.  Trust me, you can turn it on again later if you want to by removing those lines, or putting a ";" semi-colon in front of the second line (which comments it out).
 
5.  Now in the /bin/Regions directory which you will find a sample RegionConfig.ini.example file and the RegionConfig.ini file created by the setup.  Open the "RegionConfig.ini" file with wordpad and examine it.  It should look something like this:
 
; * Regions configuration file
; * This is Your World
 
[Region Name 1]
RegionUUID = "3c8ed151-3180-4189-a676-7a49d936715c"
Location = "5397,5791"
InternalAddress = "0.0.0.0"
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = "IP Address or Domain.name"
 
[Region Name 2]
RegionUUID = "59bcc7d0-7cf5-4e4c-bc91-5f735dcdef4b"
Location = "5397,5792"
InternalAddress = "0.0.0.0"
InternalPort = 9001
AllowAlternatePorts = False
ExternalHostName = "IP Address or Domain.name"
 
[Region Name 3]
RegionUUID = "7dfe6e5f-9ecc-4f3b-9d59-327aef68a425"
Location = "5398,5791"
InternalAddress = "0.0.0.0"
InternalPort = 9002
AllowAlternatePorts = False
ExternalHostName = "IP Address or Domain.name"
 
[Region Name 4]
RegionUUID = "265f1a5e-8f58-4252-970d-62fc34536dc4"
Location = "5398,5792"
InternalAddress = "0.0.0.0"
InternalPort = 9003
AllowAlternatePorts = False
ExternalHostName = "IP Address or Domain.name"
 
 
6.  Notice the value of "ExternalHostName =" it should be an IP address or your domain name or SYSTEMIP or something.  Close and move it to somewhere else, desktop, where ever it can be recovered from, but not in the /bin/Regions directory.
 
7.  Now move the RegionConfig.ini file you downloaded into the /bin/Regions instead.  Open the file with wordpad and edit it to have the same value for all 12 ExternalHostName = "IP Address or Domain.name" values.
 
8.  You should also modify the "MasterAvatarFirstName =", "MasterAvatarLastName =" and "MasterAvatarSandboxPassword =" to the values you created during the initial setup of Diva Distro.
 
9.  If you are going to use this RegionConfig.ini in a "production setting", i.e. hosting your world for others to visit, you might want to create 12 unique RegionUUID's at this site.  You'll want to paste those new UUID's over the existing ones for each of the 12 regions.  There is more information about configuring this file here on opensimulator.org.  After your edits save the file.
 
10.  You are now ready to run Opensim.exe again, or OpenSim.32BitLaunch.exe if you have a 64 bit server.  You will be asked about 12 sets of questions, answer questions the same as you did for the intial Diva install... This is tedious, I know, I know, but there is no better way to setup a 12 regions that I know of...  Keep going, your almost to the finish and the very fun part!
 
 
 

Fun Morphing the World!

 

One of the things I always enjoyed with Opensim was morphing the terrain while observing via avatar in-world.  First you will have to connect your viewer to your world.  By now you should have a login URI "http://MyWorldDomain.com:9000" and "http://MyWorldDomain.con:9000/wifi/login"  Something like these. 

Instructions for installing a viewer and connecting to your world can be found here on Viradu. Under the "Install Viewer", "Register Account" and "Connect and Login" buttons, Just substitute you connection URI's for mine.  By the way, I'll show you how to personalize Diva Distro for a custom virtual world in a future article.  Please read on . . .

Now we are ready to begin.  You should be able to login into your world and see something like the following picture bellow.

 
If you click on the "Map" button in the viewer, you will notice 12 island dots.  These are the 12 regions created by your new RegionConfig.ini file we put in the /Regions directory under /bin directory. 
 
 
Stay logged in with the viewer and now switch (usually via RemoteDesktop) to the server opensim console.  We are going to type a few long commands which will build out the terrain.  Type:
 
command-script terrain_RocketVirtual.script
 
And press enter.  Unfortunately you will not be able to paste the command into the command line.  You must type it all the way out correctly.  Believe me though, it is still easier than typing all the commands with-in the terrain_RocketVirtual.script file take a look into it if you want...  Then continue on.
 
 
The console will continue executing commands, just be patient.  Terrains will be storing . . .
 
 
Now switch back to the viewer and your avatar and you will notice that a lot has changed.  You may even notice you are, or your avatar is, under water!  Correct that by flying up with the "Page-Up" button on your keyboard.  Ignore the Low Disk Space message, that's my local system used to write this article.
 
 
You should see land!
 
 
Now if you have been patient and you are confident the terrain has stored, execute the following command at the opensim console.  Type:
 
command-script save_RocketVirtual.script
 
Press enter.  This command will save all the new regions into .OAR files for you.
 
THIS IS IMPORTANT: Because in the future you will be able to re-create your world from these files.  If you do this command regularly, it will save your world if you have malicious  visitors or suffer a hardware failure, etc.  As long as you save the .OAR files and scripts offline some where.  See the comments section at the end of this post for further information.
 
Let's continue on . . .
 
 
It should finish and you can see the .OAR files it has created.
 
 
Issue the "Shutdown" command again, your viewer should disconnect or quit at that time.  
 
 
Now startup Opensim again and login to the viewer again and if you click the Map button.  Center the terrain by dragging with your mouse, you should see a map of the new terrians.  Be patient, this may take a while to appear, unless you rushed the script installs on the previous steps.
 
Congratulations you now have a Island World!  Thanks for following along.
 
Future articles will show you much more.  
Also, please post your success stories, and problems at the end of this article so others will be encourages to build a virtual world of their own as well . . . 
 
Finally a plug for my science fiction blog "Transhuman Singularity", which can be found here.
 
Enjoy,
 
 -MIchael Blade 4-26-2011 8:57 AM PST.
 
 
 
 
Sorry, BUT The Ad spammers have gotten so bad I'm turned off commenting and moved my last comments here  ==>
 

Ok, I'll be the first to post a comment . . .

I've enjoyed writing this article and revising it over the years.  I believe it to be one of the best for setting up the Diva Distro Opensim on a Windows Server.

I know many of you will have Linux systems or Windows systems and want to use your cable modem, or even try out a grid instead.  There are plenty of articles on the Internet for that, all you have to do is search for them and read.

Please feel free to add your comments to improve this post in a positive and constructive way, so that others might build their virtual worlds as well.  Also, if you want to link to this article, please link to Part I of the article instead.

Any suggestions for future articles can be requested here... Please don't post advertisements, they will be removed!

I can not provide support beyond the scope of this article, because as you see, setting up a virtual world is no trivial task!  However, I can consult for a fee.  You may contact me for that thru this form.

***IMPORTANT: For backups and recovery I have included a script which will restore the world to the last time you ran the "save_RocketVirtual.script" above.  Here is the command to type at the opensim console:

command-script recreate_RocketVirtual.script

I hope this helps with the times visitors are malicious or for hardware failures, etc.  It gives me peace of mind to run the save script regularly, recommend it.  By the way, you'll want to transfer those .OAR files created by the script to another machine or safe place, maybe the scripts as well, if you modified them.

That's all . . .

So Long and Thanks for All the Fish (for now),

-MBlade   ;-)

 

 

=========

 

  There is an update to the Diva Distro.  Here is the recent information from her website blog... you should read this before proceeding  =>http://metaverseink.com/blog/?p=163#more-163

=========

 

Hi there -Ok, so there is a new update to Diva Distro OpenSim 0.7.2 Post_Fixes (diva-r16915), you'll want to follow README's and the update.exe command in the bin directory if you did a previous install and are upgrading...

========================

Now, I've had some problems myself with Hyper-Gate Jumping between worlds and back and forth to OSGrid.org.

Most notably I was receiving the dreaded "[GATEKEEPER SERVICE]: Unable to send information. Please specify a default region for this grid!" message on the back console.  Searching all over it was really hard to figure it out.  Diva had some pointers here and there, but it was still hard to figure out what to do to fix it!

So here is the fix for that one, some would say again...

1. Edit your MyWorld.ini in "config-include" folder under "bin"

2. Add (or just correct -in my case (b)) the following under [GridService]

    Region_name_of_your_region = "DefaultRegion, FallbackRegion"

2. (b) that is replacing "_name_of_your_region" part with the actual name of one of your regions. One of my regions is Viradu Frank Herbert.  The region I selected is the one in the southwest corner of multiple regions in the mega-region.  I suggest you do the same if you have mega-region enabled (more about that in a moment). As an example for me it is thus... with _ for spaces.

Region_Viradu_Frank_Herbert = "DefaultRegion, FallbackRegion"

3. Save it and shutdown and re-run opensim.

# 4. is Optional...(its really up to you)  I admit I don't like the mega-regions because there are still problems for those who have previous content created before using them.  So, I turn mine off by adding the following under [Startup] with these lines in the MyWorld.ini file:

 

[Startup]
    ;Overide Diva's preference for one large mega-region
    CombineContiguousRegions=false
 
All of this is done so that http://thehypergates.com will work.  An article will follow about that soon.

============

More updates can be found for Diva Distro (look for them), keep up the excellent work Diva!

============

A new foundation has been created for Opensimulator called Overte here  =>> http://www.overte.org/home.html

============

Your up to date, that ends the comments for this post.  May 8, 2012.  Michael Blade

If you would like to see a sample world in action visit http://viradu.com install and configure a viewer...

 

 

 

Visit Viradu.com a Science Fiction World by Michael Blade

All Rights Reserved, Copyright © Michael Blade, RocketVirtual.com 2011.