<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smxy</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smxy"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/Smxy"/>
		<updated>2026-05-06T10:16:06Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/Varregion</id>
		<title>Varregion</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Varregion"/>
				<updated>2014-02-02T17:23:24Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* Stuff to Work On */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Varregion'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;quot;Varregion&amp;quot; is a feature of OpenSimulator that enables region sizes larger than 256x256. The region is just larger so it acts like a regular region but with borders farther apart.&lt;br /&gt;
&lt;br /&gt;
The implementation uses the [http://aurora-sim.org Aurora] large region protocol extensions so the existing [http://firestormviewer.org Firestorm] and [http://singularityviewer.org Singularity] Aurora support will now work for OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
A growing list of protocol changes to implement &amp;quot;varregion&amp;quot; is at [[varregion/Protocol|Varregion Protocol]].&lt;br /&gt;
&lt;br /&gt;
==Restrictions==&lt;br /&gt;
Some restrictions apply:&lt;br /&gt;
* The dimensions must be a multiple of 256 and less than or equal to 8192.&lt;br /&gt;
* The dimensions must be square (as of 20131104)&lt;br /&gt;
* Adjacent regions must be the same size. For instance, you can have multiple 512x512 regions adjacent (and see into the other region and border cross). There seems to be a viewer problem where, if regions of different size are within view distance, crashes can happen. Consider having regions of only the same size 'in view'. Remember that the region coordinates are specified in 256m region count so a group of four 512x512 regions would be specified at 8000/8000, 8000/8002, 8002/8000, and 8002/8002, for instance.&lt;br /&gt;
* You must use BulletSim (as of 20131104, ODE has not been modified for varregions)&lt;br /&gt;
** You must use BulletSim's height map terrain implementation. As of 20140128, BulletSim has been modified to force heightmap terrain implementation if region size is greater than 256 on any side. The setting can be forced by adding to your INI files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[BulletSim]&lt;br /&gt;
    TerrainImplementation = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
The size is be specified in the &amp;lt;tt&amp;gt;Region.ini&amp;lt;/tt&amp;gt; file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    [MyRegionName]&lt;br /&gt;
    RegionUUID = 95ec77ec-58c5-4ce2-9ff3-b6d1900d78a2&lt;br /&gt;
    Location = 1000,1000&lt;br /&gt;
    SizeX = 1024&lt;br /&gt;
    SizeY = 1024&lt;br /&gt;
    InternalAddress = 0.0.0.0&lt;br /&gt;
    InternalPort = 9200&lt;br /&gt;
    AllowAlternatePorts = False&lt;br /&gt;
    ExternalHostName = SYSTEMIP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If size is not specified, it will, of course, default to the legacy size of 256.&lt;br /&gt;
&lt;br /&gt;
If the given dimensions do not fit the restrictions, acceptable values are computed and warning and error messages are output into the log.&lt;br /&gt;
&lt;br /&gt;
If converting from a mega-region, remember to set &amp;quot;&amp;lt;tt&amp;gt;CombineContiguousRegions = false&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
for llRezObject to work beyond 256m set &amp;quot;ScriptDistanceLimitFactor = 52.0&amp;quot; (for 512mx512m) in the [Xengine] section of OpenSim.ini.&lt;br /&gt;
&lt;br /&gt;
The terrain heightmap is stored in the database as an array of 'shorts' (two bytes) so, if you have a very large region you might need to set the database maximum size to a larger value. For instance, a 2816x2816 region (11x11 legacy regions) turns into a 56 megabyte heightmap and, for MySQL, you would need to set &amp;lt;tt&amp;gt;max_allowed_packet&amp;lt;/tt&amp;gt; to something like 64M.&lt;br /&gt;
&lt;br /&gt;
==Loading Terrain==&lt;br /&gt;
The usual terrain console commands work with varregions. If you have set up a larger region, you can load BMP/RAW/PNG heightmap files of the dimensions of the region and fill the whole region. For instance, a 1024x1024 region terrain would be completely initialized by &amp;quot;terrain load 1024.bmp&amp;quot; if '1024.bmp is a 1024x1024 bitmap.&lt;br /&gt;
&lt;br /&gt;
==Varregions and OAR Files==&lt;br /&gt;
The objects and terrain are stored in an OAR file as if it was one region. That is, if you save a 1024x1024 region in an OAR file, you can later restore the objects and terrain into a 1024x1024 sized region. If you load an OAR file from a smaller region into a larger region, the unspecified terrain space will default to 25m.&lt;br /&gt;
&lt;br /&gt;
To make conversion to varregions easier, 'load oar' now has a '--displacement &amp;quot;&amp;lt;x,y,z&amp;gt;&amp;quot;' parameter. This displaces all of the objects and the terrain from the oar file when loading them into the new region.  For instance, say you have four&lt;br /&gt;
OAR files from four adjacent 256x256 regions (oar00.oar, oar01.oar, oar10.oar, and oar11.oar). You create a new 512x512 varregion named 'bigregion'. The following commands place the four regions of objects, terrains and parcels&lt;br /&gt;
into the new larger region:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
change region bigregion&lt;br /&gt;
load oar oar00.oar&lt;br /&gt;
load oar --displacement &amp;quot;&amp;lt;0,256,0&amp;gt;&amp;quot; --merge --forceterrain --forceparcel oar01.oar&lt;br /&gt;
load oar --displacement &amp;quot;&amp;lt;256,0,0&amp;gt;&amp;quot; --merge --forceterrain --forceparcel oar10.oar&lt;br /&gt;
load oar --displacement &amp;quot;&amp;lt;256,256,0&amp;gt;&amp;quot; --merge --forceterrain --forceparcel oar11.oar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the new &amp;quot;--forceterrain&amp;quot; and &amp;quot;--forceparcel&amp;quot; parameters. &amp;quot;--merge&amp;quot;, used by itself, is for merging together the objects from multiple OARs. Merging also suppresses the loading of terrain and parcel data which is just what you want when merging objects. But, if loading multiple OARs to create a new, larger region, the terrain and parcel information  must be loaded. Thus the new parameters.&lt;br /&gt;
&lt;br /&gt;
==Things Known to be Broken==&lt;br /&gt;
* There is some problem with teleporting in an out of larger region. It works for some configurations and not others.&lt;br /&gt;
* While adjacent regions are usually viewable, sometimes they are not. They appear when you cross over into the region.&lt;br /&gt;
&lt;br /&gt;
==Implementation Discussion==&lt;br /&gt;
Since this will be a major change to OpenSimulator that touches a&lt;br /&gt;
lot of different parts, subsequent posts, will discuss the changes I'm making.&lt;br /&gt;
&lt;br /&gt;
===TerrainData===&lt;br /&gt;
One major problem is passing the terrain data from the region to the&lt;br /&gt;
protocol stack. The existing implementation passed an array of floats&lt;br /&gt;
that were presumed to be a 256x256 array of region terrain heights.&lt;br /&gt;
The&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
class is an attempt to hide the terrain implementation&lt;br /&gt;
from&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainModule&amp;lt;/tt&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
can't be passed into the protocol&lt;br /&gt;
stack (LLClientView) because&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
is defined as part of&lt;br /&gt;
&amp;lt;tt&amp;gt;OpenSim.Region.Framework&amp;lt;/tt&amp;gt;&lt;br /&gt;
which is not visible to the protocol code.&lt;br /&gt;
&lt;br /&gt;
My solution is to create the&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;&lt;br /&gt;
class in&lt;br /&gt;
&amp;lt;tt&amp;gt;OpenSim.Framework.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;&lt;br /&gt;
just wraps the data structure for the terrain and additionally has&lt;br /&gt;
the attributes giving X and Y size.&lt;br /&gt;
&lt;br /&gt;
I didn't want to change the signature of IClientAPI since so many external modules&lt;br /&gt;
rely on it.&lt;br /&gt;
It should be changed to pass &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt; rather than a &amp;lt;tt&amp;gt;float[]&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I decided to not change IClientAPI but rather have &amp;lt;tt&amp;gt;LLClientView&amp;lt;/tt&amp;gt; ignore&lt;br /&gt;
the passed array and instead reach back into the associated scene and fetch the&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt; instance.&lt;br /&gt;
&lt;br /&gt;
There is one subclass of &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;HeightmapTerrainData&amp;lt;/tt&amp;gt; which keeps the terrain as a compressed heightmap. The height of each point is stored as a &amp;lt;tt&amp;gt;short&amp;lt;/tt&amp;gt; which is &amp;lt;tt&amp;gt;height * compressionFactor&amp;lt;/tt&amp;gt; where &amp;lt;tt&amp;gt;compressionFactor&amp;lt;/tt&amp;gt; is usually &amp;quot;100&amp;quot;. This creates a compact storage of the terrain heights with two decimal points of resolution.&lt;br /&gt;
&lt;br /&gt;
The LLLP (&amp;quot;Linden Lab Legacy Protocol&amp;quot;) sends terrain height data in&lt;br /&gt;
compressed &amp;quot;patches&amp;quot; of 16x16 areas of the terrain&lt;br /&gt;
height. This is a protocol feature that is implemented in &amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I feel that underlying protocol optimizations shouldn't appear up the&lt;br /&gt;
stack so, in creating &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;, I tried to hide terrain patches.&lt;br /&gt;
I mean, someday terrain will be generalized meshes. Right?&lt;br /&gt;
&lt;br /&gt;
===Terrain in the Database===&lt;br /&gt;
Previously, terrain height maps were saved in the database as a blob of 256x256 doubles. To have different region sizes, that format had to change. There is an existing database field &amp;lt;tt&amp;gt;revision&amp;lt;/tt&amp;gt; that stored the time the terrain was saved. This revision information wasn't used for anything so this field was co-opted to contain a revision code for the height field blob.&lt;br /&gt;
&lt;br /&gt;
There are three forms for the height map blob: legacy, compressed2D and regular2D. &amp;quot;legacy&amp;quot; is, of course, the previous 256x256 collections of doubles. &amp;quot;regular2D&amp;quot; contains the X, Y dimensions and enough floats for that area's heights. &amp;quot;compressed2D&amp;quot; contains the X,Y and compressionFactor followed by enough shorts for the height map.&lt;br /&gt;
&lt;br /&gt;
The database readers and writers default to the legacy format and, if the region happens to have the dimensions 256x256, it is stored using the legacy format. This is an attempt to keep downward compatibility.&lt;br /&gt;
&lt;br /&gt;
All of the database modules (MySQL, SQLite, MSSQL and PSQL) have been modified to store terrain this new way.&lt;br /&gt;
&lt;br /&gt;
===Sensing Border Crossing===&lt;br /&gt;
Most of the ‘move to new region’ code is based on checking boundaries. There is much code related to computing if an object or avatar has crossed a region boundary and then computing the address of the next region from same. Introducing variable sized regions messes a lot of this computation up. That is, the code doing the arithmetic usually assumes it knows the address of the next region based on a known region size and them can compute the location of the next region based on that. With varregions those assumptions no longer hold. Varregion implementation means that the computation of region base locations and border locations moves to the GridService who is the entity who really knows the size of all the regions and what is adjacent to what.&lt;br /&gt;
&lt;br /&gt;
The realization that location to region computation is really a GridService operation lead me to totally rip apart the grid boundary checking code and replace it with two functions: &amp;lt;tt&amp;gt;Scene.PositionIsInCurrentRegion(Vector3 pos)&amp;lt;/tt&amp;gt; and then &amp;lt;tt&amp;gt;EntityTransferModule.GetRegionContainingWorldLocation(double X, double Y)&amp;lt;/tt&amp;gt;. The former function tests to see if the object/avatar has moved out of the current region and the latter gets the region moved into. (Side note: &amp;lt;tt&amp;gt;GetRegionContainingWorldLocation&amp;lt;/tt&amp;gt; should really be a function on &amp;lt;tt&amp;gt;IGridService&amp;lt;/tt&amp;gt; but that exercise is left for future hacking).&lt;br /&gt;
&lt;br /&gt;
These changes leave all the 'border' code in limbo -- the generation of the border lists is still there but it is not being used. This should eventually be cleaned up. Also, the computation of neighbor regions is scattered around with routines on &amp;lt;tt&amp;gt;IGridService&amp;lt;/tt&amp;gt;, in &amp;lt;tt&amp;gt;EntityTransferModule&amp;lt;/tt&amp;gt; and a bunch of bookkeeping in &amp;lt;tt&amp;gt;Scene&amp;lt;/tt&amp;gt;. This too should be cleaned up.&lt;br /&gt;
&lt;br /&gt;
==Implementation Notes==&lt;br /&gt;
&lt;br /&gt;
As of January 27, 2014, varregion is a feature of the 'master' repository branch.&lt;br /&gt;
&lt;br /&gt;
===Stuff to Work On===&lt;br /&gt;
What follows are notes I am making as things that might need work are found in OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
* Consolidate neighbor region computation code (Scene, EntityTransferModule and IGridService all have 'get neighbor' code)&lt;br /&gt;
* Clean up/eliminate border list creation and use code&lt;br /&gt;
* Region handles are world coords and also the base of the region&lt;br /&gt;
** verify that everyone who converts coords to handle (Util.RegionWorldLocToHandle) is supplying the base of the region. (mostly done)&lt;br /&gt;
* ITerrainLoader implementations (mostly done)&lt;br /&gt;
**	How to handle tiles.&lt;br /&gt;
**	How to handle large regions sizes.&lt;br /&gt;
**	Terrain/FileLoaders/*.cs all return an ITerrainChannel&lt;br /&gt;
**	Need to fix all the file reader/writers&lt;br /&gt;
**	FileLoaders/LLRAW.cs has several &amp;quot;256&amp;quot;s rather than constant references&lt;br /&gt;
* Teleporting: should be able to teleport to anywhere in a large region&lt;br /&gt;
** &amp;quot;MyRegion/550/687/40&amp;quot;&lt;br /&gt;
* HG code needs to allow addresses anywhere into large regions&lt;br /&gt;
* When GridService return adjacent regions, make sure it does the right thing for large regions&lt;br /&gt;
* Consider moving terrain XML serialization into TerrainData&lt;br /&gt;
* Consider removing all instances of TerrainChannel.GetFloatsSerialized()&lt;br /&gt;
**	Replace with passing around TerrainData&lt;br /&gt;
* Code in EntityTransferModule that checks distance to decide if to make new connection&lt;br /&gt;
**	search for references to 'Constants.RegionSize'&lt;br /&gt;
**	Consider removing the distance code and replacing with call to grid service&lt;br /&gt;
* WorldMapModule.cs does a lot of arithmetic depending on constants that are really Contants.RegionSize&lt;br /&gt;
* Util.IsOutsideView uses Constants.RegionSize. Is use in ScenePresence a problem?&lt;br /&gt;
**	Used in ScenePresence.AdjustKnownSeeds()&lt;br /&gt;
**	Is this another instance like EntityTransferModule that needs to goto the grid service?&lt;br /&gt;
* Move all the short[] heightmap representation stuff into TerrainData.cs (partially done)&lt;br /&gt;
**	Is it possible to move all the patch stuff out of TerrainModule/TerrainChannel?&lt;br /&gt;
**	Clean up the use of m_revert. It looks like it is not saved after terrain is modified.&lt;br /&gt;
* Need to look through RegionCombinerModule.cs and see what safety checks are needed&lt;br /&gt;
**	Maybe just prevent combination if not legacy region size&lt;br /&gt;
* In LSL_Api.cs, llEdgeOfWorld() does some neighbor computation. Check for ok'ness.&lt;br /&gt;
* LandManagementModule.SendParcelOverlay sends land sale/ownership info for 4x4m areas&lt;br /&gt;
**  Looks like it expects to send exactly one 1024 byte block (for the 256x256 legacy region&lt;br /&gt;
**  Check viewer code for what will happen for larger regions&lt;br /&gt;
* The code for cloud and wind needs to be enhanced for larger regions&lt;br /&gt;
**	New overlay types added&lt;br /&gt;
* LLClientView.SendMapBlockSplit() needs to have region size to send with the map info&lt;br /&gt;
* Region/Framework/Scenes/Tests/BorderTests.cs might need work if non-standard regions are tested&lt;br /&gt;
* Verify terrain tests still work (for 256m regions)&lt;br /&gt;
* Region coords are sometimes 'int' and sometimes 'uint' with conversions EVERYWHERE&lt;br /&gt;
** pass over everything and convert region coordinates it 'uint's&lt;br /&gt;
** consider creating structures for world and region coordinates so there can be compile time checking&lt;br /&gt;
&lt;br /&gt;
====Viewer====&lt;br /&gt;
* LLSurface is wired to expect adjacent regions of same size&lt;br /&gt;
* Terrain surface image is sized with a 'static&amp;quot;: &amp;quot;    static S32  sTextureSize;               // Size of the surface texture&amp;quot;&lt;br /&gt;
* From FreeNode:#SingularityViewer 20131125:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Aleric&amp;gt; radams1, SianaGearz, frnic : I couldn't help myself doing a profile anyway..  The reason the viewer is slow is because it's busy &amp;quot;drawing&amp;quot; the terrain. &amp;quot;drawing&amp;quot; between quotes because my guess is that it is trying to draw ALL terrain and then clip that afterwards to the frustrum... &lt;br /&gt;
&amp;lt;Aleric&amp;gt; So, this could be greatly improved by disregarding terrain way way earlier when it is beyond the drawing range anyway.&lt;br /&gt;
&amp;lt;SianaGearz&amp;gt; OK&lt;br /&gt;
&amp;lt;Aleric&amp;gt; I disabled all rendering, even added a 'return' in terrain render&lt;br /&gt;
&amp;lt;Aleric&amp;gt; but.. no improvement of FPS!&lt;br /&gt;
&amp;lt;frnic&amp;gt; oops&lt;br /&gt;
&amp;lt;Aleric&amp;gt; LLSurfacePatch::updateVisibility() is still eating a lot of cpu.&lt;br /&gt;
&amp;lt;Aleric&amp;gt; LLSurface::updatePatchVisibilities does 97% of the calls to LLSurfacePatch::updateVisibility&lt;br /&gt;
&amp;lt;Aleric&amp;gt; which then spends most of it's time calling LLCamera::AABBInFrustumNoFarClip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Singularity commit for varregion: https://github.com/singularity-viewer/SingularityViewer/commit/ad8ea07a&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
* Terrain/parcel operations&lt;br /&gt;
** Default 256 standalone region&lt;br /&gt;
*** Clean database. Start single standalone region. Verify 'pimple' region. Verify one parcel. Flatten region.&lt;br /&gt;
*** Create parcels adjacent to each edge and standalone in middle. Change names of each parcel and verify. Restart simulator and verify parcels exist and work correctly.&lt;br /&gt;
*** Save five parcel region as OAR. Clear database. Restart region. Load oar. Verify 5 parcels of correct location, name and features.&lt;br /&gt;
** Adjacent 256 standalone regions &lt;br /&gt;
** 768x768 standalone region&lt;br /&gt;
** Changing land from 256 to 768&lt;br /&gt;
* Teleporting&lt;br /&gt;
* Adjacency&lt;br /&gt;
* Hypergrid&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Varregion</id>
		<title>Varregion</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Varregion"/>
				<updated>2013-11-11T22:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* Restrictions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Varregion'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;quot;Varregion&amp;quot; is a feature of OpenSimulator that enables region sizes larger than 256x256. The region is just larger so it acts like a regular region but with borders farther apart.&lt;br /&gt;
&lt;br /&gt;
The implementation uses the [http://aurora-sim.org Aurora] large region protocol extensions so the existing [http://firestormviewer.org Firestorm] and [http://singularityviewer.org Singularity] Aurora support will now work for OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
==Restrictions==&lt;br /&gt;
Some restrictions apply:&lt;br /&gt;
* The dimensions must be a multiple of 256&lt;br /&gt;
* The dimensions must be square if used with Singularity (as of 20131104)&lt;br /&gt;
* There must be no adjacent regions (at least one empty 256m space bordering all sides of the large region)&lt;br /&gt;
* You must use BulletSim (as of 20131104, ODE has not been modified for varregions)&lt;br /&gt;
** You must use BulletSim's height map terrain implementation. Add to your INI files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[BulletSim]&lt;br /&gt;
    TerrainImplementation = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
The size is be specified in the &amp;lt;tt&amp;gt;Region.ini&amp;lt;/tt&amp;gt; file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    [MyRegionName]&lt;br /&gt;
    RegionUUID = 95ec77ec-58c5-4ce2-9ff3-b6d1900d78a2&lt;br /&gt;
    Location = 1000,1000&lt;br /&gt;
    SizeX = 1024&lt;br /&gt;
    SizeY = 1024&lt;br /&gt;
    InternalAddress = 0.0.0.0&lt;br /&gt;
    InternalPort = 9200&lt;br /&gt;
    AllowAlternatePorts = False&lt;br /&gt;
    ExternalHostName = SYSTEMIP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If size is not specified, it will, of course, default to the legacy size of 256.&lt;br /&gt;
&lt;br /&gt;
If the given dimensions do not fit the restrictions, acceptable values are computed and warning and error messages are output into the log.&lt;br /&gt;
&lt;br /&gt;
The terrain heightmap is stored in the database as an array of 'shorts' (two bytes) so, if you have a very large region you might need to set the database maximum size to a larger value. For instance, a 2618x2618 region (11x11 legacy regions) turns into a 56 megabyte heightmap and, for MySQL, you would need to set &amp;lt;tt&amp;gt;max_allowed_packet&amp;lt;/tt&amp;gt; to something like 64M.&lt;br /&gt;
&lt;br /&gt;
==Loading Terrain==&lt;br /&gt;
TODO: discussion of reading in terrain information&lt;br /&gt;
&lt;br /&gt;
==Varregions and OAR Files==&lt;br /&gt;
TODO: Discussion on saving and restoring varregions.&lt;br /&gt;
&lt;br /&gt;
==Implementation Discussion==&lt;br /&gt;
Since this will be a major change to OpenSimulator that touches a&lt;br /&gt;
lot of different parts, subsequent posts, will discuss the changes I'm making.&lt;br /&gt;
&lt;br /&gt;
===TerrainData===&lt;br /&gt;
One major problem is passing the terrain data from the region to the&lt;br /&gt;
protocol stack. The existing implementation passed an array of floats&lt;br /&gt;
that were presumed to be a 256x256 array of region terrain heights.&lt;br /&gt;
The&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
class is an attempt to hide the terrain implementation&lt;br /&gt;
from&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainModule&amp;lt;/tt&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
can't be passed into the protocol&lt;br /&gt;
stack (LLClientView) because&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;&lt;br /&gt;
is defined as part of&lt;br /&gt;
&amp;lt;tt&amp;gt;OpenSim.Region.Framework&amp;lt;/tt&amp;gt;&lt;br /&gt;
which is not visible to the protocol code.&lt;br /&gt;
&lt;br /&gt;
My solution is to create the&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;&lt;br /&gt;
class in&lt;br /&gt;
&amp;lt;tt&amp;gt;OpenSim.Framework.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;&lt;br /&gt;
just wraps the data structure for the terrain and additionally has&lt;br /&gt;
the attributes giving X and Y size.&lt;br /&gt;
&lt;br /&gt;
I didn't want to change the signature of IClientAPI since so many external modules&lt;br /&gt;
rely on it.&lt;br /&gt;
It should be changed to pass &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt; rather than a &amp;lt;tt&amp;gt;float[]&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I decided to not change IClientAPI but rather have &amp;lt;tt&amp;gt;LLClientView&amp;lt;/tt&amp;gt; ignore&lt;br /&gt;
the passed array and instead reach back into the associated scene and fetch the&lt;br /&gt;
&amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt; instance.&lt;br /&gt;
&lt;br /&gt;
There is one subclass of &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;HeightmapTerrainData&amp;lt;/tt&amp;gt; which keeps the terrain as a compressed heightmap. The height of each point is stored as a &amp;lt;tt&amp;gt;short&amp;lt;/tt&amp;gt; which is &amp;lt;tt&amp;gt;height * compressionFactor&amp;lt;/tt&amp;gt; where &amp;lt;tt&amp;gt;compressionFactor&amp;lt;/tt&amp;gt; is usually &amp;quot;100&amp;quot;. This creates a compact storage of the terrain heights with two decimal points of resolution.&lt;br /&gt;
&lt;br /&gt;
The LLLP (&amp;quot;Linden Lab Legacy Protocol&amp;quot;) sends terrain height data in&lt;br /&gt;
compressed &amp;quot;patches&amp;quot; of 16x16 areas of the terrain&lt;br /&gt;
height. This is a protocol feature that is implemented in &amp;lt;tt&amp;gt;TerrainChannel&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I feel that underlying protocol optimizations shouldn't appear up the&lt;br /&gt;
stack so, in creating &amp;lt;tt&amp;gt;TerrainData&amp;lt;/tt&amp;gt;, I tried to hide terrain patches.&lt;br /&gt;
I mean, someday terrain will be generalized meshes. Right?&lt;br /&gt;
&lt;br /&gt;
===Terrain in the Database===&lt;br /&gt;
Previously, terrain height maps were saved in the database as a blob of 256x256 doubles. To have different region sizes, that format had to change. There is an existing database field &amp;lt;tt&amp;gt;revision&amp;lt;/tt&amp;gt; that stored the time the terrain was saved. This revision information wasn't used for anything so this field was co-opted to contain a revision code for the height field blob.&lt;br /&gt;
&lt;br /&gt;
There are three forms for the height map blob: legacy, compressed2D and regular2D. &amp;quot;legacy&amp;quot; is, of course, the previous 256x256 collections of doubles. &amp;quot;regular2D&amp;quot; contains the X, Y dimensions and enough floats for that area's heights. &amp;quot;compressed2D&amp;quot; contains the X,Y and compressionFactor followed by enough shorts for the height map.&lt;br /&gt;
&lt;br /&gt;
The database readers and writers default to the legacy format and, if the region happens to have the dimensions 256x256, it is stored using the legacy format. This is an attempt to keep downward compatibility.&lt;br /&gt;
&lt;br /&gt;
All of the database modules (MySQL, SQLite, MSSQL and PSQL) have been modified to store terrain this new way.&lt;br /&gt;
&lt;br /&gt;
==Things Known to be Broken==&lt;br /&gt;
* Rezzing a prim from inventory at greater than &amp;lt;256,256&amp;gt;&lt;br /&gt;
* Saving/restoring heightmap when restarting region&lt;br /&gt;
**	Start large region, edit large part, restart region, see that edits are not saved&lt;br /&gt;
&lt;br /&gt;
==Implementation Notes==&lt;br /&gt;
&lt;br /&gt;
===Branch in the Repository===&lt;br /&gt;
As of November 4, 2013, the varregion implementation is in the 'varregion' branch in the OpenSimulator git source repository. This branch is periodically merged with the 'master' branch so it is roughly the 'master' branch plus the varregion functionality.&lt;br /&gt;
&lt;br /&gt;
Since the varregion implementation is supposed to be 100% downward compatible, this branch will eventually be merged into the 'master' branch once the not-breaking-existing-configuration feature is tested and verified.&lt;br /&gt;
&lt;br /&gt;
In an existing clone of the OpenSimulator git source repository, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# setup local branch that tracks the remote repository branch&lt;br /&gt;
git branch --track varregion origin/varregion&lt;br /&gt;
# update the working set with the varregion sources&lt;br /&gt;
git checkout varregion&lt;br /&gt;
&lt;br /&gt;
# after you are done testing varregion, restore the 'master' sources with:&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stuff to Work On===&lt;br /&gt;
What follows are notes I am making as things that might need work are found in OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
* ITerrainLoader implementations&lt;br /&gt;
**	How to handle tiles.&lt;br /&gt;
**	How to handle large regions sizes.&lt;br /&gt;
**	Terrain/FileLoaders/*.cs all return an ITerrainChannel&lt;br /&gt;
**	Need to fix all the file reader/writers&lt;br /&gt;
**	FileLoaders/LLRAW.cs has several &amp;quot;256&amp;quot;s rather than constant references&lt;br /&gt;
* Teleporting: should be able to teleport to anywhere in a large region&lt;br /&gt;
** &amp;quot;MyRegion/550/687/40&amp;quot;&lt;br /&gt;
* HG code needs to allow addresses anywhere into large regions&lt;br /&gt;
* When GridService return adjacent regions, make sure it does the right thing for large regions&lt;br /&gt;
* Consider moving terrain XML serialization into TerrainData&lt;br /&gt;
* Consider removing all instances of TerrainChannel.GetFloatsSerialized()&lt;br /&gt;
**	Replace with passing around TerrainData&lt;br /&gt;
* Code in EntityTransferModule that checks distance to decide of to make new connection&lt;br /&gt;
**	search for references to 'Constants.RegionSize'&lt;br /&gt;
**	Consider removing the distance code and replacing with call to grid service&lt;br /&gt;
* WorldMapModule.cs does a lot of arithmetic depending on constants that are really Contants.RegionSize&lt;br /&gt;
* Util.IsOutsideView uses Constants.RegionSize. Is use is ScenePresence a problem?&lt;br /&gt;
**	Used in ScenePresence.AdjustKnownSeeds()&lt;br /&gt;
**	Is this another instance like EntityTransferModule that needs to goto the grid service?&lt;br /&gt;
*Move all the short[] heightmap representation stuff into TerrainData.cs (partially done)&lt;br /&gt;
**	Is it possible to move all the patch stuff out of TerrainModule/TerrainChannel?&lt;br /&gt;
**	Clean up the use of m_revert. It looks like it is not saved after terrain is modified.&lt;br /&gt;
* Need to look through RegionCombinerModule.cs and see what safety checks are needed&lt;br /&gt;
**	Maybe just prevent combination if not legacy region size&lt;br /&gt;
* In LSL_Api.cs, llEdgeOfWorld() does some neighbor computation. Check for ok'ness.&lt;br /&gt;
* Blog entry on moving terrain info into class&lt;br /&gt;
**	Moving class from OpenSim.Region.Framework into OpenSim.Framework&lt;br /&gt;
* LandManagementModule.SendParcelOverlay sends land sale/ownership info for 4x4m areas&lt;br /&gt;
**  Looks like it expects to send exactly one 1024 byte block (for the 256x256 legacy region&lt;br /&gt;
**  Check viewer code for what will happen for larger regions&lt;br /&gt;
* The code for cloud and wind needs to be enhanced for larger regions&lt;br /&gt;
**	New layer types added&lt;br /&gt;
* LLClientView.SendMapBlockSplit() needs to have region size to send with the map info&lt;br /&gt;
* Ward3DMap/TerrainSplat.cs is filled with &amp;quot;256&amp;quot;s.&lt;br /&gt;
**	Doesn't even bother to use the symbolic constants.&lt;br /&gt;
* Warp3DMap/Warp3DImageModule.cs is filled with &amp;quot;256&amp;quot;s&lt;br /&gt;
* WorldMap/WorldMapModules.cs is filled with &amp;quot;256&amp;quot;S&lt;br /&gt;
* Services/MapImageService/MapImageService.cs relies on a constant width of 256&lt;br /&gt;
* Region/Framework/Scenes/Tests/BorderTests.cs might need work if non-standard regions are tested&lt;br /&gt;
* Verify terrain tests still work (for 256m regions)&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
* Terrain/parcel operations&lt;br /&gt;
** Default 256 standalone region&lt;br /&gt;
*** Clean database. Start single standalone region. Verify 'pimple' region. Verify one parcel. Flatten region.&lt;br /&gt;
*** Create parcels adjacent to each edge and standalone in middle. Change names of each parcel and verify. Restart simulator and verify parcels exist and work correctly.&lt;br /&gt;
*** Save five parcel region as OAR. Clear database. Restart region. Load oar. Verify 5 parcels of correct location, name and features.&lt;br /&gt;
** Adjacent 256 standalone regions &lt;br /&gt;
** 768x768 standalone region&lt;br /&gt;
** Changing land from 256 to 768&lt;br /&gt;
* Teleporting&lt;br /&gt;
* Adjacency&lt;br /&gt;
* Hypergrid&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Network_Settings</id>
		<title>Network Settings</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Network_Settings"/>
				<updated>2011-12-31T18:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenSim Grid - Ports for Grid Services - from version 0.7.0 ==&lt;br /&gt;
&lt;br /&gt;
Ports used for Grid services (such as login, user control, grid management, asset services and inventory services, etc) are run within a ''Robust'' shell started by Robust.exe. They can be configured to state which port they run on, and the services can be run across multiple machines as desired to balance load.  &lt;br /&gt;
&lt;br /&gt;
But in a simple grid with all the Robust services running in a single Robust.exe shell it is normal to just use two ports for all services:&lt;br /&gt;
&lt;br /&gt;
  TCP/8002 - All externally and user accessible OpenSim services &lt;br /&gt;
  TCP/8003 - All internal OpenSim services&lt;br /&gt;
&lt;br /&gt;
Hence, 8002 should be accessible through your firewall, but in this simple setup 8003 can be behind a firewall.&lt;br /&gt;
&lt;br /&gt;
==OpenSim Grid - Ports for Region Simulators==&lt;br /&gt;
One port must be open on any computer running an OpenSim.exe simulator that attaches to a grid. OpenSim.exe can be run on same computer (or one of computers) on which the Grid Services run, or on a separate computer.  One OpenSim.exe can be used to run a number of regions, but each region must have its own unique port on that computer.&lt;br /&gt;
&lt;br /&gt;
  TCP+UDP/9000 - Default Port for First Simulator - grid, regions, and clients talk to these&lt;br /&gt;
  TCP+UDP/9001 - Default Prot for Second Simulator - grid, regions, and clients talk to these&lt;br /&gt;
  TCP+UDP/900x - Default Port for further Simulators...&lt;br /&gt;
&lt;br /&gt;
In fact you can choose which port you prefer to use for each region on grid using the '''InternalPort''' parameter in the relevant Region description .ini file&lt;br /&gt;
&lt;br /&gt;
XML-RPC communications, if enabled, are on the port specified in the [XMLRPC] section '''XmlRpcPort''' parameter (default port 20800).&lt;br /&gt;
&lt;br /&gt;
  TCP+UDP/20800 - Default Port for XML-RPC communications to a specific OpenSim.ini simulator (and all regions on it)&lt;br /&gt;
&lt;br /&gt;
==OpenSim StandAlone==&lt;br /&gt;
* UDP+TCP/9000 - Services and the single region simulator are used via this single port&lt;br /&gt;
&lt;br /&gt;
* Check your /bin/Regions/ directory which contain one or more Region description files. Three of the fields will specify the internal IP address or domain name, the external IP address or domain name, and the port to be used for the region (which must be unique for each region) - something like this:&lt;br /&gt;
  InternalAddress = &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
  InternalPort = 9000&lt;br /&gt;
  ExternalHostName = 82.73.39.77&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Retrieve your [http://www.ip-adress.com/ external_host_name]&lt;br /&gt;
* Get your internal_ip_address (using ipconfig for windows, or ifconfig for linux)&lt;br /&gt;
* Make sure the settings match&lt;br /&gt;
&lt;br /&gt;
If you have a router in front of your internet-modem, check out ''NAT and Port Forwarding''.&lt;br /&gt;
Else you're good to go.&lt;br /&gt;
&lt;br /&gt;
==Optional and Add-on Module Specific Ports==&lt;br /&gt;
&lt;br /&gt;
===FreeSWITCH Voice===&lt;br /&gt;
&lt;br /&gt;
  TCP+UDP 5060 - SIP Ports (5060 for default call profile)&lt;br /&gt;
  TCP+UDP 1720 - H.323 ports for call setup&lt;br /&gt;
&lt;br /&gt;
More details on the Freeswitch ports used and firewall configuration details are at:&lt;br /&gt;
&lt;br /&gt;
* [[Freeswitch_Module#Firewall_Config]]&lt;br /&gt;
* http://wiki.freeswitch.org/wiki/Firewall&lt;br /&gt;
&lt;br /&gt;
===Mumble Voice===&lt;br /&gt;
&lt;br /&gt;
  SIP Ports&lt;br /&gt;
  ICE Ports&lt;br /&gt;
&lt;br /&gt;
== NAT and Port Forwarding  ==&lt;br /&gt;
&lt;br /&gt;
=== Straightforward  ===&lt;br /&gt;
&lt;br /&gt;
If your host does not have a public IP address (eg it is hidden behind a home router) you will have issues hosting grid and region servers if you plan on connecting clients to it on both sides of the router, however this can be worked around through the use of port forwarding and ip-redirecting.This will also correct issues where the client hangs at region handshake.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Set internal_ip_address to your local LAN-ip(e.g. 192.168.2.1) (region xml-file) &lt;br /&gt;
*Set the external_host_name to your external IP-Address (Not a hostname, since DNS-resolving doesn't work properly) (region xml-file) &lt;br /&gt;
*Forward the appropriate ports to the OpenSim-server on both UDP and TCP (router-setup) &lt;br /&gt;
*Open appropriate ports on the OpenSim-server's firewall on both UDP and TCP&amp;lt;br&amp;gt;&lt;br /&gt;
*Reroute traffic for '''Linux:''' &lt;br /&gt;
**iptables -t nat -A OUTPUT --dst '''''EXTERNAL_IP''''' -p tcp --dport 9000:9010 -j DNAT --to-destination '''INTERNAL_IP''' &lt;br /&gt;
**iptables -t nat -A OUTPUT --dst '''''EXTERNAL_IP''''' -p udp --dport 9000:9010 -j DNAT --to-destination '''''INTERNAL_IP''''' &lt;br /&gt;
**service iptables restart&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those iptables lines will redirect any traffic going to '''''EXTERNAL_IP''''' on ports 9000 to 9010 to I'''''NTERNAL_IP'''''. The internal ip is the LAN-IP of your server, and External ip is your internet IP. ''Use the above iptables command on all internal machines'' except your gateway/router. This assumes your gateway/router machine does not also host your sim. This also assume you have a default ACCEPT policy on your internal machines. So to connect from within your LAN, use the above iptables commands to reroute the traffic to the server internal ip. &lt;br /&gt;
&lt;br /&gt;
*Reroute traffic for '''Windows:''' &lt;br /&gt;
**netsh (this method needs experimentation and elaboration. Please see the [[Talk:Network Settings|Discussion page]] for some guesswork on where to start) &lt;br /&gt;
***note from paulieFlomar: I tried using Windows built-in tools like FireWall, netsh, and IP Security Policy. My experience with these tools was unsuccessful. I then tried to create an outgoing rule with some third-party firewall products. I tried ZoneAlarm and Sunbelt Firewall. Neither of these products would allow me to create outgoing rules. Finally, I tried creating an outgoing rule in my Linux IP Tables firewall. This worked. I created 2 rules which I placed in a firewall script, before my NAT rule. The rules were:&lt;br /&gt;
&lt;br /&gt;
iptables -t nat -A PREROUTING --dst '''''EXTERNAL_IP''''' -p tcp --dport 9000:9010 -j DNAT --to-destination '''''INTERNAL_IP''''' &lt;br /&gt;
&lt;br /&gt;
iptables -t nat -A PREROUTING --dst '''''EXTERNAL_IP''''' -p udp --dport 9000:9010 -j DNAT --to-destination '''''INTERNAL_IP''''' &lt;br /&gt;
&lt;br /&gt;
These rules worked. I can now access my region from my LAN. &lt;br /&gt;
&lt;br /&gt;
Optional: &lt;br /&gt;
&lt;br /&gt;
*Register an external domain-name (for external connections) &lt;br /&gt;
*Use Bind for internal domain-name resolving&lt;br /&gt;
&lt;br /&gt;
=== DynDNS loopback  ===&lt;br /&gt;
&lt;br /&gt;
This method was used and successfully tested using www.dyndns.com (creates a virtual domain for your pc/ip, like yourcomputer.ath.cx) as loopback for devices on a LAN with three machines (pentium 2.8ghz running windows xp - internet server , amd opteron running ubuntu 7.10 64bit - as opensim server - and MacBook with OSX 10.4.11 - as client), a modem (thomson/alcatel speedtouch 330) and a mini-switch (which brand no one ever heard of). The connection of these machines is made as following: Modem -&amp;amp;gt; Win Pc -&amp;amp;gt; Switch -&amp;amp;gt; Mac and Ubuntu. Dyndns is used to loopback to the Win Pc, and then it forwards the request to the internal LAN opensim server, which grants everything for the client. As for the client, if he is inside the private LAN then he is now actually someone on the internet requesting for access to the opensim server. Thus, if the client is someone on the internet then he will be treated like that. Tricky&amp;amp;nbsp;? Further details ahead: &lt;br /&gt;
&lt;br /&gt;
Method: &lt;br /&gt;
&lt;br /&gt;
*Set the simulator listening IP address to your dyndns domain - edit ''opensim/bin/Regions/default.xml''; and change the external_host_name to ''external_host_name=&amp;quot;yourcomputer.ath.cx&amp;quot;''. Leave internal_ip_address &amp;quot;0.0.0.0&amp;quot; and port &amp;quot;9000&amp;quot;. &lt;br /&gt;
*Set the client (SecondLife Viewer) -loginuri to &amp;quot;yourcomputer.ath.cx:8002&amp;quot; (the port used was 8002, yours can be different if you configured it that way) - i didnt used the -loginserver flag also. &lt;br /&gt;
*Port Forward the above ports on the internet server (in this case, win xp). You do so by creating exceptions in Windows Firewall for the above mentioned ports, and for both connections: Internet Connection and LAN - this keeps the ports open for the web requests to travel over the private network. &lt;br /&gt;
*Edit &amp;quot;hosts&amp;quot; file (on windows, this is C:\Windows\System32\Drivers\etc\hosts and on Unix-type systems, this is /etc/hosts) entry on your internet server (in this case, win xp box) and add the following line: ''xxx.xxx.xxx.xxx&amp;lt;nowiki&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt; yourcomputer.ath.cx''. Of course, xxx.xxx.xxx.xxx is your opensim server internal LAN IP.&lt;br /&gt;
&lt;br /&gt;
yourcomputer.ath.cx is now available for everyone to connect and you may login with the client! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DynDNS and the free IPCop Linux Firewall  ===&lt;br /&gt;
&lt;br /&gt;
Here an other way with the IPCop Linux Firewall, DynDNS and a OpenSimulator server &lt;br /&gt;
&lt;br /&gt;
*Setup an IPCop firewall with 3 interfaces (red, green, orange) and put the OpenSimulator server on the orange interface (all OpenSimulator server's on one Linux box). Red is the internet, green is your lan. &lt;br /&gt;
*Setup the DynDNS service on the IPCop Firewall. &lt;br /&gt;
*change the external_host_name in the default.xml to the DynDNS name &lt;br /&gt;
*do'nt change the internal_ip_address in the default.XML, it should be 0.0.0.0 &lt;br /&gt;
*if there, delete all loopbacks in /etc/hosts only 127.0.0.1 should be localhost &lt;br /&gt;
*customize the Port Forwarding on the IPCop Firewall (8002 TCP, 9000 UDP/TCP and for every additonal region 900X UDP/TCP). Port forwarding should be set to the (orange) interface adress of the OpenSimulator Box&lt;br /&gt;
&lt;br /&gt;
Then it should be possible to conenct from inside the LAN (green) and it is also possible to conenct from the internet (over the red interface). (well, the inside-lan connections are also made now over the RED interface, but infact, this is in the same ISP network, it should be quit fast&amp;amp;nbsp;;-) &lt;br /&gt;
&lt;br /&gt;
*Attention&amp;amp;nbsp;: the ports on the IPCop Firewall must also be open if you connect from inside (green) to your OpenSimulator Grid&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
If you are using the OS WebGui, do'nt forget to set the &amp;quot;SMTP AUTH&amp;quot; in your email server. Most of the dynamic IPs are blocked at ISP level so the new users do'nt get any confirmation email. &lt;br /&gt;
&lt;br /&gt;
This was tested with the Hippo OpenSim Viewer and with the Login URL&amp;amp;nbsp;: http://DynDNSName:8002 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Local connections with ZyXEL DSL modem/router and NAT/Port Forwarding  ===&lt;br /&gt;
&lt;br /&gt;
This solution works with the ZyXEL Prestige 660ME-61 DSL Router. It may work with other models made by ZyXEL. &lt;br /&gt;
&lt;br /&gt;
Method: &lt;br /&gt;
&lt;br /&gt;
*Connect by TELNET to your ZyXEL DSL modem. Use the same IP address that you would if you were using the web interface. For example, the default ip on most Embarq ZyXEL DSL modems is 192.168.2.1.&lt;br /&gt;
&lt;br /&gt;
 telnet 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
*Enter your password. If you do not know it, try just pressing &amp;amp;lt;ENTER&amp;amp;gt; or ask your ISP for the password. They may or may not give it to you.&lt;br /&gt;
&lt;br /&gt;
*Select menu option &amp;quot;24. System Maintenance&amp;quot; from the menu.&lt;br /&gt;
&lt;br /&gt;
                    Copyright (c) 1994 - 2004 ZyXEL Communications Corp.&lt;br /&gt;
                              Prestige 660ME-61 Main Menu&lt;br /&gt;
     Getting Started                      Advanced Management&lt;br /&gt;
       1. General Setup                     21. Filter Set Configuration&lt;br /&gt;
       2. WAN Backup Setup                  22. SNMP Configuration&lt;br /&gt;
       3. LAN Setup                         23. System Password&lt;br /&gt;
       4. Internet Access Setup             24. System Maintenance&lt;br /&gt;
                                            25. IP Routing Policy Setup&lt;br /&gt;
     Advanced Applications                  26. Schedule Setup&lt;br /&gt;
       11. Remote Node Setup&lt;br /&gt;
       12. Static Routing Setup&lt;br /&gt;
       15. NAT Setup                        99. Exit&lt;br /&gt;
                          Enter Menu Selection Number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Select menu option &amp;quot;8. Command Interpreter Mode&amp;quot; from the menu&lt;br /&gt;
&lt;br /&gt;
                          Menu 24 - System Maintenance&lt;br /&gt;
                         1.  System Status&lt;br /&gt;
                         2.  System Information and Console Port Speed&lt;br /&gt;
                         3.  Log and Trace&lt;br /&gt;
                         4.  Diagnostic&lt;br /&gt;
                         5.  Backup Configuration&lt;br /&gt;
                         6.  Restore Configuration&lt;br /&gt;
                         7.  Upload Firmware&lt;br /&gt;
                         8.  Command Interpreter Mode&lt;br /&gt;
                         9.  Call Control&lt;br /&gt;
                         10. Time and Date Setting&lt;br /&gt;
                         11. Remote Management&lt;br /&gt;
                          Enter Menu Selection Number:&lt;br /&gt;
&lt;br /&gt;
*At the prompt type &amp;quot;ip nat loopback on&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Copyright (c) 1994 - 2004 ZyXEL Communications Corp.&lt;br /&gt;
 Sprint &amp;amp;gt; ip nat loopback on &lt;br /&gt;
&lt;br /&gt;
*At the prompt type &amp;quot;exit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Sprint&amp;amp;gt; exit&lt;br /&gt;
&lt;br /&gt;
*Select menu option &amp;quot;99. Exit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*Follow all other steps for configuring and starting your server as outlined in [[Main_Page#Getting_Started_with_OpenSim|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Local connections with the DLink GamerLounge Extreme N router  ===&lt;br /&gt;
&lt;br /&gt;
Networking and router configurations have been responsible for 98% of all trouble I have had setting up and operating OpenSimulator region server software. Insuring that you have a capable router properly configured should be the first thing on the list of configuration checkpoints for a smooth and trouble-free path to OpenSimulator software operations in GridMode. &lt;br /&gt;
&lt;br /&gt;
Below is a series of screen snapshots with the key pages of my router configuration interface with proper settings displayed. &lt;br /&gt;
&lt;br /&gt;
The settings below assume that you have an otherwise working connection and do not touch on such subjects as port conflicts or logging your network onto your ISP's provider network. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Router config snapshot1.png|thumb|250px|1.Status]] &lt;br /&gt;
| [[Image:Router config snapshot2.png|thumb|250px|2.Advanced &amp;gt; Gaming]] &lt;br /&gt;
| [[Image:Router config snapshot3.png|thumb|250px|3.Routing]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Router config snapshot4.png|thumb|250px|4.firewall]] &lt;br /&gt;
| [[Image:Router config snapshot5.png|thumb|250px|5.Advanced network settings]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*provided that all information supplied in ~opensim/bin/OpenSim.ini and in your ~opensim/Regions/*.xml are properly configured, this should have you up and running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Local and Internet connections with Linux iptables and NAT/Port Forwarding=== &amp;lt;!-- Contributed by Tony Maro tony@maro.net http://www.ossramblings.com - this is a subset example based on a much larger script I use and I haven't tested this code specifically, but it _should_ work right ;-) --&amp;gt;Please don't copy this verbatim - much more should go into a firewall setup, but this will at a bare minimum get NAT working with forwarding to your OpenSim server from both inside and outside your LAN. &lt;br /&gt;
&lt;br /&gt;
Example firewall.sh script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_source_route&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/send_redirects&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/conf/all/log_martians&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/conf/all/rp_filter&lt;br /&gt;
modprobe nf_conntrack_ftp&lt;br /&gt;
modprobe nf_nat_ftp&lt;br /&gt;
&lt;br /&gt;
INT = &amp;quot;eth0&amp;quot; # your internal network card on the firewall&lt;br /&gt;
EXT = &amp;quot;eth1&amp;quot; # Your external network card on the firewall&lt;br /&gt;
IPTABLES = &amp;quot;/sbin/iptables&amp;quot; # Path to your iptables executable&lt;br /&gt;
&lt;br /&gt;
OPENSIMEXT = &amp;quot;66.102.1.103/32&amp;quot; # Example external IP - replace with yours&lt;br /&gt;
OPENSIMINT = &amp;quot;192.168.1.240/32&amp;quot; # Internal IP of your OpenSim server&lt;br /&gt;
INTSUBNET = &amp;quot;192.168.1.0/24&amp;quot; # Your internal subnet range&lt;br /&gt;
&lt;br /&gt;
# Flush rules when we are restarting the script&lt;br /&gt;
$IPTABLES -F&lt;br /&gt;
$IPTABLES -F -t nat&lt;br /&gt;
$IPTABLES -F -t mangle&lt;br /&gt;
&lt;br /&gt;
# Set up sane defaults&lt;br /&gt;
$IPTABLES -P INPUT DROP&lt;br /&gt;
$IPTABLES -P OUTPUT ACCEPT&lt;br /&gt;
$IPTABLES -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
# Allow all connections from inside the network to the firewall on all ports&lt;br /&gt;
$IPTABLES -A INPUT -i $INT -j ACCEPT&lt;br /&gt;
# Allow all outbound connections from the inside. Much better to limit this...&lt;br /&gt;
$IPTABLES -A FORWARD -o $EXT -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Configure basic NAT&lt;br /&gt;
$IPTABLES -A FORWARD -i $EXT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
$IPTABLES -t nat -A POSTROUTING -o $EXT -j SNAT --to-source $OUTNAT&lt;br /&gt;
&lt;br /&gt;
# Configure forwarding for OpenSim (you need to add ports if you are not running in standalone&lt;br /&gt;
# or if you are running more than one region)&lt;br /&gt;
$IPTABLES -A PREROUTING -p tcp -d $OPENSIMEXT --dport 9000 -j DNAT --to-destination $OPENSIMINT&lt;br /&gt;
$IPTABLES -A PREROUTING -p udp -d $OPENSIMEXT --dport 9000 -j DNAT --to-destination $OPENSIMINT&lt;br /&gt;
&lt;br /&gt;
# Now for the magical juice that lets inside users and outside users both access your server&lt;br /&gt;
# Configure to allow internal network users to access the OpenSim server using the &lt;br /&gt;
# external IP address. This fixes failing to connect to regions over UDP due to NAT config&lt;br /&gt;
# Make sure you configure the proper external IP for each of your regions&lt;br /&gt;
$IPTABLES -t nat -A PREROUTING -i $INT -s $INTSUBNET -d $OPENSIMEXT -j DNAT --to-destination $OPENSIMINT&lt;br /&gt;
$IPTABLES -t nat -A POSTROUTING -o $INT -s $INTSUBNET -d $OPENSIMINT -j DNAT --to-source $OPENSIMEXT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Contrary to what is displayed above, DHCP services are not required to operate OpenSimulator server software. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NAT LoopBack Routers Listings  ==&lt;br /&gt;
&lt;br /&gt;
[[NAT_Loopback_Routers|opensimulator.org/wiki/NAT_Loopback_Routers]] &lt;br /&gt;
&lt;br /&gt;
==Historical - OpenSim Grid - Ports for Grid Services - up to version 0.6.9 ==&lt;br /&gt;
&lt;br /&gt;
Note this is no longer the current version...&lt;br /&gt;
&lt;br /&gt;
* TCP/8000 - Reserved &lt;br /&gt;
* TCP/8001 - Grid Server - Regions and other grid services talk to this&lt;br /&gt;
* TCP/8002 - User Server and Login Services - Clients, Regions, and other grid services talk to this&lt;br /&gt;
* TCP/8003 - Asset Services - Regions and other grid services talk to this&lt;br /&gt;
* TCP/8004 - Inventory Services - Regions and other grid services talk to this&lt;br /&gt;
* TCP/8005 - Reserved (Dispatch Services)&lt;br /&gt;
* TCP/8006 - Messaging Server&lt;br /&gt;
* TCP/8895 - Used in early releases for region-to-region communications&lt;br /&gt;
&lt;br /&gt;
== VMware VMXNET3 NIC Issue ==&lt;br /&gt;
&lt;br /&gt;
When running OpenSim in a 64-bit CentOS 6 VM under VMware ESXi 5, with the latest VMware Tools installed, and using the VMXNET3 vNIC, I (smxy) found that my viewer would consistently be disconnected from my grid at approximately 12 minutes after connecting (with the child agents dying sooner, as evidenced by regions turning red in the mini-map), with ACK timeouts reported at the region consoles. This behavior was 100% repeatable. I discovered that deleting the VMXNET3 vNIC and replacing it with the E1000 vNIC (and maintaining the same MAC address) eliminated the problem completely.&lt;br /&gt;
&lt;br /&gt;
A few weeks later, I noticed someone (LilinEnyo) reporting ACK timeouts, in IRC. It turns out she was running &amp;quot;ubuntu 64bit&amp;quot; under ESXi 5, with VMware tools installed and using the VMXNET3 vNIC. In her case, the ACK timeouts were disconnecting her viewer at approximately 5 minutes after connecting. I had her switch to the E1000 vNIC and it eliminated the issue for her, too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Users]]&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OpenSim.exe_Command_Line_Options</id>
		<title>OpenSim.exe Command Line Options</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OpenSim.exe_Command_Line_Options"/>
				<updated>2010-09-25T13:03:08Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete}}&lt;br /&gt;
{{content}}&lt;br /&gt;
&lt;br /&gt;
To run OpenSim in somewhat customized environments it's often helpful to modify the programs behaviour via command line arguments.&lt;br /&gt;
OpenSim knows a just a few of these as most parts of the behaviour are controlled via an .INI-File.&lt;br /&gt;
&lt;br /&gt;
The following command line switches are known:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Switch !! Meaning/Behaviour&lt;br /&gt;
|-&lt;br /&gt;
| background ||&lt;br /&gt;
|-&lt;br /&gt;
| gridmode || If =true forces OpenSim.exe to operate in grid mode. If =false forces OpenSim.exe to operate in standalone mode. If omitted defaults to OpenSim.ini setting.&lt;br /&gt;
|-&lt;br /&gt;
| gui || &amp;quot;old-style&amp;quot; console (deprecated from Opensim 0.7, use console instead)&lt;br /&gt;
|-&lt;br /&gt;
| console || If =basic declares interface as a simple command console (it has been noted that use of this can also avoid some terminal crashes when logging errors occur).&lt;br /&gt;
|-&lt;br /&gt;
| inidirectory || &lt;br /&gt;
|-&lt;br /&gt;
| inifile || changes the name (Path) of the inifile.&lt;br /&gt;
|-&lt;br /&gt;
| inimaster || allows to read in a master config file.&lt;br /&gt;
|-&lt;br /&gt;
| logconfig || changes the name (Path) of the logfile.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-10-10T12:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (ROBUST)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
ROBUST leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
ROBUST is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The ROBUST server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each ROBUST server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the ROBUST server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.  The default port for all services running in ROBUST is 8003 as you can see below.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the ROBUST server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 OpenSim.ini:           &amp;quot;inventory_server_url&amp;quot;          - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 GridCommon.ini:        &amp;quot;InventoryServerURI&amp;quot;            - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 UserServer_Config.xml: &amp;quot;default_inventory_server&amp;quot;      - For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. I may merge the two examples, eventually.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM. &lt;br /&gt;
&lt;br /&gt;
'''Make sure that you don't override any of these files - they should be used as they come out of the repository:'''&lt;br /&gt;
  config-include/Grid.ini&lt;br /&gt;
  config-include/GridHypergrid.ini&lt;br /&gt;
  config-include/Standalone.ini&lt;br /&gt;
  config-include/StandalioneHypergrid.ini&lt;br /&gt;
&lt;br /&gt;
'''Also make sure that you include new additions in config-include/*Common.ini.example into your config-include/*Common.ini'''&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files except to update the GridCommon.ini in the config-include folder as listed in the new GridCommon.ini.example.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-10-10T12:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (ROBUST)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
ROBUST leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
ROBUST is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The ROBUST server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each ROBUST server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the ROBUST server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.  The default port for all services running in ROBUST is 8003 as you can see below.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the ROBUST server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 OpenSim.ini:           &amp;quot;inventory_server_url&amp;quot;          - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 GridCommon.ini:        &amp;quot;InventoryServerURI&amp;quot;            - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 UserServer_Config.xml: &amp;quot;default_inventory_server&amp;quot;      - For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. I may merge the two examples, eventually.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM. &lt;br /&gt;
&lt;br /&gt;
'''Make sure that you don't override any of these files, they should be used as they come out of the repository:'''&lt;br /&gt;
  config-include/Grid.ini&lt;br /&gt;
  config-include/GridHypergrid.ini&lt;br /&gt;
  config-include/Standalone.ini&lt;br /&gt;
  config-include/StandalioneHypergrid.ini&lt;br /&gt;
&lt;br /&gt;
'''Also make sure that you include new additions in config-include/*Common.ini.example into your config-include/*Common.ini'''&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files except to update the GridCommon.ini in the config-include folder as listed in the new GridCommon.ini.example.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-10-10T12:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (ROBUST)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
ROBUST leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
ROBUST is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The ROBUST server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each ROBUST server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the ROBUST server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.  The default port for all services running in ROBUST is 8003 as you can see below.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the ROBUST server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 OpenSim.ini:           &amp;quot;inventory_server_url&amp;quot;          - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 GridCommon.ini:        &amp;quot;InventoryServerURI&amp;quot;            - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 UserServer_Config.xml: &amp;quot;default_inventory_server&amp;quot;      - For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM. &lt;br /&gt;
&lt;br /&gt;
'''Make sure that you don't override any of these files, they should be used as they come out of the repository:'''&lt;br /&gt;
  config-include/Grid.ini&lt;br /&gt;
  config-include/GridHypergrid.ini&lt;br /&gt;
  config-include/Standalone.ini&lt;br /&gt;
  config-include/StandalioneHypergrid.ini&lt;br /&gt;
&lt;br /&gt;
'''Also make sure that you include new additions in config-include/*Common.ini.example into your config-include/*Common.ini'''&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files except to update the GridCommon.ini in the config-include folder as listed in the new GridCommon.ini.example.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-10-10T12:42:14Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGAIM To UGRM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (ROBUST)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
ROBUST leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
ROBUST is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The ROBUST server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each ROBUST server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the ROBUST server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.  The default port for all services running in ROBUST is 8003 as you can see below.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the ROBUST server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 OpenSim.ini:           &amp;quot;inventory_server_url&amp;quot;          - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 GridCommon.ini:        &amp;quot;InventoryServerURI&amp;quot;            - For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 UserServer_Config.xml: &amp;quot;default_inventory_server&amp;quot;      - For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM. &lt;br /&gt;
&lt;br /&gt;
'''Make sure that you don't override any of these files, they should be used as they come out of the repository:'''&lt;br /&gt;
  config-include/Grid.ini&lt;br /&gt;
  config-include/GridHypergrid.ini&lt;br /&gt;
  config-include/Standalone.ini&lt;br /&gt;
  config-include/StandalioneHypergrid.ini&lt;br /&gt;
&lt;br /&gt;
'''Also make sure that you include new additions in config-include/*Common.ini.example into your config-include/*Common.ini'''&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
 UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files except to update the GridCommon.ini in the config-include folder as listed in the new GridCommon.ini.example.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-10-10T12:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (ROBUST)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
ROBUST leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
ROBUST is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The ROBUST server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each ROBUST server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the ROBUST server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.  The default port for all services running in ROBUST is 8003 as you can see below.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the ROBUST server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in&lt;br /&gt;
&lt;br /&gt;
 OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 GridCommon.ini:	&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM. &lt;br /&gt;
&lt;br /&gt;
'''Make sure that you don't override any of these files, they should be used as they come out of the repository:'''&lt;br /&gt;
  config-include/Grid.ini&lt;br /&gt;
  config-include/GridHypergrid.ini&lt;br /&gt;
  config-include/Standalone.ini&lt;br /&gt;
  config-include/StandalioneHypergrid.ini&lt;br /&gt;
&lt;br /&gt;
'''Also make sure that you include new additions in config-include/*Common.ini.example into your config-include/*Common.ini'''&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
 UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
 MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files except to update the GridCommon.ini in the config-include folder as listed in the new GridCommon.ini.example.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Serverless_Grids</id>
		<title>Serverless Grids</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Serverless_Grids"/>
				<updated>2009-09-30T16:12:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* Step One: Install a DB server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to set up a grid composed of several simulators, possibly running on different machines, by stitching standalones together, and without running extra servers (URM or others). The only other server you need besides OpenSim.exe (the simulator) is either a MySQL or MSSQL server -- the DB. &lt;br /&gt;
&lt;br /&gt;
This hybrid architecture can be setup independent of whether you have Hypergrid enabled or not; however, for simplicity sake, the explanation here uses the pre-packaged configuration StandaloneHypergrid, because it already has all the right connectors enabled. For configurations of non-HG standalones, please ask on the IRC. &lt;br /&gt;
&lt;br /&gt;
NOTE:&amp;amp;nbsp;this works with releases r10869 and above (as of Sep.28) &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Step One: Install a DB server  ==&lt;br /&gt;
&lt;br /&gt;
This tutorial does not explain how to do this, but you need a database server running in one of your machines. Please see elsewhere on this wiki, or search on the Web how to do that. You can either use MySQL or MSSQL; this tutorial assumes MySQL, but for MSSQL it's in all identical. &lt;br /&gt;
&lt;br /&gt;
After installing a MySQL server, create an account called &amp;quot;opensim&amp;quot;, and give all permissions to that account. For a grid spawning multiple machines, you need to set up this account so that it can access the DB server from other machines. Again, search elsewhere for how to do this, if you don't know. &lt;br /&gt;
&lt;br /&gt;
Before you go any further, make sure this account is properly setup by logging to the DB server from all the machines where you plan to run simulators. If you can't login with the mysql client from those machines, using the opensim account you just created, OpenSim also won't be able to. So don't even attempt at proceeding to step two if this doesn't work.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Step Two: OpenSim Configuration  ==&lt;br /&gt;
&lt;br /&gt;
For each OpenSim simulator instance do this. &lt;br /&gt;
&lt;br /&gt;
As usual, copy OpenSim.ini.example to your own copy of OpenSim.ini. Make whatever changes you usually make to work in HG standalone. You can use your prior copy of OpenSim.ini. Then make the following changes: &lt;br /&gt;
&lt;br /&gt;
#Search for &amp;quot;userDatabase_plugin&amp;quot;. Set it to&amp;lt;br&amp;gt;userDatabase_plugin = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot; &lt;br /&gt;
#Search for &amp;quot;user_source&amp;quot;. Set it to&amp;lt;br&amp;gt;user_source = &amp;quot;Data Source=XXX;Database=opensim;User ID=opensim;Password=YYY;&amp;quot;&amp;lt;br&amp;gt; where&amp;lt;br&amp;gt; XXX = localhost or the name of the machine where you have your MySQL server, if different from the local machine&amp;lt;br&amp;gt; YYY = the password of the opensim account you have created &lt;br /&gt;
#In the [Architecture] section, make sure this one is choosen:&amp;lt;br&amp;gt;Include-HGStandalone = &amp;quot;config-include/StandaloneHypergrid.ini&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy config-include/StandaloneCommon.ini.example to config-include/StandaloneCommon.ini, and make the following changes/settings:&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#In the [DatabaseService] section, choose MySql instead of the default SQLite:&amp;lt;br&amp;gt; StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&amp;lt;br&amp;gt; ConnectionString = &amp;quot;Data Source=XXX;Database=opensim;User ID=opensim;Password=YYY;&amp;quot;&amp;lt;br&amp;gt;(see XXX and YYY above)&amp;lt;br&amp;gt; &lt;br /&gt;
#In the [GridService] section, choose the MySql option instead of the default one:&amp;lt;br&amp;gt; StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll:MySqlRegionData&amp;quot;&amp;lt;br&amp;gt; ConnectionString = &amp;quot;Data Source=XXX;Database=opensim;User ID=opensim;Password=YYY;&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step Three:&amp;amp;nbsp;Region Configuration&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
For each OpenSim simulator instance, set up region files as you usually do. Make sure that no two regions are on the same coordinates. If you want the differerent simulators to form a larger contiguous space, place the regions in such a way that they are neighbours. &lt;br /&gt;
&lt;br /&gt;
== Step Four:&amp;amp;nbsp;Start Up the Simulators  ==&lt;br /&gt;
&lt;br /&gt;
As the title says, start the simulators. You may want to let each one finish starting up before starting the next one. For different simulators with neighbouring regions, you should see console messages pertaining to &amp;quot;HelloNeighbour&amp;quot;, which is an indication that the simulators are finding each other. &lt;br /&gt;
&lt;br /&gt;
== Step Five:&amp;amp;nbsp;Login  ==&lt;br /&gt;
&lt;br /&gt;
Your login uri is the normal uri for standalones. That is, http://&amp;amp;lt;one of your simulators&amp;amp;gt;:&amp;amp;lt;http port&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
And voila!&amp;amp;nbsp;Insta-scalability without servers. &lt;br /&gt;
&lt;br /&gt;
== Notes: ==&lt;br /&gt;
&lt;br /&gt;
*Instant messaging does not yet work on these grids. It will soon.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-30T04:57:04Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:                &amp;quot;grid_server_url&amp;quot;         - For all regions and the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of your existing OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-30T03:55:05Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGAIM To UGRM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in two separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:                &amp;quot;grid_server_url&amp;quot;         - For all regions and the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-30T03:45:13Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:                &amp;quot;grid_server_url&amp;quot;         - For all regions and the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to its own ROBUST shell ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a large grid, you may want to run the grid service in its own ROBUST shell. If so, do this:&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;br /&gt;
&lt;br /&gt;
If you keep the grid server listening to the port you had before you don't need to change any other configuration files.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-28T15:19:02Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGRM To URM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==Alternate Configuration Files==&lt;br /&gt;
To run R.O.B.U.S.T. as separate processes, emulatig the legacy servers, you can copy the server executables to the names of the legacy servers:&lt;br /&gt;
 cp OpenSim.Server.exe OpenSim.Grid.AssetServer.exe&lt;br /&gt;
 cp OpenSim.Server.exe.config OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 cp OpenSim.Server.ini OpenSim.Grid.AssetServer.ini&lt;br /&gt;
&lt;br /&gt;
Then, modify OpenSim.Grid.AssetServer.ini to read:&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, when you run OpenSim.Grid.AssetServer.exe, it will act like the legacy asset server it replaces.&lt;br /&gt;
&lt;br /&gt;
You can do the same for all other supported services.&lt;br /&gt;
&lt;br /&gt;
This method is working fine as a replacement of the old Asset &amp;amp; Inventory servers, BUT : In the 2 following files :&lt;br /&gt;
 OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 OpenSim.Grid.InventoryServer.exe.config&lt;br /&gt;
&lt;br /&gt;
You have to update the log filename : from &amp;quot;OpenSim.log&amp;quot; to &amp;quot;OpenSim.Grid.AssetServer.log&amp;quot; &amp;amp; &amp;quot;'OpenSim.Grid.InventoryServer.log&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Just because there is a conflict accessing the logfile ( write ) ... So, if you don't do that modification, your OpenSim.exe won't start. ( Linux / Mono 2.4.2 )&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
'''Note: The code to do this is not in trunk yet, but is expected to be there very soon. I'll remove this note as soon as it hits trunk.'''&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my &amp;quot;UGAIM to UGRM&amp;quot; example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:                &amp;quot;grid_server_url&amp;quot;         - For all regions and the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to ROBUST==&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-28T15:13:09Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: /* An Example Conversion From UGAIM To UGRM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==Alternate Configuration Files==&lt;br /&gt;
To run R.O.B.U.S.T. as separate processes, emulatig the legacy servers, you can copy the server executables to the names of the legacy servers:&lt;br /&gt;
 cp OpenSim.Server.exe OpenSim.Grid.AssetServer.exe&lt;br /&gt;
 cp OpenSim.Server.exe.config OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 cp OpenSim.Server.ini OpenSim.Grid.AssetServer.ini&lt;br /&gt;
&lt;br /&gt;
Then, modify OpenSim.Grid.AssetServer.ini to read:&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, when you run OpenSim.Grid.AssetServer.exe, it will act like the legacy asset server it replaces.&lt;br /&gt;
&lt;br /&gt;
You can do the same for all other supported services.&lt;br /&gt;
&lt;br /&gt;
This method is working fine as a replacement of the old Asset &amp;amp; Inventory servers, BUT : In the 2 following files :&lt;br /&gt;
 OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 OpenSim.Grid.InventoryServer.exe.config&lt;br /&gt;
&lt;br /&gt;
You have to update the log filename : from &amp;quot;OpenSim.log&amp;quot; to &amp;quot;OpenSim.Grid.AssetServer.log&amp;quot; &amp;amp; &amp;quot;'OpenSim.Grid.InventoryServer.log&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Just because there is a conflict accessing the logfile ( write ) ... So, if you don't do that modification, your OpenSim.exe won't start. ( Linux / Mono 2.4.2 )&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGRM To URM==&lt;br /&gt;
&lt;br /&gt;
'''Note: The code to do this is not in trunk yet, but is expected to be there very soon. I'll remove this note as soon as it hits trunk.'''&lt;br /&gt;
&lt;br /&gt;
Converting from UGRM to URM:&lt;br /&gt;
&lt;br /&gt;
This is a continuation of my example above. Eventually, I will merge the two examples.&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGRM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the grid server needs to be changed from 8001 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:                &amp;quot;grid_server_url&amp;quot;         - For all regions and the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:      &amp;quot;default_grid_server&amp;quot;     - For the URM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
MessagingServer_Config.xml: &amp;quot;default_grid_server&amp;quot;     - For the URM server.&lt;br /&gt;
&lt;br /&gt;
On the URM server, save a copy of OpenSim.Server.ini. Copy OpenSim.Server.ini.example to OpenSim.Server.ini. Edit it to reflect any changes you made in the previous version. Then edit the &amp;quot;ConnectionString&amp;quot; entry, appropriately, in the [GridService] section.&lt;br /&gt;
&lt;br /&gt;
GridServer_Config.xml can be deleted from the URM server.&lt;br /&gt;
&lt;br /&gt;
Bring up URM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to ROBUST==&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-09-28T14:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==Alternate Configuration Files==&lt;br /&gt;
To run R.O.B.U.S.T. as separate processes, emulatig the legacy servers, you can copy the server executables to the names of the legacy servers:&lt;br /&gt;
 cp OpenSim.Server.exe OpenSim.Grid.AssetServer.exe&lt;br /&gt;
 cp OpenSim.Server.exe.config OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 cp OpenSim.Server.ini OpenSim.Grid.AssetServer.ini&lt;br /&gt;
&lt;br /&gt;
Then, modify OpenSim.Grid.AssetServer.ini to read:&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, when you run OpenSim.Grid.AssetServer.exe, it will act like the legacy asset server it replaces.&lt;br /&gt;
&lt;br /&gt;
You can do the same for all other supported services.&lt;br /&gt;
&lt;br /&gt;
This method is working fine as a replacement of the old Asset &amp;amp; Inventory servers, BUT : In the 2 following files :&lt;br /&gt;
 OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 OpenSim.Grid.InventoryServer.exe.config&lt;br /&gt;
&lt;br /&gt;
You have to update the log filename : from &amp;quot;OpenSim.log&amp;quot; to &amp;quot;OpenSim.Grid.AssetServer.log&amp;quot; &amp;amp; &amp;quot;'OpenSim.Grid.InventoryServer.log&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Just because there is a conflict accessing the logfile ( write ) ... So, if you don't do that modification, your OpenSim.exe won't start. ( Linux / Mono 2.4.2 )&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My initial setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over two servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM and MySQL 5.0 run in separate 32-bit CentOS 5.3 Xen VMs on a 64-bit CentOS 5.3 system.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the &amp;quot;ConnectionString&amp;quot; entries appropriately, in the [AssetService] and [InventoryService] sections.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;br /&gt;
&lt;br /&gt;
==Moving the Grid Server to ROBUST==&lt;br /&gt;
&lt;br /&gt;
* Copy OpenSim.GridServer.ini.example to your own copy&lt;br /&gt;
* Edit it and change it so that it uses your regular Database and the usual Grid Server port&lt;br /&gt;
* Start U, then start the grid server like this:&lt;br /&gt;
 $ OpenSim.Server.exe -inifile=OpenSim.GridServer.ini -logfile=/some/path/to/some/file&lt;br /&gt;
* Start AI and M as usual&lt;br /&gt;
* Start your sims&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-08-19T20:07:24Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==Alternate Configuration Files==&lt;br /&gt;
To run R.O.B.U.S.T. as separate processes, emulatig the legacy servers, you can copy the server executables to the names of the legacy servers:&lt;br /&gt;
 cp OpenSim.Server.exe OpenSim.Grid.AssetServer.exe&lt;br /&gt;
 cp OpenSim.Server.exe.config OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 cp OpenSim.Server.ini OpenSim.Grid.AssetServer.ini&lt;br /&gt;
&lt;br /&gt;
Then, modify OpenSim.Grid.AssetServer.ini to read:&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, when you run OpenSim.Grid.AssetServer.exe, it will act like the legacy asset server it replaces.&lt;br /&gt;
&lt;br /&gt;
You can do the same for all other supported services.&lt;br /&gt;
&lt;br /&gt;
This method is working fine as a replacement of the old Asset &amp;amp; Inventory servers, BUT : In the 2 following files :&lt;br /&gt;
 OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 OpenSim.Grid.InventoryServer.exe.config&lt;br /&gt;
&lt;br /&gt;
You have to update the log filename : from &amp;quot;OpenSim.log&amp;quot; to &amp;quot;OpenSim.Grid.AssetServer.log&amp;quot; &amp;amp; &amp;quot;'OpenSim.Grid.InventoryServer.log&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Just because there is a conflict accessing the logfile ( write ) ... So, if you don't do that modification, your OpenSim.exe won't start. ( Linux / Mono 2.4.2 )&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me (smxy).&lt;br /&gt;
&lt;br /&gt;
My setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over three servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM runs on a 32-bit CentOS 5.3 Xen VM on 64-bit CentOS 5.3.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
MySQL 5.0 runs on a 32-bit Debian 4.0 (etch) system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the two &amp;quot;ConnectionString&amp;quot; entries appropriately.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/ROBUST</id>
		<title>ROBUST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/ROBUST"/>
				<updated>2009-08-19T20:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;Smxy: Added section on converting from UGAIM to UGRM.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Redesigned OpenSim Basic Universal Server Technology (R.O.B.U.S.T.)==&lt;br /&gt;
===Concepts===&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) leverages the system of in and out connectors and services that was developed for the Hypergrid and OpenSim. It replaces OGS1 with a modular architecture that can be easily extended using core and 3rd party modules.&lt;br /&gt;
&lt;br /&gt;
R.O.B.U.S.T. (ROBUST) is a flexible server shell that can load the same modules already used by regions. This allows for nearly 100% code reusability and great flexibility.&lt;br /&gt;
&lt;br /&gt;
The R.O.B.U.S.T. (ROBUST) server loads &amp;quot;in&amp;quot; connectors as specified in the configuration file. These connectors then load the required processing and storage modules and/or &amp;quot;out&amp;quot; connectors. Through this architecture, each R.O.B.U.S.T. server can run any or all grid services, and/or act as a proxy for grid services.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The server reads a configuration file at startup, which defaults to the name of the assembly with .ini appended. The default name for the R.O.B.U.S.T. (ROBUST) server is OpenSim.Server.exe, therefore the default configuration file is OpenSim.Server.ini. An OpenSim.Server.ini.example file is provided with the OpenSim kit.&lt;br /&gt;
&lt;br /&gt;
 ; * The startup section lists all the connectors to start up in this server&lt;br /&gt;
 ; * instance. This may be only one, or it may be the entire server suite.&lt;br /&gt;
 ; * Multiple connectors should be seaprated by commas.&lt;br /&gt;
 ; *&lt;br /&gt;
 ; * These are the IN connectors the server uses, the in connectors&lt;br /&gt;
 ; * read this config file and load the needed OUT and database connectors&lt;br /&gt;
 ; *&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector,OpenSim.Server.Handlers.dll:InventoryServiceInConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 ; * This is common for all services, it's the network setup for the entire&lt;br /&gt;
 ; * server instance&lt;br /&gt;
 ; *&lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 ; * As an example, the below configuration precisely mimicks the legacy&lt;br /&gt;
 ; * asset server. It is read by the asset IN connector (defined above)&lt;br /&gt;
 ; * and it then loads the OUT connector (a local database module). That,&lt;br /&gt;
 ; * in turn, reads the asset loader and database connection information&lt;br /&gt;
 ; *&lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; * This configuration loads the inventory server modules. It duplicates&lt;br /&gt;
 ; * the function of the legacy inventory server&lt;br /&gt;
 ; *&lt;br /&gt;
 [InventoryService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.InventoryService.dll:InventoryService&amp;quot;&lt;br /&gt;
 UserServerURI = &amp;quot;http://127.0.0.1:8002&amp;quot;&lt;br /&gt;
 SessionAuthentication = &amp;quot;false&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Command Line Arguments===&lt;br /&gt;
*-inifile&lt;br /&gt;
:Specify the location of the .ini file to read instead of the default&lt;br /&gt;
*-console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*-logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
*-prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
&lt;br /&gt;
==Configuration File==&lt;br /&gt;
===Section [Startup]===&lt;br /&gt;
*ServiceConnectors&lt;br /&gt;
:Comma separated list of service IN connectors. The format of each entry is &amp;lt;dllname&amp;gt;:&amp;lt;classname&amp;gt;. If a dll contains only one suitable class, the class name can be omitted.&lt;br /&gt;
*Prompt&lt;br /&gt;
:Override the server prompt&lt;br /&gt;
*Console&lt;br /&gt;
:Specify console type, one of basic, local or rest&lt;br /&gt;
*Logfile&lt;br /&gt;
:Specify the logfile this server will log to&lt;br /&gt;
&lt;br /&gt;
===Section [Network]===&lt;br /&gt;
*Port&lt;br /&gt;
:Set the network port to listen on. All services will run on this port.&lt;br /&gt;
&lt;br /&gt;
==Connector Configurations==&lt;br /&gt;
These configurations are provided by the connector modules and are not an integral part of the R.O.B.U.S.T. server. Documentation to all possible options can be found in the documentation of the connector. This manual only lists the options present in the sample configuration file.&lt;br /&gt;
&lt;br /&gt;
===Section [AssetService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* DefaultAssetLoader [Service option]&lt;br /&gt;
:A dll containing the asset loader to use for loading the default asset set&lt;br /&gt;
* AssetLoaderArgs [Service option]&lt;br /&gt;
:Path to load assets from (for the file system asset loader)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
===Section [InventoryService]===&lt;br /&gt;
* LocalServiceModule [Connector option]&lt;br /&gt;
:A module specification (&amp;lt;dll&amp;gt;:&amp;lt;class&amp;gt;) that provides the services for this connector&lt;br /&gt;
* UserServerURI [Connector option]&lt;br /&gt;
:URI to reach the user server at&lt;br /&gt;
* SessionAuthentication [Connector option]&lt;br /&gt;
:Authenticate inventory sessions (default false!)&lt;br /&gt;
* StorageProvider [Service option]&lt;br /&gt;
:Dll containing the database provider code&lt;br /&gt;
* ConnectionString [Service option]&lt;br /&gt;
:Connection string to be passed to the database provider&lt;br /&gt;
&lt;br /&gt;
Additional connectors may need additional sections to be added.&lt;br /&gt;
&lt;br /&gt;
==Alternate Configuration Files==&lt;br /&gt;
To run R.O.B.U.S.T. as separate processes, emulatig the legacy servers, you can copy the server executables to the names of the legacy servers:&lt;br /&gt;
 cp OpenSim.Server.exe OpenSim.Grid.AssetServer.exe&lt;br /&gt;
 cp OpenSim.Server.exe.config OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 cp OpenSim.Server.ini OpenSim.Grid.AssetServer.ini&lt;br /&gt;
&lt;br /&gt;
Then, modify OpenSim.Grid.AssetServer.ini to read:&lt;br /&gt;
 [Startup]&lt;br /&gt;
 ServiceConnectors = &amp;quot;OpenSim.Server.Handlers.dll:AssetServiceConnector&amp;quot;   &lt;br /&gt;
 &lt;br /&gt;
 [Network]&lt;br /&gt;
 port = 8003&lt;br /&gt;
 &lt;br /&gt;
 [AssetService]&lt;br /&gt;
 LocalServiceModule = &amp;quot;OpenSim.Services.AssetService.dll:AssetService&amp;quot;&lt;br /&gt;
 DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
 AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
 StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
 ConnectionString = &amp;quot;Data Source=localhost;Database=grid;User ID=grid;Password=grid;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, when you run OpenSim.Grid.AssetServer.exe, it will act like the legacy asset server it replaces.&lt;br /&gt;
&lt;br /&gt;
You can do the same for all other supported services.&lt;br /&gt;
&lt;br /&gt;
This method is working fine as a replacement of the old Asset &amp;amp; Inventory servers, BUT : In the 2 following files :&lt;br /&gt;
 OpenSim.Grid.AssetServer.exe.config&lt;br /&gt;
 OpenSim.Grid.InventoryServer.exe.config&lt;br /&gt;
&lt;br /&gt;
You have to update the log filename : from &amp;quot;OpenSim.log&amp;quot; to &amp;quot;OpenSim.Grid.AssetServer.log&amp;quot; &amp;amp; &amp;quot;'OpenSim.Grid.InventoryServer.log&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Just because there is a conflict accessing the logfile ( write ) ... So, if you don't do that modification, your OpenSim.exe won't start. ( Linux / Mono 2.4.2 )&lt;br /&gt;
&lt;br /&gt;
==An Example Conversion From UGAIM To UGRM==&lt;br /&gt;
&lt;br /&gt;
Converting from UGAIM to UGRM:&lt;br /&gt;
&lt;br /&gt;
Kudos to diva and Melanie_t for helping and tolerating me.&lt;br /&gt;
&lt;br /&gt;
My setup:&lt;br /&gt;
&lt;br /&gt;
Full HG-enabled, Internet-accessible, Grid Mode system, using MySQL and split over three servers.&lt;br /&gt;
&lt;br /&gt;
UGAIM runs on a 32-bit CentOS 5.3 Xen VM on 64-bit CentOS 5.3.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each region runs in its own instance of OpenSim.exe on a 32-bit Windows XP SP3 Home system.&amp;lt;br /&amp;gt;&lt;br /&gt;
MySQL 5.0 runs on a 32-bit Debian 4.0 (etch) system.&amp;lt;br /&amp;gt;&lt;br /&gt;
OSWI runs on the Windows system too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bring down the regions. Bring down UGAIM.&lt;br /&gt;
&lt;br /&gt;
Then, the port for the inventory server needs to be changed from 8004 to 8003 in a number of places:&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini:		&amp;quot;inventory_server_url&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
GridCommon.ini:		&amp;quot;InventoryServerURI&amp;quot;		- For all regions and the UGRM server.&amp;lt;br /&amp;gt;&lt;br /&gt;
UserServer_Config.xml:	&amp;quot;default_inventory_server&amp;quot;	- For the UGRM server.&lt;br /&gt;
&lt;br /&gt;
In the MySQL database, in the &amp;quot;users&amp;quot; table, the userInventoryURI field needs to be updated for all users.&lt;br /&gt;
&lt;br /&gt;
In OSWI's config file, update &amp;quot;$userInventoryURI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
AssetServer_Config.xml and InventoryServer_Config.xml can be deleted from the UGRM server.&lt;br /&gt;
&lt;br /&gt;
On the UGRM server, copy OpenSim.Server.ini.example to OpenSim.Server.ini and edit it, changing the two &amp;quot;ConnectionString&amp;quot; entries appropriately.&lt;br /&gt;
&lt;br /&gt;
Bring up UGRM. Bring up regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-unrelated Note: According to Melanie_t, any of the UGRM servers can be restarted independently,&lt;br /&gt;
without needing to restart the other three. However, if you restart the UserServer, you must issue&lt;br /&gt;
the command &amp;quot;register&amp;quot; (without the quotes) at the MessagingServer console, afterwards.&lt;/div&gt;</summary>
		<author><name>Smxy</name></author>	</entry>

	</feed>