From e9e078a8b58be7bc7f04799f17d3858e7470ac67 Mon Sep 17 00:00:00 2001 From: onefang Date: Tue, 8 Sep 2020 21:23:58 +1000 Subject: Major clean up of config and ini files. --- bin/OpenSim.exe.config | 13 +- bin/OpenSimDefaults.ini | 318 ++++++----- bin/Robust.exe.config | 10 +- bin/config-include/GridCommon.ini.example | 28 +- bin/config-include/SimBalanced.ini | 889 ++++++++++++++++++++++++++++++ bin/config-include/SimDefault.ini | 884 +++++++++++++++++++++++++++++ bin/config-include/SimFast.ini | 884 +++++++++++++++++++++++++++++ bin/config-include/SimLean.ini | 884 +++++++++++++++++++++++++++++ bin/config-include/config_localhost.ini | 49 ++ 9 files changed, 3785 insertions(+), 174 deletions(-) create mode 100644 bin/config-include/SimBalanced.ini create mode 100644 bin/config-include/SimDefault.ini create mode 100644 bin/config-include/SimFast.ini create mode 100644 bin/config-include/SimLean.ini create mode 100644 bin/config-include/config_localhost.ini (limited to 'bin') diff --git a/bin/OpenSim.exe.config b/bin/OpenSim.exe.config index 690f808..ed250b3 100755 --- a/bin/OpenSim.exe.config +++ b/bin/OpenSim.exe.config @@ -11,36 +11,28 @@ + - - - - - - - - + @@ -53,7 +45,6 @@ - diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 2e680df..1852438 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -116,14 +116,14 @@ allow_regionless = false ;; Allow child agents to see into the region even if their root counterpart isn't allowed in here - see_into_region = true + see_into_region = false - ;; use legacy math for sittarget offset "correction" - ;; set this option to false to use improved math more compatibility with SL. - ;; keep it true if you have many old objects with sits set by scripts. - ;; the offset in question is added to the SitTarget to find the sitting avatar position. - ;; acording to its size, etc. - ; LegacySitOffsets = true + ;; use legacy math for sittarget offset "correction" + ;; set this option to false to use improved math more compatibility with SL. + ;; keep it true if you have many old objects with sits set by scripts. + ;; the offset in question is added to the SitTarget to find the sitting avatar position. + ;; acording to its size, etc. + LegacySitOffsets = false ; Maximum number of position, rotation and scale changes for each prim that the simulator will store for later undos ; Increasing this number will increase memory usage. @@ -134,13 +134,13 @@ ; NonPhysicalPrimMin = 0.001 ; Maximum size of non physical prims. Affects resizing of existing prims. This can be overridden in the region config file (as NonPhysicalPrimMax!). - NonPhysicalPrimMax = 256 + NonPhysicalPrimMax = 2560 ; Minimum size where a prim can be physical. This can be overridden in the region config file. ; PhysicalPrimMin = 0.01 ; Maximum size of physical prims. Affects resizing of existing prims. This can be overridden in the region config file. - PhysicalPrimMax = 64 + PhysicalPrimMax = 640 ; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum ; This can be overridden in the region config file. @@ -165,15 +165,15 @@ TrustBinaries = false ; the default view range. Viewers override this ( no major effect still ) - ;DefaultDrawDistance = 255.0 + DefaultDrawDistance = 1024.0 - ; limit the maximum view range ( no effect still (does limit MaxRegionsViewDistance) ) - ;MaxDrawDistance = 512 + ; limit the maximum view range ( no effect still (does limit MaxRegionsViewDistance) ) + MaxDrawDistance = 1024 ; Other regions visibility depends on avatar position and view range ; the view range considered is limited the maximum and minimum distances: - ;MaxRegionsViewDistance = 255 - ;MinRegionsViewDistance = 96 + MaxRegionsViewDistance = 512 + MinRegionsViewDistance = 96 ; If you have only one region in an instance, or to avoid the many bugs ; that you can trigger in modules by restarting a region, set this to @@ -181,25 +181,25 @@ ; This is meant to be used on systems where some external system like ; Monit will restart any instance that exits, thereby making the shutdown ; into a restart. - InworldRestartShutsDown = false + InworldRestartShutsDown = true ; Use of normalized 55FPS statistics - ; Opensim does not have a frame rate control like other simulators. - ; Most parameters that control timing can be configurable region by region. - ; To achieve closer compatibility with values expected by viewers, scripts and users - ; some parameters are converted to a equivalent per frame value. - ; Additionally, they are scaled to values they would have on a system running at a nominal 55 frames per second rate. - ; The scale factor it 55 * FrameTime, corresponding to 5 with default configuration - ; You can choose to show the true physics FPS to viewers by setting Normalized55FPS to false. - ; Normalized55FPS = true + ; Opensim does not have a frame rate control like other simulators. + ; Most parameters that control timing can be configurable region by region. + ; To achieve closer compatibility with values expected by viewers, scripts and users + ; some parameters are converted to a equivalent per frame value. + ; Additionally, they are scaled to values they would have on a system running at a nominal 55 frames per second rate. + ; The scale factor it 55 * FrameTime, corresponding to 5 with default configuration + ; You can choose to show the true physics FPS to viewers by setting Normalized55FPS to false. + ; Normalized55FPS = true ; Main Frame time - ; This defines the rate of several simulation events. - ; Default value should meet most needs. - ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. - ; It should not be less than the physics engine step time. - ; Being a integer multiple of it may reduce some jitter in reported physics FPS. - ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same + ; This defines the rate of several simulation events. + ; Default value should meet most needs. + ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. + ; It should not be less than the physics engine step time. + ; Being a integer multiple of it may reduce some jitter in reported physics FPS. + ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same FrameTime = 0.0909 ; The values below represent the percentage of the target frame time that, @@ -292,7 +292,7 @@ ; folder, which can reduce startup times by reducing asset requests. Some ; versions of mono dont work well when reading the cache files, so set this ; to false if you have compatibility problems. - ;CacheSculptMaps = true + CacheSculptMaps = true ;; BulletSim is the default physics engine. It provides the best performance and most functionality. ;; BulletSim supports varregions. @@ -349,7 +349,7 @@ ; Simulator statistics are output to the console periodically at debug level INFO. ; Setting this to zero disables this output. - ; LogShowStatsSeconds = 3600 + LogShowStatsSeconds = 0 ; Simulator Stats URI ; Enable JSON simulator data by setting a URI name (case sensitive) @@ -364,7 +364,7 @@ ; Make OpenSim start all regions with logins disabled. They will need ; to be enabled from the console if this is set - ; StartDisabled = false + StartDisabled = false ; Image decoding. Use CSJ2K for layer boundary decoding if true, ; OpenJPEG if false @@ -394,12 +394,19 @@ ; available spot to the destination (typically map click/landmark). ; "random" will place the avatar on a randomly selected spawnpoint; ; "sequence" will place the avatar on the next sequential SpawnPoint - ; SpawnPointRouting = closest + SpawnPointRouting = random ; TelehubAllowLandmark allows users with landmarks to override telehub ; routing and land at the landmark coordinates when set to true ; default is false - ; TelehubAllowLandmark = false + TelehubAllowLandmark = true + + +; Normally this section goes in the ThisSim.ini file, but this is common for all. +[Region] + InternalAddress = "0.0.0.0" + ExternalHostName = "${Const|HostName}" + ; # ; # SSL certificates validation options @@ -419,20 +426,20 @@ ; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overridden ; in individual region config file(s). If you do not want to upload map tiles at all, then you will need ; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/ - ;GenerateMaptiles = true + GenerateMaptiles = true ;WorldMapModule = "WorldMap" ; The module to use in order to generate map images. ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can ; generate better images. - ;MapImageModule = "MapImageModule" + MapImageModule = "Warp3DImageModule" ; World map blacklist timeout in seconds ;BlacklistTimeout = 600 ; Refresh (in seconds) the map tile periodically - ;MaptileRefresh = 0 + MaptileRefresh = 0 ; If not generating maptiles, use this static texture asset ID ;MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" @@ -448,7 +455,7 @@ TexturePrims = true ; Only texture prims that have a diagonal size greater than this number - TexturePrimSize = 48 + TexturePrimSize = 1 ; Attempt to render meshes and sculpties on the map RenderMeshes = false @@ -468,6 +475,28 @@ ; where to store cached map tiles. CacheDirectory = "${Paths|CachePath}/MapImageCache" + ; Draw map position at bottom right. + enablePosition = true + + ; Refresh the cached map tile once a month. + ;RefreshEveryMonth = true + + ;# {MapColorWater} {} {Water color for textured and shaded maps} {"#1D475F"} + ; MapColorWater = "#3399FF" + + ;# {MapColor1} {} {Terrain color 1 for textured maps} {"#A58976"} + ; MapColor1 = "#A58976" + + ;# {MapColor2} {} {Terrain color 2 for textured maps} {"#455931"} + ; MapColor2 = "#455931" + + ;# {MapColor3} {} {Terrain color 3 for textured maps} {"#A29A8D"} + ; MapColor3 = "#A29A8D" + + ;# {MapColor4} {} {Terrain color 4 for textured maps} {"#C8C8C8"} + ; MapColor4 = "#C8C8C8" + + [Permissions] ; ## ; ## PERMISSIONS @@ -475,7 +504,7 @@ ; Permission modules to use, separated by comma. ; Possible modules are DefaultPermissionsModule, PrimLimitsModule - ;permissionmodules = "DefaultPermissionsModule" + permissionmodules = "DefaultPermissionsModule" ; If set to false, then, in theory, the server never carries out permission checks (allowing anybody to copy ; any item, etc. This may not yet be implemented uniformally. @@ -547,11 +576,11 @@ ; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error) ; - the third field is a number indicating how many scripts failed to compile ; - "oar error" if supplied, provides the error message from the OAR load - channel_notify = -800 + channel_notify = 0 ; - disallow logins while scripts are loading ; Instability can occur on regions with 100+ scripts if users enter before they have finished loading - login_disable = true + login_disable = false ; - send an alert as json to a service ; alert_uri = "http://myappserver.net/my_handler/" @@ -567,12 +596,12 @@ ;# {ProfileURL} {} {Set url to UserProfilesService} {} ;; Set the value of the url to your UserProfilesService ;; If un-set / "" the module is disabled - ;; If the ProfileURL is not set, then very BASIC - ;; profile support will be configured. If the ProfileURL is set to a + ;; If the ProfileServiceURL is not set, then very BASIC + ;; profile support will be configured. If the ProfileServiceURL is set to a ;; valid URL, then full profile support will be configured. The URL ;; points to your grid's Robust user profiles service ;; - ; ProfileURL = http://127.0.0.1:9000 + ProfileServiceURL = ${Const|GridURL}:${Const|PublicPort} ;; set this to false to prevent your users to be sent to unknown ;; web sites by other users on their profiles @@ -592,10 +621,10 @@ [Network] - ConsoleUser = "Test" - ConsolePass = "secret" - http_listener_port = 9000 - console_port = 0 + ;ConsoleUser = "Test" + ;ConsolePass = "secret" + ;http_listener_port = 9000 + ;console_port = 0 ; ssl config: Experimental! http_listener_ssl = false ; if set to true main server is replaced by a ssl one @@ -631,6 +660,7 @@ ; must be a valid hostname for the ssl cert. ; if not defined - llRequestURL/llRequestSecureURL are disabled ; ExternalHostNameForLSL=127.0.0.1 + ExternalHostNameForLSL = "${Const|HostName}" ; Disallow the following address ranges for user scripting calls (e.g. llHttpRequest()) ; This is based on http://en.wikipedia.org/wiki/Reserved_IP_addresses @@ -721,8 +751,8 @@ ; Adaptive throttling attempts to limit network overload when multiple ; clients login by starting each connection more slowly. Disabled by ; default - ; currently disabled - ;enable_adaptive_throttles = false + ; + enable_adaptive_throttles = true ; TextureSendLimit determines how many packets will be put on @@ -739,7 +769,7 @@ ; silly vanity "Facelights" dead. Sorry, head mounted miner's lamps ; will also be affected. ; - ;DisableFacelights = false + DisableFacelights = true ; The time to wait before disconecting an unresponsive client. ; The time is in seconds. The default is one minute @@ -788,7 +818,7 @@ Cap_GetObjectCost = "" Cap_GetObjectPhysicsData = "" Cap_GroupProposalBallot = "" - Cap_GroupMemberData = "localhost" + Cap_GroupMemberData = "localhost" Cap_HomeLocation = "localhost" Cap_LandResources = "" Cap_MapLayer = "localhost" @@ -845,13 +875,14 @@ enabled = true ; Distance in meters that whispers should travel. Default is 10m - whisper_distance = 10 + whisper_distance = 15 ; Distance in meters that ordinary chat should travel. Default is 20m - say_distance = 20 + say_distance = 40 ; Distance in meters that shouts should travel. Default is 100m - shout_distance = 100 + shout_distance = 256 + [EntityTransfer] ; The maximum distance in regions that an agent is allowed to teleport @@ -864,9 +895,9 @@ ; Allow avatars to cross into and out of the region. AllowAvatarCrossing = true - ; This disables border transfers for objects. When true, objects can be placed outside - ; the region's border without being transferred to another simulator. - DisableObjectTransfer = false + ; This disables border transfers for objects. When true, objects can be placed outside + ; the region's border without being transferred to another simulator. + DisableObjectTransfer = false ; Minimum user level required for HyperGrid teleports LevelHGTeleport = 0 @@ -876,10 +907,10 @@ ; Disabling cancellation can be okay in small closed grids where all teleports are highly likely to suceed. DisableInterRegionTeleportCancellation = false - ;; This option exists to control the behavior of teleporting gods into places that have landing points - ;; and telehubs. Historically, there has been a difference: OpenSim (OS) has honored landing points and telehubs even for - ;; avatars with god permissions; SL lets gods land wherever they want. - LandingPointBehavior = LandingPointBehavior_OS + ;; This option exists to control the behavior of teleporting gods into places that have landing points + ;; and telehubs. Historically, there has been a difference: OpenSim (OS) has honored landing points and telehubs even for + ;; avatars with god permissions; SL lets gods land wherever they want. + LandingPointBehavior = LandingPointBehavior_SL [Messaging] @@ -909,7 +940,7 @@ ; crossings especially with large numbers of users, though it ; will store potentially large numbers of textures in your asset ; database - PersistBakedTextures = false + PersistBakedTextures = true ; Control the delay before appearance is sent to other avatars and ; saved in the avatar service. Attempts to limit the impact caused @@ -921,11 +952,11 @@ ; If true, avatar appearance information is resent to other avatars in the simulator every 60 seconds. ; This may help with some situations where avatars are persistently grey, though it will not help ; in other situations (e.g. appearance baking failures where the avatar only appears as a cloud to others). - ResendAppearanceUpdates = false + ResendAppearanceUpdates = true ; Turning this on responds to CachedTexture packets to possibly avoid rebaking the avatar ; on every login - ReuseTextures = false + ReuseTextures = true [Attachments] @@ -949,7 +980,7 @@ ;LevelUpload = 0 ; support meshes on physics - ;UseMeshiesPhysicsMesh = true + UseMeshiesPhysicsMesh = true ;support convex shape type on normal prims ; (ubOde only) @@ -1023,18 +1054,18 @@ avatar_terminal_velocity = 54 ; World Step size. - ; with legacy ODE this value needs to be close to 0.02s - ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load - ; you will need to test acording to you needs - ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS + ; with legacy ODE this value needs to be close to 0.02s + ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load + ; you will need to test acording to you needs + ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS world_stepsize = 0.01818 - ; number of iterations of constrains solver, higher should improve results - ; up to a point where acumulated math errors eliminate the improvement - ; more steps may increase CPU load. No real gain in changing + ; number of iterations of constrains solver, higher should improve results + ; up to a point where acumulated math errors eliminate the improvement + ; more steps may increase CPU load. No real gain in changing world_solver_iterations = 10 ;Spaces level settings. Affects memory consumption vs Collider CPU time for avatar and physical prim - ; defines spaces partition cells min and max sizes == 2^value + ; defines spaces partition cells min and max sizes == 2^value world_hashspace_level_low = -5 world_hashSpace_level_high = 12 @@ -1186,15 +1217,15 @@ ; BulletSim can run on its own thread independent of the simulator's heartbeat ; thread. Enabling this will not let the physics engine slow down avatar movement, etc. - UseSeparatePhysicsThread = false + UseSeparatePhysicsThread = true ; Terrain implementation can use either Bullet's heightField or BulletSim can build ; a mesh. 0=heightField, 1=mesh - TerrainImplementation = 0 + TerrainImplementation = 1 ; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield ; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher ; magnifications use lots of memory. - TerrainMeshMagnification = 2 + TerrainMeshMagnification = 3 ; Should avatars collide with each other? AvatarToAvatarCollisionsByDefault = true @@ -1208,13 +1239,14 @@ ; Avatar walk-up-stairs parameters ; If an avatar collides with an object 'close to its feet', the avatar will be ; moved/pushed up do simulate stepping up. - ;AvatarStepHeight = 0.6 ; The height, below which is considered a step collision. - ;AvatarStepAngle = 0.3 ; The angle from vertical (in radians) to consider a surface a step - ;AvatarStepApproachFactor = 2 ; Approach angle factor. O=straight on, .6=~45 degrees. - ;AvatarStepGroundFudge = 0.1 ; Fudge added to bottom of avatar below which step collisions happen - ;AvatarStepForceFactor = 0 ; Avatar is pushed up by its mass times this factor - ;AvatarStepUpCorrectionFactor = 0.8 ; Avatar is displaced up the collision height times this factor - ;AvatarStepSmoothingSteps = 1 ; Number of frames after a step collision that up correction is applied +;;;; Has trouble with the lighthouse stairs, but all others work fine, can even climb over some fences. Which is odd. + AvatarStepHeight = 0.6 ; The height, below which is considered a step collision. + AvatarStepAngle = 0.3 ; The angle from vertical (in radians) to consider a surface a step + AvatarStepApproachFactor = 2 ; Approach angle factor. O=straight on, .6=~45 degrees. + AvatarStepGroundFudge = 0.1 ; Fudge added to bottom of avatar below which step collisions happen + AvatarStepForceFactor = 0 ; Avatar is pushed up by its mass times this factor + AvatarStepUpCorrectionFactor = 1.1 ; Avatar is displaced up the collision height times this factor + AvatarStepSmoothingSteps = 3 ; Number of frames after a step collision that up correction is applied ; Terminal velocity of a falling avatar ; This is the same http://en.wikipedia.org/wiki/Terminal_velocity#Examples @@ -1346,9 +1378,9 @@ ; flush-on-error = true -; IRC bridge is experimental, so if it breaks... keep both parts... yada yada -; also, not good error detection when it fails [IRC] + ; IRC bridge is experimental, so if it breaks... keep both parts... yada yada + ; also, not good error detection when it fails enabled = false; you need to set this to true otherwise it won't connect ;server = name.of.irc.server.on.the.net ;; user password - only use this if the server requires one @@ -1417,15 +1449,15 @@ ;alert_msg_post = "Everything you say in public chat can be listened." -; The following settings control the progression of daytime -; in the Sim. The defaults are the same as the commented out settings [Sun] + ; The following settings control the progression of daytime + ; in the Sim. The defaults are the same as the commented out settings ; number of wall clock hours for an opensim day. 24.0 would mean realtime - ;day_length = 4 + day_length = 24 ; Year length in days - ;year_length = 60 + year_length = 365 ; Day to Night Ratio - ;day_night_offset = 0.45 + day_night_offset = 1.0 ; send a Sun update every update_interval # of frames. A lower number will ; make for smoother sun transition at the cost of network ;update_interval = 100 @@ -1457,7 +1489,7 @@ [Cloud] ; Enable this to generate classic particle clouds above the sim. ; default is disabled - turn it on here - enabled = false + enabled = true ; Density of cloud cover 0.0 to 1.0 Defult 0.5 density = 0.5 @@ -1470,7 +1502,7 @@ [LightShare] ; This enables the transmission of Windlight scenes to supporting clients, such as the Meta7 viewer. ; It has no ill effect on viewers which do not support server-side windlight settings. - enable_windlight = false + enable_windlight = true [Trees] @@ -1502,7 +1534,7 @@ ; Are god functions such as llSetObjectPermMask() allowed? If true then gods and only gods have access to these functions. ; If false then gods cannot execute these functions either. - AllowGodFunctions = false + AllowGodFunctions = true ; Restrict the email address used by llEmail to the address associated with the avatars user account? ; If true then llEmail will only send email to the address in the user account of the avatar who owns the object containing the script. @@ -1511,11 +1543,11 @@ ; Maximum number of llListen events we allow over the entire region. ; Set this to 0 to have no limit imposed - max_listens_per_region = 1000 + max_listens_per_region = 0 ; Maximum number of llListen events we allow per script ; Set this to 0 to have no limit imposed. - max_listens_per_script = 64 + max_listens_per_script = 0 ; Maximum number of external urls that scripts can set up in this simulator (e.g. via llRequestURL()) max_external_urls_per_simulator = 100 @@ -1628,7 +1660,7 @@ ; compared to previous version of llCastRay in OpenSimulator. ; Is in most cases considerably slower than llCastRay in Second Life. ; Generates geometry meshes and can therefore use much system resources. - UseLlCastRayV3 = false + UseLlCastRayV3 = true ; Accepted calculation precision error in calculations in llCastRay V3 FloatToleranceInLlCastRay = 0.00001 @@ -1701,7 +1733,7 @@ data_exposure = minimum ; If search is on, change this to your grid name; will be ignored for standalones - gridname = "OSGrid" + gridname = "${Const|GridName}" ; Period between data snapshots, in seconds. 20 minutes, for starters, so that you see the initial changes fast. ; Later, you may want to increase this to 3600 (1 hour) or more @@ -1726,13 +1758,13 @@ ; Economy values get used in the BetaGridLikeMoneyModule. ;; Enables selling things for $0. Default is true. - ; SellEnabled = true + SellEnabled = true ;; Money Unit fee to upload textures, animations etc. Default is 0. - ;PriceUpload = 0 + PriceUpload = 0 ;; Money Unit fee to create groups. Default is 0. - ;PriceGroupCreate = 0 + PriceGroupCreate = 0 ; We don't really know what the rest of these values do. These get sent to the client ; These taken from Agni at a Public Telehub. Change at your own risk. @@ -1804,7 +1836,7 @@ Priority = "BelowNormal" ; Maximum number of events to queue for a script (excluding timers) - MaxScriptEventQueue = 300 + MaxScriptEventQueue = 3000 ; Stack size per thread created ThreadStackSize = 262144 @@ -1815,7 +1847,7 @@ ; this may only be a problem if regions stay alive for a long time with lots of scripts added or edited. ; at this time some mono versions seem to have problems with the true option ; so default is now false until a fix is found - ; AppDomainLoading = false + AppDomainLoading = false ; Controls whether previously compiled scripts DLLs are deleted on sim restart. ; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled. @@ -1823,7 +1855,7 @@ ; after first run you can change to false. ; You can also set it to false and delete the script DLLs by hand ; This does not delete cached scripts state. - ; DeleteScriptsOnStartup = true + DeleteScriptsOnStartup = false ; CompactMemOnLoad ; forces calls to memory garbage collector before loading each script DLL during region startup. @@ -1851,19 +1883,23 @@ ; Compile debug info (line numbers) into the script assemblies CompileWithDebugInformation = true + ; Don't include stack traces in silly threat level errors, and don't bother with "OSSL Runtime Error: " either. + ; On the other hand, having this true stops the official OpenSim OhSilly detection script from working. + DebuggerSafe = true + ; Allow the user of mod* functions. This allows a script to pass messages ; to a region module via the modSendCommand() function ; Default is false - AllowMODFunctions = false + AllowMODFunctions = true ; Allow the use of os* functions (some are dangerous) - AllowOSFunctions = false + AllowOSFunctions = true ; Allow the user of LightShare functions - AllowLightShareFunctions = false + AllowLightShareFunctions = true ; Threat level to allow, one of None, VeryLow, Low, Moderate, High, VeryHigh, Severe - OSFunctionThreatLevel = VeryLow + OSFunctionThreatLevel = Moderate ; OS Functions enable/disable ; For each function, you can add one line, as shown @@ -1898,10 +1934,10 @@ MaintenanceInterval = 10 ; Time a script can spend in an event handler before it is interrupted - EventLimit = 30 + EventLimit = 60 ; If a script overruns it's event limit, kill the script? - KillTimedOutScripts = false + KillTimedOutScripts = true ; Amount of time in milliseconds we will wait for an event to completely normally when a script stop is requested ; before aborting the thread (such as when an object containing scripts is taken into inventory). @@ -1915,25 +1951,25 @@ ; Maximum length of notecard line read ; Increasing this to large values potentially opens - ; up the system to malicious scripters - ; NotecardLineReadCharsMax = 255 + ; up the system to malicious scripters. Pfffft. + NotecardLineReadCharsMax = 1024 ; Minimum settable timer interval. Any timer setting less than this is ; rounded up to this minimum interval. - ; MinTimerInterval = 0.5 + MinTimerInterval = 0.1 ; Sensor settings - SensorMaxRange = 96.0 - SensorMaxResults = 16 + SensorMaxRange = 1024.0 + SensorMaxResults = 64 ; Allow for llCreateLink and llBreakLink to work without asking for permission ; only enable this in a trusted environment otherwise you may be subject to hijacking - ; AutomaticLinkPermission = false + AutomaticLinkPermission = true ; Disable underground movement of prims (default true); set to ; false to allow script controlled underground positioning of ; prims - ; DisableUndergroundMovement = true + DisableUndergroundMovement = false ;; Path to script assemblies ; ScriptEnginesPath = "${Paths|CachePath}/ScriptEngines" @@ -2036,7 +2072,7 @@ [Groups] - Enabled = false + Enabled = true ; This is the current groups stub in Region.CoreModules.Avatar.Groups. All the other settings below only really ; apply to the Flotsam/SimianGrid GroupsModule @@ -2047,7 +2083,7 @@ ;Module = GroupsModule ; Enable Group Notices - ;NoticesEnabled = true + NoticesEnabled = true ; This makes the Group module very chatty on the console. DebugEnabled = false @@ -2067,7 +2103,7 @@ ; Experimental option to only message cached online users rather than all users ; Should make large group with few online members messaging faster, at the expense of more calls to ROBUST presence service ; (Flotsam groups only; in V2 this is always on) - MessageOnlineUsersOnly = false + MessageOnlineUsersOnly = true ; Service connectors to the Groups Service. Select one depending on whether you're using a Flotsam XmlRpc backend or a SimianGrid backend @@ -2084,11 +2120,11 @@ ;XmlRpcServiceWriteKey = 1234 ; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests, - ; only set to false it if you absolute sure regions and groups server support it. + ; only set to false it if you absolute sure regions and groups server support it. ; XmlRpcDisableKeepAlive = true ; Minimum user level required to create groups - ;LevelGroupCreate = 0 + LevelGroupCreate = 0 [PacketPool] @@ -2163,20 +2199,20 @@ [NPC] ;; Enable Non Player Character (NPC) facilities - Enabled = false - ;; several options to control NPCs creation + Enabled = true + ;; several options to control NPCs creation - ;; allow NPCs to be created not Owned {true false} default: true - ; AllowNotOwned = true + ;; allow NPCs to be created not Owned {true false} default: true + AllowNotOwned = true - ;; allow NPCs to set to be sensed as Avatars {true false} default: true - ; AllowSenseAsAvatar = true + ;; allow NPCs to set to be sensed as Avatars {true false} default: true + AllowSenseAsAvatar = true - ;; allow NPCs to created cloning any avatar in region {true false} default: true - ; AllowCloneOtherAvatars = true + ;; allow NPCs to created cloning any avatar in region {true false} default: true + AllowCloneOtherAvatars = true - ;; if true NPCs will have no group title, if false display "- NPC -" for easy identification {true false} default: true - ; NoNPCGroup = true + ;; if true NPCs will have no group title, if false display "- NPC -" for easy identification {true false} default: true + NoNPCGroup = false [Terrain] ; Values can be "pinhead-island" or "flat" @@ -2195,15 +2231,15 @@ ; will be what it has always been (send the whole region's parcel layer info). ; Other parcel updates (login, changing parcel ownership, ...) will still send ; whole region. - LimitParcelLayerUpdateDistance = true - ParcelLayerViewDistance = 128 + LimitParcelLayerUpdateDistance = false + ParcelLayerViewDistance = 1024 - ; set this to false to not display parcel ban lines - ShowParcelBansLines = true + ; set this to false to not display parcel ban lines + ShowParcelBansLines = true - ; Parcel Bans max height above ground. Default 100m - ; range 20m to 5000m - ; BanLineSafeHeight = 100 + ; Parcel Bans max height above ground. Default 100m + ; range 20m to 5000m + BanLineSafeHeight = 5000 ; setting the parcel to admin content, It works as setting the land to Linden content in SL. ; To use it, activate god mode in the viewer, select the parcel and go to: Admin -> Parcel -> Set to Linden Content ( CTRL+ALT+SHIFT+C) @@ -2225,10 +2261,10 @@ ;; JsonStore module provides structured store for scripts ;; [JsonStore] - Enabled = False + Enabled = true ;; Enable direct access to the SOP dynamic attributes - EnableObjectStore = False + EnableObjectStore = true MaxStringSpace = 0 diff --git a/bin/Robust.exe.config b/bin/Robust.exe.config index 62ffcc6..f5379ff 100644 --- a/bin/Robust.exe.config +++ b/bin/Robust.exe.config @@ -11,6 +11,7 @@ + @@ -20,24 +21,18 @@ - - - - - + @@ -50,7 +45,6 @@ - diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 3550ed9..dc70b81 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -76,13 +76,13 @@ ; ; Change this to your grid-wide asset server. Do not add a slash to the end of any of these addresses. ; - AssetServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + AssetServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [InventoryService] ; ; Change this to your grid-wide inventory server ; - InventoryServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + InventoryServerURI = "${Const|BaseURL}:${Const|PrivatePort}" ;MaxRetries = 0 [GridInfo] @@ -95,7 +95,7 @@ ; ; Change this to your grid-wide grid server ; - GridServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + GridServerURI = "${Const|BaseURL}:${Const|PrivatePort}" ;AllowHypergridMapSearch = true ;; Directory for map tile images of linked regions @@ -105,7 +105,7 @@ ;; Change this to the address of your Gatekeeper service ;; (usually bundled with the rest of the services in one ;; Robust server in port ${Const|PublicPort}, but not always) - Gatekeeper="${Const|BaseURL}:${Const|PublicPort}" + GatekeeperURI="${Const|BaseURL}:${Const|PublicPort}" [EstateDataStore] ; @@ -115,7 +115,7 @@ ;LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataRemoteConnector" [EstateService] - EstateServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + EstateServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [Messaging] ; === HG ONLY === @@ -128,43 +128,43 @@ ; ; Change this to your grid-wide grid server ; - AvatarServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + AvatarServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [AgentPreferencesService] ; ; Change this to your grid-wide avatar prefs server ; - AgentPreferencesServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + AgentPreferencesServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [PresenceService] ; ; Change this to your grid-wide presence server ; - PresenceServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + PresenceServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [UserAccountService] ; ; Change this to your grid-wide user accounts server ; - UserAccountServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + UserAccountServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [GridUserService] ; ; Change this to your grid-wide user accounts server ; - GridUserServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + GridUserServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [AuthenticationService] ; ; Change this to your grid-wide authentication server ; - AuthenticationServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + AuthenticationServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [FriendsService] ; ; Change this to your grid-wide friends server ; - FriendsServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + FriendsServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [HGInventoryAccessModule] ; @@ -223,7 +223,7 @@ UserAgentServerURI = "${Const|BaseURL}:${Const|PublicPort}" [MapImageService] - MapImageServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + MapImageServerURI = "${Const|BaseURL}:${Const|PrivatePort}" [AuthorizationService] ; If you have regions with access restrictions @@ -244,4 +244,4 @@ ;; SimulatorCapability = "00000000-0000-0000-0000-000000000000" [MuteListService] - MuteListServerURI = "${Const|PrivURL}:${Const|PrivatePort}" + MuteListServerURI = "${Const|BaseURL}:${Const|PrivatePort}" diff --git a/bin/config-include/SimBalanced.ini b/bin/config-include/SimBalanced.ini new file mode 100644 index 0000000..fbf778f --- /dev/null +++ b/bin/config-include/SimBalanced.ini @@ -0,0 +1,889 @@ +;; hopefully a well balanced configuration that works well for everything. + + +[Startup] + ; ## + ; ## SYSTEM + ; ## + + ; Sets the method that OpenSim will use to fire asynchronous + ; events. Valid values are UnsafeQueueUserWorkItem, + ; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread. + ; + ; SmartThreadPool is reported to work well on Mono/Linux, but + ; UnsafeQueueUserWorkItem has been benchmarked with better + ; performance on .NET/Windows + ; + ; UnsafeQueueUserWorkItem refers to the fact that the code creating the event could elevate its security + ; privileges. However, as calling code is trusted anyway this is safe (if you set + ; TrustedBinaries = true in the [XEngine] section then you already have to trust that incoming code for other reasons). + async_call_method = SmartThreadPool + + ; Max threads to allocate on the FireAndForget thread pool + ; when running with the SmartThreadPool option above + MaxPoolThreads = 300 + + ; Allow certain jobs to be run consecutively in a job engine rather than always concurrently. + ; This improves performance in regions with large numbers of connections (in the hundreds). + JobEngineEnabled = true + + ; Maximum number of position, rotation and scale changes for each prim that the simulator will store for later undos + ; Increasing this number will increase memory usage. + MaxPrimUndos = 42 + + ; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum + ; This can be overridden in the region config file. + ClampPrimSize = true + + ; If a prim is loaded from an external source, clamp it to Z = 0 if Z is negative. + ClampNegativeZ = true + + ; Allow scripts to keep running when they cross region boundaries, rather than being restarted. State is reloaded on the destination region. + ; This only applies when crossing to a region running in a different simulator. + ; For crossings where the regions are on the same simulator the script is always kept running. + AllowScriptCrossing = true + + ; Main Frame time + ; This defines the rate of several simulation events. + ; Default value should meet most needs. + ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. + ; It should not be less than the physics engine step time. + ; Being a integer multiple of it may reduce some jitter in reported physics FPS. + ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same + FrameTime = 0.0909 + + ; Send scheduled updates to objects in the scene + ; This must be a whole number + UpdateObjectsEveryNFrames = 1 + + ; Send position/velocity, etc. updates to agents in the scene + ; This must be a whole number + UpdateAgentsEveryNFrames = 1 + + ; Apply pending forces from physics calculations to an entity. + ; This must be a whole number + UpdateEntityMovementEveryNFrames = 1 + + ; Send coarse location updates to viewers. In a classic viewer, this updates the minimap. + ; This must be a whole number + UpdateCoarseLocationsEveryNFrames = 50 + + ; Physics simulation execution or syncronization, acording to engine. Should be 1 + ; This must be a whole number + UpdatePhysicsEveryNFrames = 1 + + ; Send out the on frame event to modules and other listeners. This should probably never deviate from 1. + ; This must be a whole number + UpdateEventsEveryNFrames = 1 + + ; Send terrain updates to viewers + ; This must be a whole number + UpdateTerrainEveryNFrames = 50 + + ; Persitently store any objects which meet the PRIM STORAGE criteria + ; This must be a whole number + UpdateStorageEveryNFrames = 200 + + ; Clean up temp on rez objects. + ; This must be a whole number + UpdateTempCleaningEveryNSeconds = 180 + + ; ## + ; ## PRIM STORAGE + ; ## + + ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to + ; prevent frequently changing objects from heavily loading the region data store. + ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep. + ; + ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds + MinimumTimeBeforePersistenceConsidered = 60 + ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago + MaximumTimeBeforePersistenceConsidered = 600 + + ; ## + ; ## PHYSICS + ; ## + + ; Select a mesher here. + ; + ; Meshmerizer properly handles complex prims by using triangle meshes. + ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way + ; + ; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports + ; Usually this is only a box + + ;meshing = Meshmerizer + ;meshing = ZeroMesher + ;; select ubODEMeshmerizer only with ubOde physics engine + meshing = ubODEMeshmerizer + + ; ubODE and OpenDynamicsEngine does allocate a lot of memory on stack. On linux you may need to increase its limit + ; script opensim-ode-sh starts opensim setting that limit. You may need to increase it even more on large regions + ; edit the line ulimit -s 262144, and change this last value + + ; if you use Meshmerizer and want sculpt map collisions, setting this to + ; to true will store decoded sculpt maps in a special folder in your bin + ; folder, which can reduce startup times by reducing asset requests. Some + ; versions of mono dont work well when reading the cache files, so set this + ; to false if you have compatibility problems. + CacheSculptMaps = true + + ;; BulletSim is the default physics engine. It provides the best performance and most functionality. + ;; BulletSim supports varregions. + ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before. + ;; It continues to provide a workable physics implementation. It does not currently support varregions. + ;; basicphysics effectively does not model physics at all, making all objects phantom. + ;; Default is BulletSim + ;physics = BulletSim + ;physics = modified_BulletX + ;physics = OpenDynamicsEngine + ;physics = basicphysics + ;physics = POS + ;; alternative OpenDynamicsEngine engine. ubODEMeshmerizer meshing above MUST be selected also + physics = ubODE + + ; ## + ; ## SCRIPT ENGINE + ; ## + + ;; Default script engine to use. Currently, we only have XEngine + DefaultScriptEngine = "XEngine" + + ; Image decoding. Use CSJ2K for layer boundary decoding if true, + ; OpenJPEG if false + ; UseCSJ2K = true + + +[Map] + ; Map tile options. + ; If true, then maptiles are generated using the MapImageModule below. + ; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overridden + ; in individual region config file(s). If you do not want to upload map tiles at all, then you will need + ; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/ + GenerateMaptiles = true + + ;WorldMapModule = "WorldMap" + + ; The module to use in order to generate map images. + ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can + ; generate better images. + MapImageModule = "Warp3DImageModule" + + ; World map blacklist timeout in seconds + ;BlacklistTimeout = 600 + + ; Refresh (in seconds) the map tile periodically + MaptileRefresh = 0 + + ; If not generating maptiles, use this static texture asset ID + ;MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + + ; Draw objects on maptile. This step might take a long time if you've got a large number of + ; objects, so you can turn it off here if you'd like. + DrawPrimOnMapTile = true + + ; Use terrain texture for maptiles if true, use shaded green if false + TextureOnMapTile = true + + ; Texture prims + TexturePrims = true + + ; Only texture prims that have a diagonal size greater than this number + TexturePrimSize = 5 + + ; Attempt to render meshes and sculpties on the map + RenderMeshes = true + + UseAntiAliasing = true + + +[Network] + ; OpenSim can send multiple simultaneous requests for services such as asset + ; retrieval. However, some versions of mono appear to hang when there are too + ; many simultaneous requests, default is 30 and is currently applied only to assets + ;MaxRequestConcurrency = 30 + + +[ClientStack.LindenUDP] + ; The client socket receive buffer size determines how many + ; incoming requests we can process; the default on .NET is 8192 + ; which is about 2 4k-sized UDP datagrams. On mono this is + ; whatever the underlying operating system has as default; for + ; example, ubuntu 8.04 or SLES11 have about 111k, which is about + ; 27 4k-sized UDP datagrams (on linux platforms you can [as root] + ; do "sysctl net.core.rmem_default" to find out what your system + ; uses a default socket receive buffer size. + ; + ; client_socket_rcvbuf_size allows you to specify the receive + ; buffer size LLUDPServer should use. NOTE: this will be limited + ; by the system's settings for the maximum client receive buffer + ; size (on linux systems you can set that with "sysctl -w + ; net.core.rmem_max=X") + ; + ;client_socket_rcvbuf_size = 8388608 + + ; Maximum outbound bytes per second for a single scene. This can be used to + ; throttle total outbound UDP traffic for a simulator. The default value is + ; 0, meaning no throttling at the scene level. The example given here is + ; 20 megabits + ; + ;scene_throttle_max_bps = 2500000 + + ; Maximum bytes per second to send to any single client. This will override + ; the user's viewer preference settings. The default value is 0, meaning no + ; aggregate throttling on clients (only per-category throttling). The + ; example given here is 1.5 megabits + ; + ;client_throttle_max_bps = 187500 + + ; Minimum bytes per second to send to any single client as a result of + ; adaptive throttling. Viewer preferences set to a lower number will + ; override the settin. The example given here ensures that adaptive + ; throttling will never decrease per client bandwidth below 256 kbps. + ; + ;adaptive_throttle_min_bps = 32000 + + ; Adaptive throttling attempts to limit network overload when multiple + ; clients login by starting each connection more slowly. Disabled by + ; default + ; + enable_adaptive_throttles = true + + ; Per-client bytes per second rates for the various throttle categories. + ; These are default values that will be overridden by clients. These + ; defaults are approximately equivalent to the throttles set by the Imprudence + ; viewer when maximum bandwidth is set to 350kbps + + ;resend_default = 6625 + ;land_default = 9125 + ;wind_default = 1750 + ;cloud_default = 1750 + ;task_default = 18500 + ;texture_default = 18500 + ;asset_default = 10500 + + ; Configures how ObjectUpdates are aggregated. These numbers + ; do not literally mean how many updates will be put in each + ; packet that goes over the wire, as packets are + ; automatically split on a 1400 byte boundary. These control + ; the balance between responsiveness of interest list updates + ; and total throughput. Higher numbers will ensure more full- + ; sized packets and faster sending of data, but more delay in + ; updating interest lists + ; + ;PrimUpdatesPerCallback = 100 + + ; TextureSendLimit determines how many packets will be put on + ; the outgoing queue each cycle. Like the settings above, this + ; is a balance between responsiveness to priority updates and + ; total throughput. Higher numbers will give a better + ; throughput at the cost of reduced responsiveness to client + ; priority changes or transfer aborts + ; + ;TextureSendLimit = 20 + + ; CannibalizeTextureRate allows bandwidth to be moved from the + ; UDP texture throttle to the task throttle. Since most viewers + ; use HTTP textures, this provides a means of using what is largely + ; unused bandwidth in the total throttle. The value is the proportion + ; of the texture rate to move to the task queue. It must be between + ; 0.0 (none of the bandwidth is cannibalized) and 0.9 (90% of the + ; bandwidth is grabbed) + ; + ; CannibalizeTextureRate = 0.5 + + ; The time to wait before disconecting an unresponsive client. + ; The time is in seconds. The default is one minute + ; + ;AckTimeout = 60 + + ; The time to wait before disconecting an unresponsive paused client. + ; A client can be paused when the file selection dialog is open during file upload. + ; This gives extra time to find files via the dialog but will still disconnect if + ; the client crashes or loses its network connection + ; The time is in seconds. The default is five minutes. + ; + ;PausedAckTimeout = 300 + + +[Appearance] + ; Persist avatar baked textures + ; Persisting baked textures can speed up login and region border + ; crossings especially with large numbers of users, though it + ; will store potentially large numbers of textures in your asset + ; database + PersistBakedTextures = true + + ; Control the delay before appearance is sent to other avatars and + ; saved in the avatar service. Attempts to limit the impact caused + ; by the very chatty dialog that sets appearance when an avatar + ; logs in or teleports into a region; values are in seconds + DelayBeforeAppearanceSave = 5 + DelayBeforeAppearanceSend = 2 + + ; If true, avatar appearance information is resent to other avatars in the simulator every 60 seconds. + ; This may help with some situations where avatars are persistently grey, though it will not help + ; in other situations (e.g. appearance baking failures where the avatar only appears as a cloud to others). + ResendAppearanceUpdates = true + + ; Turning this on responds to CachedTexture packets to possibly avoid rebaking the avatar + ; on every login + ReuseTextures = true + + +[Attachments] + ; Controls the number of milliseconds that are slept per 100 prims rezzed in attachments + ; Experimental setting to control CPU spiking when avatars with many attachments login/change outfit + ; or when multiple avatars with medium level attachments login/change outfit simultaneously. + ; If 0 then no throttling is performed. + ThrottlePer100PrimsRezzed = 0 + + +[Textures] + ; If true, textures generated dynamically (i.e. through osSetDynamicTextureData() and similar OSSL functions) are reused where possible + ; Chiefly, reuse occurs if a texture has already been generated with identical data and settings, and that texture contains no dynamic components + ; (e.g. images pulled from an external HTTP address). + ; Reusing previously generated textures results in a much faster update on the viewer but may cause issues if the viewer didn't receive all resolutions of the texture. + ; Currently, it will also increase asset cache use since temporary dynamic textures are no longer deleted. + ; Hence, currently considered experimental. + ; Default is false. + ReuseDynamicTextures = true + + ; If true, then textures generated dynamically that have a low data size relative to their pixel size are not reused + ; This is to workaround an apparent LL 3.3.4 and earlier viewer bug where such textures are not redisplayed properly when pulled from the viewer cache. + ; Only set this to true if you are sure that all the viewers using your simulator will not suffer from this problem. + ; This setting only has an affect is ReuseDynamicTextures = true + ; Default is false + ReuseDynamicLowDataTextures = true + + +[ODEPhysicsSettings] + ; ## + ; ## Physics stats settings ( most ignored by ubOde ) + ; + + ; If collect_stats is enabled, then extra stat information is collected which is accessible via the MonitorModule + ; (see http://opensimulator.org/wiki/Monitoring_Module for more details). + collect_stats = true + + ; ## + ; ## Physics logging settings - logfiles are saved to *.DIF files + ; ## + + ; default is false + ;physics_logging = true + ;; every n simulation iterations, the physics snapshot file is updated + ;physics_logging_interval = 50 + ;; append to existing physics logfile, or overwrite existing logfiles? + ;physics_logging_append_existing_logfile = true + + ;## + ;## World Settings + ;## + + ; World Step size. + ; with legacy ODE this value needs to be close to 0.02s + ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load + ; you will need to test acording to you needs + ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS + world_stepsize = 0.01818 + ; number of iterations of constrains solver, higher should improve results + ; up to a point where acumulated math errors eliminate the improvement + ; more steps may increase CPU load. No real gain in changing + world_solver_iterations = 10 + + ;Spaces level settings. Affects memory consumption vs Collider CPU time for avatar and physical prim + ; defines spaces partition cells min and max sizes == 2^value + world_hashspace_level_low = -5 + world_hashSpace_level_high = 12 + + meters_in_small_space = 29.9 + + + ; ## + ; ## Contact properties. (the stuff that happens when things come in contact with each other) + ; ## + + ; surface layer around geometries other geometries can sink into before generating a contact + world_contact_surface_layer = 0.001 + + ; Filtering collisions helps keep things stable physics wise, but sometimes + ; it can be overzealous. If you notice bouncing, chances are it's that. + filter_collisions = true + + ; Non Moving Terrain Contact (avatar isn't moving) + nm_terraincontact_friction = 255.0 + nm_terraincontact_bounce = 0.1 + nm_terraincontact_erp = 0.1025 + + ; Moving Terrain Contact (avatar is moving) + m_terraincontact_friction = 75.0 + m_terraincontact_bounce = 0.05 + m_terrainContact_erp = 0.05025 + + ; Moving Avatar to object Contact + m_avatarobjectcontact_friction = 75.0 + m_avatarobjectcontact_bounce = 0.1 + + ; Object to Object Contact and Non-Moving Avatar to object + objectcontact_friction = 250.0 + objectcontact_bounce = 0.2 + + ; ## + ; ## Avatar Control + ; ## + + ; PID Controller Settings. These affect the math that causes the avatar to reach the + ; desired velocity + ; See http://en.wikipedia.org/wiki/PID_controller + + av_pid_derivative = 2200.0 + av_pid_proportional = 900.0 + + ; specifies if the capsule should be tilted (=true; old compatibility mode) + ; or straight up-and-down (=false; better and more consistent physics behavior) + av_capsule_tilted = false + + ; Movement. Smaller is faster. + + ; speed of movement with Always Run off + av_movement_divisor_walk = 1.3 + + ; speed of movement with Always Run on + av_movement_divisor_run = 0.8 + + ; When the avatar flies, it will be moved up by this amount off the ground (in meters) + minimum_ground_flight_offset = 3.0 + + ; Plant avatar. This reduces the effect of physical contacts with the avatar. + ; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive. + ; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active + ; will lock the avatar in place + av_planted = false + + ; No Avatar Avatar Collissions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment + av_av_collisions_off = false + + ; ## + ; ## Object options + ; ## + + ; amount of ODE steps where object is non moving for ODE to automatically put it to sleep + body_frames_auto_disable = 20 + + ; used to control llMove2Target + body_pid_derivative = 35 + body_pid_gain = 25 + + ; maximum number of contact points to generate per collision + contacts_per_collision = 80 + + ; start throttling the object updates if object comes in contact with 3 or more other objects + geom_contactpoints_start_throttling = 3 + + ; send 1 update for every x updates below when throttled + geom_updates_before_throttled_update = 15 + + ; ## + ; ## Sculpted Prim settings + ; ## + + ; Do we want to mesh sculpted prim to collide like they look? + ; If you are seeing sculpt texture decode problems + ; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ; then you might want to try setting this to false. + mesh_sculpted_prim = true + + ; number^2 non-physical level of detail of the sculpt texture. 32x32 - 1024 verticies + mesh_lod = 32 + + ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies + mesh_physical_lod = 16 + + ; ## + ; ## additional meshing options + ; ## + + ; Physics needs to create internal meshs (or convert the object meshs or scultps) + ; for all prims except simple boxes and spheres. + + ; collisions of small objects againts larger ones can have a increased CPU load cost + ; so this are represented by a simple BOX + ; if all their scale dimensions are lower or equal to this option. Default is 0.1m + ; (ubOde only) + ; MinSizeToMeshmerize = 0.1 + + +[BulletSim] + ; There are two bullet physics libraries, bulletunmanaged is the default and is a + ; native c++ dll bulletxna is a managed C# dll. They have comparible functionality + ; but the c++ one is much faster. + ;BulletEngine = "bulletunmanaged" + BulletEngine = "bulletxna" + + ; BulletSim can run on its own thread independent of the simulator's heartbeat + ; thread. Enabling this will not let the physics engine slow down avatar movement, etc. + UseSeparatePhysicsThread = true + + ; Terrain implementation can use either Bullet's heightField or BulletSim can build + ; a mesh. 0=heightField, 1=mesh + TerrainImplementation = 0 + ; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield + ; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher + ; magnifications use lots of memory. + TerrainMeshMagnification = 1 + + ; Should avatars collide with each other? + AvatarToAvatarCollisionsByDefault = true + + ; Default linkset implmentation + ; 'Constraint' uses physics constraints to hold linkset together. 'Compound' + ; builds a compound shape from the children shapes to create a single physical + ; shape. 'Compound' uses a lot less CPU time. + LinkImplementation = 1 ; 0=constraint, 1=compound + + ; If 'true', offset a linkset's origin based on mass of linkset parts. + LinksetOffsetCenterOfMass = false + + ; If 'true', turn scuplties into meshes + MeshSculptedPrim = true + + ; If 'true', force simple prims (box and sphere) to be meshed + ; If 'false', the Bullet native special case shape is used for square rectangles + ; and even dimensioned spheres. + ForceSimplePrimMeshing = true + + ; If 'true', when creating meshes, remove all triangles that have two equal vertexes. + ; Happens often in sculpties. If turned off, there will be some doorways + ; that cannot be walked through. + ShouldRemoveZeroWidthTriangles = true + + ; If 'true', use convex hull definition in mesh asset if present. + ShouldUseAssetHulls = true + + ; If there are thousands of physical objects, these maximums should be increased. + MaxCollisionsPerFrame = 2048 + MaxUpdatesPerFrame = 8192 + + ; Detailed physics debug logging. Very verbose. + PhysicsLoggingEnabled = False + PhysicsLoggingDir = "." + VehicleLoggingEnabled = False + + +[Sun] + ; send a Sun update every update_interval # of frames. A lower number will + ; make for smoother sun transition at the cost of network + ;update_interval = 100 + + +[Wind] + ; How often should wind be updated, as a function of world frames. Approximately 50 frames a second + wind_update_rate = 150 + + ; The Default Wind Plugin to load + wind_plugin = SimpleRandomWind + + +[Cloud] + ; update interval for the cloud cover data returned by llCloud(). + ; default is 1000 + cloud_update_rate = 1000 + + +[Trees] + ; active_trees allows module to change its trees in time. + ; some will be deleted, others created and rest may grow + ; default is false. You can change it with console command tree active true | false later + active_trees = false + ; the trees change execution time rate (in ms) + update_rate = 1000 + + ; allow the trees to grow. + ; DANGER + ; this option causes high network use on the order of + ; NumberOfTrees * NumberAvatars * 1000 / update_rate udp packets per second + allowGrow = false + + +[LL-Functions] + ; Maximum number of llListen events we allow over the entire region. + ; Set this to 0 to have no limit imposed + max_listens_per_region = 0 + + ; Maximum number of llListen events we allow per script + ; Set this to 0 to have no limit imposed. + max_listens_per_script = 0 + + ; Maximum number of external urls that scripts can set up in this simulator (e.g. via llRequestURL()) + max_external_urls_per_simulator = 256 + + ; Use size boxes instead of meshed prims, sculpts and mesh when calculating bounding boxes. + ; Speeds up calculations but can make them inaccurate, in some cases very inaccurate. + UseSimpleBoxesInGetBoundingBox = false + + ; Use llCastRay V3 if true. + ; Implements llCastRay similar but not identical to Second Life. + ; See http://wiki.secondlife.com/wiki/LlCastRay . + ; NEW + ; Meshes prims for good accuracy in ray hit detection, + ; handling basic and tortured prims, sculpts and meshes. + ; Uses ellipsoid, correctly sized avatar capsules. + ; Handles complex terrain, multi-prim objects and seated avatars. + ; Implements throttling and the status codes + ; RCERR_UNKNOWN and RCERR_CAST_TIME_EXCEEDED, + ; so LSL scripts need to handle these responses and RCERR_SIM_PERF_LOW. + ; WARNING + ; Can be faster on some servers and scenes, but slower on others, + ; compared to previous version of llCastRay in OpenSimulator. + ; Is in most cases considerably slower than llCastRay in Second Life. + ; Generates geometry meshes and can therefore use much system resources. + UseLlCastRayV3 = true + + ; Accepted calculation precision error in calculations in llCastRay V3 + FloatToleranceInLlCastRay = 0.00001 + + ; Accepted distance difference between duplicate hits in llCastRay V3 + FloatTolerance2InLlCastRay = 0.001 + + ; Detail level when rendering prims in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + PrimDetailLevelInLlCastRay = 1 + + ; Detail level when rendering sculpts in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + SculptDetailLevelInLlCastRay = 1 + + ; Detail level when rendering meshes in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + MeshDetailLevelInLlCastRay = 3 + + ; Detail level when rendering avatar capsules in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + AvatarDetailLevelInLlCastRay = 1 + + ; Maximum number of returned hits from llCastRay V3 + MaxHitsInLlCastRay = 16 + + ; Maximum number of returned hits per prim from llCastRay V3 + MaxHitsPerPrimInLlCastRay = 16 + + ; Maximum number of returned hits per object from llCastRay V3 + MaxHitsPerObjectInLlCastRay = 16 + + ; Report ray intersections with surfaces on exits from a prim as hits in llCastRay V3 if true + DetectExitHitsInLlCastRay = false + + ; Detect attachments in llCastRay V3 if true + DoAttachmentsInLlCastRay = false + + ; Throttle period length in ms before which all old llCastRay use is discarded in llCastRay V3 + ; The sum of AvailableTimeInMsPerRegionInLlCastRay and all AvailableTimeInMsPerAvatarInLlCastRay should not exceed this + ThrottleTimeInMsInLlCastRay = 200 + + ; Available time in ms for llCastRay per throttle period and 65536 m2 land area in llCastRay V3 + AvailableTimeInMsPerRegionInLlCastRay = 40 + + ; Available time in ms for llCastRay per throttle period and avatar when script in attachment or vehicle in llCastRay V3 + AvailableTimeInMsPerAvatarInLlCastRay = 10 + + ; Required available time in ms left to perform a new llCastRay in llCastRay V3 + RequiredAvailableTimeInMsInLlCastRay = 2 + + ; Maximum available time in ms possible in llCastRay V3, not to get too high values with varregions + MaximumAvailableTimeInMsInLlCastRay = 40 + + ; Use cached meshes in llCastRay V3 if true + ; Improves performance but uses more memory + UseMeshCacheInLlCastRay = true + + +[XEngine] + ; How many threads to keep alive even if nothing is happening + MinThreads = 2 + + ; How many threads to start at maximum load + MaxThreads = 100 + + ; Time a thread must be idle (in seconds) before it dies + IdleTimeout = 60 + + ; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest") + Priority = "Normal" + + ; Maximum number of events to queue for a script (excluding timers) + MaxScriptEventQueue = 3000 + + ; Stack size per thread created + ThreadStackSize = 262144 + + ; Set this to true to load each script into a separate + ; AppDomain. Setting this to false will load all script assemblies into the + ; current AppDomain, which will reduce the initial per-script memory overhead, + ; but deleted scripts stay inactive using memory. + ; Significantly improving script loading times. + ; However, setting this to false will also prevent script DLLs from being unloaded from memory if the script is deleted. + ; This may cause an OutOfMemory problem over time when avatars with scripted attachments move in and out of the region. + ; This may only be a problem if regions stay alive for a long time with lots of scripts added or edited. + ; At this time some mono versions seem to have problems with the true option, + ; so default is now false until a fix is found, to simply life of less technical skilled users. + ; + ; At least on my desktop, this seems to be what soaks up 4 - 5 times the memory. + AppDomainLoading = false + + ; Controls whether previously compiled scripts DLLs are deleted on sim restart. + ; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled. + ; It should be true on first run after updating opensim binary version + ; after first run you can change to false. + ; You can also set it to false and delete the script DLLs by hand + ; This does not delete cached scripts state. + DeleteScriptsOnStartup = true + + ; CompactMemOnLoad + ; forces calls to memory garbage collector before loading each script DLL during region startup. + ; Peak memory usage is reduced and region starts with a more compacted memory allocation. + ; But this costs a lot of time, so region load will take a lot longer. + ; it is more usefull if there are no previously compiled scripts DLLs (or DeleteScriptsOnStartup = true) + CompactMemOnLoad = true + + ; Controls whether scripts are stopped by aborting their threads externally (abort) + ; or by co-operative checks inserted by OpenSimulator into compiled script (co-op). + ; co-op will be more stable as aborting threads can cause instability. + ; abort was the default option in OpenSimulator 0.8 and before. + ; If this setting is changed between co-op and abort, then existing scripts will automatically be recompiled if necessary. + ; However, the setting change will not take affect until the next time you restart the simulator. + ; Setting changes will not affect state information stored for scripts. + ScriptStopStrategy = co-op + + ; Rate to poll for asynchronous command replies (ms) + ; currently unused + ;AsyncLLCommandLoopms = 50 + + ; Compile debug info (line numbers) into the script assemblies + CompileWithDebugInformation = true + + ; Interval (s) between background save of script states + SaveInterval = 120 + + ; Interval (s) between maintenance runs (0 = disable) + MaintenanceInterval = 10 + + ; Amount of time in milliseconds we will wait for an event to completely normally when a script stop is requested + ; before aborting the thread (such as when an object containing scripts is taken into inventory). + WaitForEventCompletionOnScriptStop = 1000 + + ; Minimum settable timer interval. Any timer setting less than this is + ; rounded up to this minimum interval. + MinTimerInterval = 0.1 + + ; Sensor settings + SensorMaxRange = 1024.0 + SensorMaxResults = 64 + + +[Groups] + ; Groups data is cached for this number of seconds before another request is made to the groups service + ; Set to 0 to disable the cache. + ; Default is 30 seconds + GroupsCacheTimeout = 30 + + +[PacketPool] + ;RecyclePackets = true + ;RecycleDataBlocks = true + + ; If true, then the basic packet objects used to receive data are also recycled, not just the LLUDP packets. + ; This reduces data churn + RecycleBaseUDPPackets = true + + +[InterestManagement] + ; This section controls how state updates are prioritized for each client + ; Valid values are BestAvatarResponsiveness, Time, Distance, + ; SimpleAngularDistance, and FrontBack + UpdatePrioritizationScheme = BestAvatarResponsiveness + ReprioritizationEnabled = true + ReprioritizationInterval = 2000.0 + RootReprioritizationDistance = 10.0 + ChildReprioritizationDistance = 20.0 + + ; TEST OPTION KEEP AS FALSE + ; if true, don't send object updates if outside view range + ObjectsCullingByDistance = false + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in the same region + ; Updates will always be sent to the avatar that the update addresses and if av velocity is effectively zero (to prevent drift due to missing updates). + ; n > 1 will reduce UDP traffic but will lead to laggier movement observed in other avatars. + RootTerseUpdatePeriod = 0 + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in another region + ; n > 1 will reduce UDP traffic but may lead to laggier movement observed in other avatars, though values up to 4 may not generate a noticeable effect. + ChildTerseUpdatePeriod = 0 + + ; Send an update to clients if the difference from the last sent avatar position is greater than this tolerance + RootPositionUpdateTolerance = 0.05 + + ; Send an update to clients if the euclidian difference from the last sent avatar rotation is greater than this tolerance + RootRotationUpdateTolerance = 0.1 + + ; Send an update to clients if the difference from the last sent avatar velocity is greater than this tolerance + RootVelocityUpdateTolerance = 0.001 + + +[Statistics] + ; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames + ; to include in the averaging calculations + NumberOfFrames=10 + + +[Terrain] + ; If 'true' each avatar is only sent terrain patches within their view distance + ; This also changes the region terrain loading from 'lawn mower' to ordered around + ; the avatar outward. + SendTerrainUpdatesByViewDistance = True + + +[LandManagement] + ; When editing terrain or objects, parcel layer info is updated in the viewer. + ; This can be expensive for large regions. If this variable is 'true', only the + ; parcel layer data around the area of interest is sent. The parcel layer info + ; is sent for 'ParcelLayerViewDistance' around the interest point. + ; If 'ParcelLayerViewDistance' is >= 128, the operation for legacy sized regions + ; will be what it has always been (send the whole region's parcel layer info). + ; Other parcel updates (login, changing parcel ownership, ...) will still send + ; whole region. + LimitParcelLayerUpdateDistance = true + ParcelLayerViewDistance = 1024 + + +;; If you are using a simian grid frontend you can enable +;; this module to upload tile images for the mapping fn +;; +[SimianGridMaptiles] + RefreshTime = 3600 + + +;; +;; These are defaults that are overwritten below in [Architecture]. +;; These defaults allow OpenSim to work out of the box with +;; zero configuration +;; +[AssetService] + ; Disable this to prevent the default asset set from being inserted into the + ; asset store each time the region starts + AssetLoaderEnabled = false + + +[AutoBackupModule] + ;; default is module is disabled at the top level + AutoBackupModuleEnabled = false + + +[ServiceThrottle] + ;; Default time interval (in ms) for the throttle service thread to wake up + Interval = 5000 + + +[Materials] + MaxMaterialsPerTransaction = 50 diff --git a/bin/config-include/SimDefault.ini b/bin/config-include/SimDefault.ini new file mode 100644 index 0000000..3f2e713 --- /dev/null +++ b/bin/config-include/SimDefault.ini @@ -0,0 +1,884 @@ +[Startup] + ; ## + ; ## SYSTEM + ; ## + + ; Sets the method that OpenSim will use to fire asynchronous + ; events. Valid values are UnsafeQueueUserWorkItem, + ; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread. + ; + ; SmartThreadPool is reported to work well on Mono/Linux, but + ; UnsafeQueueUserWorkItem has been benchmarked with better + ; performance on .NET/Windows + ; + ; UnsafeQueueUserWorkItem refers to the fact that the code creating the event could elevate its security + ; privileges. However, as calling code is trusted anyway this is safe (if you set + ; TrustedBinaries = true in the [XEngine] section then you already have to trust that incoming code for other reasons). + async_call_method = SmartThreadPool + + ; Max threads to allocate on the FireAndForget thread pool + ; when running with the SmartThreadPool option above + MaxPoolThreads = 300 + + ; Allow certain jobs to be run consecutively in a job engine rather than always concurrently. + ; This improves performance in regions with large numbers of connections (in the hundreds). + JobEngineEnabled = true + + ; Maximum number of position, rotation and scale changes for each prim that the simulator will store for later undos + ; Increasing this number will increase memory usage. + MaxPrimUndos = 20 + + ; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum + ; This can be overridden in the region config file. + ClampPrimSize = false + + ; If a prim is loaded from an external source, clamp it to Z = 0 if Z is negative. + ClampNegativeZ = false + + ; Allow scripts to keep running when they cross region boundaries, rather than being restarted. State is reloaded on the destination region. + ; This only applies when crossing to a region running in a different simulator. + ; For crossings where the regions are on the same simulator the script is always kept running. + AllowScriptCrossing = true + + ; Main Frame time + ; This defines the rate of several simulation events. + ; Default value should meet most needs. + ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. + ; It should not be less than the physics engine step time. + ; Being a integer multiple of it may reduce some jitter in reported physics FPS. + ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same + FrameTime = 0.0909 + + ; Send scheduled updates to objects in the scene + ; This must be a whole number + UpdateObjectsEveryNFrames = 1 + + ; Send position/velocity, etc. updates to agents in the scene + ; This must be a whole number + UpdateAgentsEveryNFrames = 1 + + ; Apply pending forces from physics calculations to an entity. + ; This must be a whole number + UpdateEntityMovementEveryNFrames = 1 + + ; Send coarse location updates to viewers. In a classic viewer, this updates the minimap. + ; This must be a whole number + UpdateCoarseLocationsEveryNFrames = 50 + + ; Physics simulation execution or syncronization, acording to engine. Should be 1 + ; This must be a whole number + UpdatePhysicsEveryNFrames = 1 + + ; Send out the on frame event to modules and other listeners. This should probably never deviate from 1. + ; This must be a whole number + UpdateEventsEveryNFrames = 1 + + ; Send terrain updates to viewers + ; This must be a whole number + UpdateTerrainEveryNFrames = 50 + + ; Persitently store any objects which meet the PRIM STORAGE criteria + ; This must be a whole number + UpdateStorageEveryNFrames = 200 + + ; Clean up temp on rez objects. + ; This must be a whole number + UpdateTempCleaningEveryNSeconds = 180 + + ; ## + ; ## PRIM STORAGE + ; ## + + ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to + ; prevent frequently changing objects from heavily loading the region data store. + ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep. + ; + ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds + MinimumTimeBeforePersistenceConsidered = 60 + ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago + MaximumTimeBeforePersistenceConsidered = 600 + + ; ## + ; ## PHYSICS + ; ## + + ; Select a mesher here. + ; + ; Meshmerizer properly handles complex prims by using triangle meshes. + ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way + ; + ; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports + ; Usually this is only a box + + ;meshing = Meshmerizer + ;meshing = ZeroMesher + ;; select ubODEMeshmerizer only with ubOde physics engine + meshing = ubODEMeshmerizer + + ; ubODE and OpenDynamicsEngine does allocate a lot of memory on stack. On linux you may need to increase its limit + ; script opensim-ode-sh starts opensim setting that limit. You may need to increase it even more on large regions + ; edit the line ulimit -s 262144, and change this last value + + ; if you use Meshmerizer and want sculpt map collisions, setting this to + ; to true will store decoded sculpt maps in a special folder in your bin + ; folder, which can reduce startup times by reducing asset requests. Some + ; versions of mono dont work well when reading the cache files, so set this + ; to false if you have compatibility problems. + CacheSculptMaps = true + + ;; BulletSim is the default physics engine. It provides the best performance and most functionality. + ;; BulletSim supports varregions. + ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before. + ;; It continues to provide a workable physics implementation. It does not currently support varregions. + ;; basicphysics effectively does not model physics at all, making all objects phantom. + ;; Default is BulletSim + ;physics = BulletSim + ;physics = modified_BulletX + ;physics = OpenDynamicsEngine + ;physics = basicphysics + ;physics = POS + ;; alternative OpenDynamicsEngine engine. ubODEMeshmerizer meshing above MUST be selected also + physics = ubODE + + ; ## + ; ## SCRIPT ENGINE + ; ## + + ;; Default script engine to use. Currently, we only have XEngine + DefaultScriptEngine = "XEngine" + + ; Image decoding. Use CSJ2K for layer boundary decoding if true, + ; OpenJPEG if false + ; UseCSJ2K = true + + +[Map] + ; Map tile options. + ; If true, then maptiles are generated using the MapImageModule below. + ; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overridden + ; in individual region config file(s). If you do not want to upload map tiles at all, then you will need + ; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/ + GenerateMaptiles = true + + ;WorldMapModule = "WorldMap" + + ; The module to use in order to generate map images. + ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can + ; generate better images. + MapImageModule = "MapImageModule" + + ; World map blacklist timeout in seconds + ;BlacklistTimeout = 600 + + ; Refresh (in seconds) the map tile periodically + MaptileRefresh = 0 + + ; If not generating maptiles, use this static texture asset ID + ;MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + + ; Draw objects on maptile. This step might take a long time if you've got a large number of + ; objects, so you can turn it off here if you'd like. + DrawPrimOnMapTile = true + + ; Use terrain texture for maptiles if true, use shaded green if false + TextureOnMapTile = true + + ; Texture prims + TexturePrims = true + + ; Only texture prims that have a diagonal size greater than this number + TexturePrimSize = 48 + + ; Attempt to render meshes and sculpties on the map + RenderMeshes = false + + ;UseAntiAliasing = true + + +[Network] + ; OpenSim can send multiple simultaneous requests for services such as asset + ; retrieval. However, some versions of mono appear to hang when there are too + ; many simultaneous requests, default is 30 and is currently applied only to assets + ;MaxRequestConcurrency = 30 + + +[ClientStack.LindenUDP] + ; The client socket receive buffer size determines how many + ; incoming requests we can process; the default on .NET is 8192 + ; which is about 2 4k-sized UDP datagrams. On mono this is + ; whatever the underlying operating system has as default; for + ; example, ubuntu 8.04 or SLES11 have about 111k, which is about + ; 27 4k-sized UDP datagrams (on linux platforms you can [as root] + ; do "sysctl net.core.rmem_default" to find out what your system + ; uses a default socket receive buffer size. + ; + ; client_socket_rcvbuf_size allows you to specify the receive + ; buffer size LLUDPServer should use. NOTE: this will be limited + ; by the system's settings for the maximum client receive buffer + ; size (on linux systems you can set that with "sysctl -w + ; net.core.rmem_max=X") + ; + ;client_socket_rcvbuf_size = 8388608 + + ; Maximum outbound bytes per second for a single scene. This can be used to + ; throttle total outbound UDP traffic for a simulator. The default value is + ; 0, meaning no throttling at the scene level. The example given here is + ; 20 megabits + ; + ;scene_throttle_max_bps = 2500000 + + ; Maximum bytes per second to send to any single client. This will override + ; the user's viewer preference settings. The default value is 0, meaning no + ; aggregate throttling on clients (only per-category throttling). The + ; example given here is 1.5 megabits + ; + ;client_throttle_max_bps = 187500 + + ; Minimum bytes per second to send to any single client as a result of + ; adaptive throttling. Viewer preferences set to a lower number will + ; override the settin. The example given here ensures that adaptive + ; throttling will never decrease per client bandwidth below 256 kbps. + ; + ;adaptive_throttle_min_bps = 32000 + + ; Adaptive throttling attempts to limit network overload when multiple + ; clients login by starting each connection more slowly. Disabled by + ; default + ; + enable_adaptive_throttles = false + + ; Per-client bytes per second rates for the various throttle categories. + ; These are default values that will be overridden by clients. These + ; defaults are approximately equivalent to the throttles set by the Imprudence + ; viewer when maximum bandwidth is set to 350kbps + + ;resend_default = 6625 + ;land_default = 9125 + ;wind_default = 1750 + ;cloud_default = 1750 + ;task_default = 18500 + ;texture_default = 18500 + ;asset_default = 10500 + + ; Configures how ObjectUpdates are aggregated. These numbers + ; do not literally mean how many updates will be put in each + ; packet that goes over the wire, as packets are + ; automatically split on a 1400 byte boundary. These control + ; the balance between responsiveness of interest list updates + ; and total throughput. Higher numbers will ensure more full- + ; sized packets and faster sending of data, but more delay in + ; updating interest lists + ; + ;PrimUpdatesPerCallback = 100 + + ; TextureSendLimit determines how many packets will be put on + ; the outgoing queue each cycle. Like the settings above, this + ; is a balance between responsiveness to priority updates and + ; total throughput. Higher numbers will give a better + ; throughput at the cost of reduced responsiveness to client + ; priority changes or transfer aborts + ; + ;TextureSendLimit = 20 + + ; CannibalizeTextureRate allows bandwidth to be moved from the + ; UDP texture throttle to the task throttle. Since most viewers + ; use HTTP textures, this provides a means of using what is largely + ; unused bandwidth in the total throttle. The value is the proportion + ; of the texture rate to move to the task queue. It must be between + ; 0.0 (none of the bandwidth is cannibalized) and 0.9 (90% of the + ; bandwidth is grabbed) + ; + ; CannibalizeTextureRate = 0.5 + + ; The time to wait before disconecting an unresponsive client. + ; The time is in seconds. The default is one minute + ; + ;AckTimeout = 60 + + ; The time to wait before disconecting an unresponsive paused client. + ; A client can be paused when the file selection dialog is open during file upload. + ; This gives extra time to find files via the dialog but will still disconnect if + ; the client crashes or loses its network connection + ; The time is in seconds. The default is five minutes. + ; + ;PausedAckTimeout = 300 + + +[Appearance] + ; Persist avatar baked textures + ; Persisting baked textures can speed up login and region border + ; crossings especially with large numbers of users, though it + ; will store potentially large numbers of textures in your asset + ; database + PersistBakedTextures = false + + ; Control the delay before appearance is sent to other avatars and + ; saved in the avatar service. Attempts to limit the impact caused + ; by the very chatty dialog that sets appearance when an avatar + ; logs in or teleports into a region; values are in seconds + DelayBeforeAppearanceSave = 5 + DelayBeforeAppearanceSend = 2 + + ; If true, avatar appearance information is resent to other avatars in the simulator every 60 seconds. + ; This may help with some situations where avatars are persistently grey, though it will not help + ; in other situations (e.g. appearance baking failures where the avatar only appears as a cloud to others). + ResendAppearanceUpdates = false + + ; Turning this on responds to CachedTexture packets to possibly avoid rebaking the avatar + ; on every login + ReuseTextures = false + + +[Attachments] + ; Controls the number of milliseconds that are slept per 100 prims rezzed in attachments + ; Experimental setting to control CPU spiking when avatars with many attachments login/change outfit + ; or when multiple avatars with medium level attachments login/change outfit simultaneously. + ; If 0 then no throttling is performed. + ThrottlePer100PrimsRezzed = 0 + + +[Textures] + ; If true, textures generated dynamically (i.e. through osSetDynamicTextureData() and similar OSSL functions) are reused where possible + ; Chiefly, reuse occurs if a texture has already been generated with identical data and settings, and that texture contains no dynamic components + ; (e.g. images pulled from an external HTTP address). + ; Reusing previously generated textures results in a much faster update on the viewer but may cause issues if the viewer didn't receive all resolutions of the texture. + ; Currently, it will also increase asset cache use since temporary dynamic textures are no longer deleted. + ; Hence, currently considered experimental. + ; Default is false. + ReuseDynamicTextures = false + + ; If true, then textures generated dynamically that have a low data size relative to their pixel size are not reused + ; This is to workaround an apparent LL 3.3.4 and earlier viewer bug where such textures are not redisplayed properly when pulled from the viewer cache. + ; Only set this to true if you are sure that all the viewers using your simulator will not suffer from this problem. + ; This setting only has an affect is ReuseDynamicTextures = true + ; Default is false + ReuseDynamicLowDataTextures = false + + +[ODEPhysicsSettings] + ; ## + ; ## Physics stats settings ( most ignored by ubOde ) + ; + + ; If collect_stats is enabled, then extra stat information is collected which is accessible via the MonitorModule + ; (see http://opensimulator.org/wiki/Monitoring_Module for more details). + collect_stats = false + + ; ## + ; ## Physics logging settings - logfiles are saved to *.DIF files + ; ## + + ; default is false + ;physics_logging = true + ;; every n simulation iterations, the physics snapshot file is updated + ;physics_logging_interval = 50 + ;; append to existing physics logfile, or overwrite existing logfiles? + ;physics_logging_append_existing_logfile = true + + ;## + ;## World Settings + ;## + + ; World Step size. + ; with legacy ODE this value needs to be close to 0.02s + ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load + ; you will need to test acording to you needs + ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS + world_stepsize = 0.01818 + ; number of iterations of constrains solver, higher should improve results + ; up to a point where acumulated math errors eliminate the improvement + ; more steps may increase CPU load. No real gain in changing + world_solver_iterations = 10 + + ;Spaces level settings. Affects memory consumption vs Collider CPU time for avatar and physical prim + ; defines spaces partition cells min and max sizes == 2^value + world_hashspace_level_low = -5 + world_hashSpace_level_high = 12 + + meters_in_small_space = 29.9 + + + ; ## + ; ## Contact properties. (the stuff that happens when things come in contact with each other) + ; ## + + ; surface layer around geometries other geometries can sink into before generating a contact + world_contact_surface_layer = 0.001 + + ; Filtering collisions helps keep things stable physics wise, but sometimes + ; it can be overzealous. If you notice bouncing, chances are it's that. + filter_collisions = false + + ; Non Moving Terrain Contact (avatar isn't moving) + nm_terraincontact_friction = 255.0 + nm_terraincontact_bounce = 0.1 + nm_terraincontact_erp = 0.1025 + + ; Moving Terrain Contact (avatar is moving) + m_terraincontact_friction = 75.0 + m_terraincontact_bounce = 0.1 + m_terrainContact_erp = 0.05025 + + ; Moving Avatar to object Contact + m_avatarobjectcontact_friction = 75.0 + m_avatarobjectcontact_bounce = 0.1 + + ; Object to Object Contact and Non-Moving Avatar to object + objectcontact_friction = 250.0 + objectcontact_bounce = 0.2 + + ; ## + ; ## Avatar Control + ; ## + + ; PID Controller Settings. These affect the math that causes the avatar to reach the + ; desired velocity + ; See http://en.wikipedia.org/wiki/PID_controller + + av_pid_derivative = 2200.0 + av_pid_proportional = 900.0 + + ; specifies if the capsule should be tilted (=true; old compatibility mode) + ; or straight up-and-down (=false; better and more consistent physics behavior) + av_capsule_tilted = false + + ; Movement. Smaller is faster. + + ; speed of movement with Always Run off + av_movement_divisor_walk = 1.3 + + ; speed of movement with Always Run on + av_movement_divisor_run = 0.8 + + ; When the avatar flies, it will be moved up by this amount off the ground (in meters) + minimum_ground_flight_offset = 3.0 + + ; Plant avatar. This reduces the effect of physical contacts with the avatar. + ; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive. + ; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active + ; will lock the avatar in place + av_planted = false + + ; No Avatar Avatar Collissions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment + av_av_collisions_off = false + + ; ## + ; ## Object options + ; ## + + ; amount of ODE steps where object is non moving for ODE to automatically put it to sleep + body_frames_auto_disable = 20 + + ; used to control llMove2Target + body_pid_derivative = 35 + body_pid_gain = 25 + + ; maximum number of contact points to generate per collision + contacts_per_collision = 80 + + ; start throttling the object updates if object comes in contact with 3 or more other objects + geom_contactpoints_start_throttling = 3 + + ; send 1 update for every x updates below when throttled + geom_updates_before_throttled_update = 15 + + ; ## + ; ## Sculpted Prim settings + ; ## + + ; Do we want to mesh sculpted prim to collide like they look? + ; If you are seeing sculpt texture decode problems + ; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ; then you might want to try setting this to false. + mesh_sculpted_prim = true + + ; number^2 non-physical level of detail of the sculpt texture. 32x32 - 1024 verticies + mesh_lod = 32 + + ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies + mesh_physical_lod = 16 + + ; ## + ; ## additional meshing options + ; ## + + ; Physics needs to create internal meshs (or convert the object meshs or scultps) + ; for all prims except simple boxes and spheres. + + ; collisions of small objects againts larger ones can have a increased CPU load cost + ; so this are represented by a simple BOX + ; if all their scale dimensions are lower or equal to this option. Default is 0.1m + ; (ubOde only) + ; MinSizeToMeshmerize = 0.1 + + +[BulletSim] + ; There are two bullet physics libraries, bulletunmanaged is the default and is a + ; native c++ dll bulletxna is a managed C# dll. They have comparible functionality + ; but the c++ one is much faster. + BulletEngine = "bulletunmanaged" + ; BulletEngine = "bulletxna" + + ; BulletSim can run on its own thread independent of the simulator's heartbeat + ; thread. Enabling this will not let the physics engine slow down avatar movement, etc. + UseSeparatePhysicsThread = false + + ; Terrain implementation can use either Bullet's heightField or BulletSim can build + ; a mesh. 0=heightField, 1=mesh + TerrainImplementation = 0 + ; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield + ; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher + ; magnifications use lots of memory. + TerrainMeshMagnification = 2 + + ; Should avatars collide with each other? + AvatarToAvatarCollisionsByDefault = true + + ; Default linkset implmentation + ; 'Constraint' uses physics constraints to hold linkset together. 'Compound' + ; builds a compound shape from the children shapes to create a single physical + ; shape. 'Compound' uses a lot less CPU time. + LinkImplementation = 1 ; 0=constraint, 1=compound + + ; If 'true', offset a linkset's origin based on mass of linkset parts. + LinksetOffsetCenterOfMass = false + + ; If 'true', turn scuplties into meshes + MeshSculptedPrim = true + + ; If 'true', force simple prims (box and sphere) to be meshed + ; If 'false', the Bullet native special case shape is used for square rectangles + ; and even dimensioned spheres. + ForceSimplePrimMeshing = false + + ; If 'true', when creating meshes, remove all triangles that have two equal vertexes. + ; Happens often in sculpties. If turned off, there will be some doorways + ; that cannot be walked through. + ShouldRemoveZeroWidthTriangles = true + + ; If 'true', use convex hull definition in mesh asset if present. + ShouldUseAssetHulls = true + + ; If there are thousands of physical objects, these maximums should be increased. + MaxCollisionsPerFrame = 2048 + MaxUpdatesPerFrame = 8192 + + ; Detailed physics debug logging. Very verbose. + PhysicsLoggingEnabled = False + PhysicsLoggingDir = "." + VehicleLoggingEnabled = False + + +[Sun] + ; send a Sun update every update_interval # of frames. A lower number will + ; make for smoother sun transition at the cost of network + ;update_interval = 100 + + +[Wind] + ; How often should wind be updated, as a function of world frames. Approximately 50 frames a second + wind_update_rate = 150 + + ; The Default Wind Plugin to load + wind_plugin = SimpleRandomWind + + +[Cloud] + ; update interval for the cloud cover data returned by llCloud(). + ; default is 1000 + cloud_update_rate = 1000 + + +[Trees] + ; active_trees allows module to change its trees in time. + ; some will be deleted, others created and rest may grow + ; default is false. You can change it with console command tree active true | false later + active_trees = false + ; the trees change execution time rate (in ms) + update_rate = 1000 + + ; allow the trees to grow. + ; DANGER + ; this option causes high network use on the order of + ; NumberOfTrees * NumberAvatars * 1000 / update_rate udp packets per second + allowGrow = false + + +[LL-Functions] + ; Maximum number of llListen events we allow over the entire region. + ; Set this to 0 to have no limit imposed + max_listens_per_region = 1000 + + ; Maximum number of llListen events we allow per script + ; Set this to 0 to have no limit imposed. + max_listens_per_script = 64 + + ; Maximum number of external urls that scripts can set up in this simulator (e.g. via llRequestURL()) + max_external_urls_per_simulator = 100 + + ; Use size boxes instead of meshed prims, sculpts and mesh when calculating bounding boxes. + ; Speeds up calculations but can make them inaccurate, in some cases very inaccurate. + UseSimpleBoxesInGetBoundingBox = false + + ; Use llCastRay V3 if true. + ; Implements llCastRay similar but not identical to Second Life. + ; See http://wiki.secondlife.com/wiki/LlCastRay . + ; NEW + ; Meshes prims for good accuracy in ray hit detection, + ; handling basic and tortured prims, sculpts and meshes. + ; Uses ellipsoid, correctly sized avatar capsules. + ; Handles complex terrain, multi-prim objects and seated avatars. + ; Implements throttling and the status codes + ; RCERR_UNKNOWN and RCERR_CAST_TIME_EXCEEDED, + ; so LSL scripts need to handle these responses and RCERR_SIM_PERF_LOW. + ; WARNING + ; Can be faster on some servers and scenes, but slower on others, + ; compared to previous version of llCastRay in OpenSimulator. + ; Is in most cases considerably slower than llCastRay in Second Life. + ; Generates geometry meshes and can therefore use much system resources. + UseLlCastRayV3 = false + + ; Accepted calculation precision error in calculations in llCastRay V3 + FloatToleranceInLlCastRay = 0.00001 + + ; Accepted distance difference between duplicate hits in llCastRay V3 + FloatTolerance2InLlCastRay = 0.001 + + ; Detail level when rendering prims in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + PrimDetailLevelInLlCastRay = 1 + + ; Detail level when rendering sculpts in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + SculptDetailLevelInLlCastRay = 1 + + ; Detail level when rendering meshes in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + MeshDetailLevelInLlCastRay = 3 + + ; Detail level when rendering avatar capsules in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + AvatarDetailLevelInLlCastRay = 1 + + ; Maximum number of returned hits from llCastRay V3 + MaxHitsInLlCastRay = 16 + + ; Maximum number of returned hits per prim from llCastRay V3 + MaxHitsPerPrimInLlCastRay = 16 + + ; Maximum number of returned hits per object from llCastRay V3 + MaxHitsPerObjectInLlCastRay = 16 + + ; Report ray intersections with surfaces on exits from a prim as hits in llCastRay V3 if true + DetectExitHitsInLlCastRay = false + + ; Detect attachments in llCastRay V3 if true + DoAttachmentsInLlCastRay = false + + ; Throttle period length in ms before which all old llCastRay use is discarded in llCastRay V3 + ; The sum of AvailableTimeInMsPerRegionInLlCastRay and all AvailableTimeInMsPerAvatarInLlCastRay should not exceed this + ThrottleTimeInMsInLlCastRay = 200 + + ; Available time in ms for llCastRay per throttle period and 65536 m2 land area in llCastRay V3 + AvailableTimeInMsPerRegionInLlCastRay = 40 + + ; Available time in ms for llCastRay per throttle period and avatar when script in attachment or vehicle in llCastRay V3 + AvailableTimeInMsPerAvatarInLlCastRay = 10 + + ; Required available time in ms left to perform a new llCastRay in llCastRay V3 + RequiredAvailableTimeInMsInLlCastRay = 2 + + ; Maximum available time in ms possible in llCastRay V3, not to get too high values with varregions + MaximumAvailableTimeInMsInLlCastRay = 40 + + ; Use cached meshes in llCastRay V3 if true + ; Improves performance but uses more memory + UseMeshCacheInLlCastRay = true + + +[XEngine] + ; How many threads to keep alive even if nothing is happening + MinThreads = 2 + + ; How many threads to start at maximum load + MaxThreads = 100 + + ; Time a thread must be idle (in seconds) before it dies + IdleTimeout = 60 + + ; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest") + Priority = "BelowNormal" + + ; Maximum number of events to queue for a script (excluding timers) + MaxScriptEventQueue = 300 + + ; Stack size per thread created + ThreadStackSize = 262144 + + ; Set this to true to load each script into a separate + ; AppDomain. Setting this to false will load all script assemblies into the + ; current AppDomain, which will reduce the initial per-script memory overhead, + ; but deleted scripts stay inactive using memory. + ; Significantly improving script loading times. + ; However, setting this to false will also prevent script DLLs from being unloaded from memory if the script is deleted. + ; This may cause an OutOfMemory problem over time when avatars with scripted attachments move in and out of the region. + ; This may only be a problem if regions stay alive for a long time with lots of scripts added or edited. + ; At this time some mono versions seem to have problems with the true option, + ; so default is now false until a fix is found, to simply life of less technical skilled users. + AppDomainLoading = false + + ; Controls whether previously compiled scripts DLLs are deleted on sim restart. + ; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled. + ; It should be true on first run after updating opensim binary version + ; after first run you can change to false. + ; You can also set it to false and delete the script DLLs by hand + ; This does not delete cached scripts state. + DeleteScriptsOnStartup = true + + ; CompactMemOnLoad + ; forces calls to memory garbage collector before loading each script DLL during region startup. + ; Peak memory usage is reduced and region starts with a more compacted memory allocation. + ; But this costs a lot of time, so region load will take a lot longer. + ; it is more usefull if there are no previously compiled scripts DLLs (or DeleteScriptsOnStartup = true) + ; CompactMemOnLoad = false + + ; Controls whether scripts are stopped by aborting their threads externally (abort) + ; or by co-operative checks inserted by OpenSimulator into compiled script (co-op). + ; co-op will be more stable as aborting threads can cause instability. + ; abort was the default option in OpenSimulator 0.8 and before. + ; If this setting is changed between co-op and abort, then existing scripts will automatically be recompiled if necessary. + ; However, the setting change will not take affect until the next time you restart the simulator. + ; Setting changes will not affect state information stored for scripts. + ScriptStopStrategy = co-op + + ; Rate to poll for asynchronous command replies (ms) + ; currently unused + ;AsyncLLCommandLoopms = 50 + + ; Compile debug info (line numbers) into the script assemblies + CompileWithDebugInformation = true + + ; Interval (s) between background save of script states + SaveInterval = 120 + + ; Interval (s) between maintenance runs (0 = disable) + MaintenanceInterval = 10 + + ; Amount of time in milliseconds we will wait for an event to completely normally when a script stop is requested + ; before aborting the thread (such as when an object containing scripts is taken into inventory). + WaitForEventCompletionOnScriptStop = 1000 + + ; Minimum settable timer interval. Any timer setting less than this is + ; rounded up to this minimum interval. + MinTimerInterval = 0.5 + + ; Sensor settings + SensorMaxRange = 96.0 + SensorMaxResults = 16 + + +[Groups] + ; Groups data is cached for this number of seconds before another request is made to the groups service + ; Set to 0 to disable the cache. + ; Default is 30 seconds + GroupsCacheTimeout = 30 + + +[PacketPool] + ;RecyclePackets = true + ;RecycleDataBlocks = true + + ; If true, then the basic packet objects used to receive data are also recycled, not just the LLUDP packets. + ; This reduces data churn + RecycleBaseUDPPackets = true + + +[InterestManagement] + ; This section controls how state updates are prioritized for each client + ; Valid values are BestAvatarResponsiveness, Time, Distance, + ; SimpleAngularDistance, and FrontBack + UpdatePrioritizationScheme = BestAvatarResponsiveness + ReprioritizationEnabled = true + ReprioritizationInterval = 2000.0 + RootReprioritizationDistance = 10.0 + ChildReprioritizationDistance = 20.0 + + ; TEST OPTION KEEP AS FALSE + ; if true, don't send object updates if outside view range + ObjectsCullingByDistance = false + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in the same region + ; Updates will always be sent to the avatar that the update addresses and if av velocity is effectively zero (to prevent drift due to missing updates). + ; n > 1 will reduce UDP traffic but will lead to laggier movement observed in other avatars. + RootTerseUpdatePeriod = 0 + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in another region + ; n > 1 will reduce UDP traffic but may lead to laggier movement observed in other avatars, though values up to 4 may not generate a noticeable effect. + ChildTerseUpdatePeriod = 0 + + ; Send an update to clients if the difference from the last sent avatar position is greater than this tolerance + RootPositionUpdateTolerance = 0.05 + + ; Send an update to clients if the euclidian difference from the last sent avatar rotation is greater than this tolerance + RootRotationUpdateTolerance = 0.1 + + ; Send an update to clients if the difference from the last sent avatar velocity is greater than this tolerance + RootVelocityUpdateTolerance = 0.001 + + +[Statistics] + ; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames + ; to include in the averaging calculations + NumberOfFrames=10 + + +[Terrain] + ; If 'true' each avatar is only sent terrain patches within their view distance + ; This also changes the region terrain loading from 'lawn mower' to ordered around + ; the avatar outward. + SendTerrainUpdatesByViewDistance = True + + +[LandManagement] + ; When editing terrain or objects, parcel layer info is updated in the viewer. + ; This can be expensive for large regions. If this variable is 'true', only the + ; parcel layer data around the area of interest is sent. The parcel layer info + ; is sent for 'ParcelLayerViewDistance' around the interest point. + ; If 'ParcelLayerViewDistance' is >= 128, the operation for legacy sized regions + ; will be what it has always been (send the whole region's parcel layer info). + ; Other parcel updates (login, changing parcel ownership, ...) will still send + ; whole region. + LimitParcelLayerUpdateDistance = true + ParcelLayerViewDistance = 128 + + +;; If you are using a simian grid frontend you can enable +;; this module to upload tile images for the mapping fn +;; +[SimianGridMaptiles] + RefreshTime = 3600 + + +;; +;; These are defaults that are overwritten below in [Architecture]. +;; These defaults allow OpenSim to work out of the box with +;; zero configuration +;; +[AssetService] + ; Disable this to prevent the default asset set from being inserted into the + ; asset store each time the region starts + AssetLoaderEnabled = true + + +[AutoBackupModule] + ;; default is module is disabled at the top level + AutoBackupModuleEnabled = false + + +[ServiceThrottle] + ;; Default time interval (in ms) for the throttle service thread to wake up + Interval = 5000 + + +[Materials] + MaxMaterialsPerTransaction = 50 diff --git a/bin/config-include/SimFast.ini b/bin/config-include/SimFast.ini new file mode 100644 index 0000000..40d3cc1 --- /dev/null +++ b/bin/config-include/SimFast.ini @@ -0,0 +1,884 @@ +[Startup] + ; ## + ; ## SYSTEM + ; ## + + ; Sets the method that OpenSim will use to fire asynchronous + ; events. Valid values are UnsafeQueueUserWorkItem, + ; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread. + ; + ; SmartThreadPool is reported to work well on Mono/Linux, but + ; UnsafeQueueUserWorkItem has been benchmarked with better + ; performance on .NET/Windows + ; + ; UnsafeQueueUserWorkItem refers to the fact that the code creating the event could elevate its security + ; privileges. However, as calling code is trusted anyway this is safe (if you set + ; TrustedBinaries = true in the [XEngine] section then you already have to trust that incoming code for other reasons). + async_call_method = SmartThreadPool + + ; Max threads to allocate on the FireAndForget thread pool + ; when running with the SmartThreadPool option above + MaxPoolThreads = 300 + + ; Allow certain jobs to be run consecutively in a job engine rather than always concurrently. + ; This improves performance in regions with large numbers of connections (in the hundreds). + JobEngineEnabled = true + + ; Maximum number of position, rotation and scale changes for each prim that the simulator will store for later undos + ; Increasing this number will increase memory usage. + MaxPrimUndos = 42 + + ; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum + ; This can be overridden in the region config file. + ClampPrimSize = true + + ; If a prim is loaded from an external source, clamp it to Z = 0 if Z is negative. + ClampNegativeZ = true + + ; Allow scripts to keep running when they cross region boundaries, rather than being restarted. State is reloaded on the destination region. + ; This only applies when crossing to a region running in a different simulator. + ; For crossings where the regions are on the same simulator the script is always kept running. + AllowScriptCrossing = true + + ; Main Frame time + ; This defines the rate of several simulation events. + ; Default value should meet most needs. + ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. + ; It should not be less than the physics engine step time. + ; Being a integer multiple of it may reduce some jitter in reported physics FPS. + ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same + FrameTime = 0.0909 + + ; Send scheduled updates to objects in the scene + ; This must be a whole number + UpdateObjectsEveryNFrames = 1 + + ; Send position/velocity, etc. updates to agents in the scene + ; This must be a whole number + UpdateAgentsEveryNFrames = 1 + + ; Apply pending forces from physics calculations to an entity. + ; This must be a whole number + UpdateEntityMovementEveryNFrames = 1 + + ; Send coarse location updates to viewers. In a classic viewer, this updates the minimap. + ; This must be a whole number + UpdateCoarseLocationsEveryNFrames = 50 + + ; Physics simulation execution or syncronization, acording to engine. Should be 1 + ; This must be a whole number + UpdatePhysicsEveryNFrames = 1 + + ; Send out the on frame event to modules and other listeners. This should probably never deviate from 1. + ; This must be a whole number + UpdateEventsEveryNFrames = 1 + + ; Send terrain updates to viewers + ; This must be a whole number + UpdateTerrainEveryNFrames = 50 + + ; Persitently store any objects which meet the PRIM STORAGE criteria + ; This must be a whole number + UpdateStorageEveryNFrames = 200 + + ; Clean up temp on rez objects. + ; This must be a whole number + UpdateTempCleaningEveryNSeconds = 180 + + ; ## + ; ## PRIM STORAGE + ; ## + + ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to + ; prevent frequently changing objects from heavily loading the region data store. + ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep. + ; + ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds + MinimumTimeBeforePersistenceConsidered = 60 + ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago + MaximumTimeBeforePersistenceConsidered = 600 + + ; ## + ; ## PHYSICS + ; ## + + ; Select a mesher here. + ; + ; Meshmerizer properly handles complex prims by using triangle meshes. + ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way + ; + ; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports + ; Usually this is only a box + + ;meshing = Meshmerizer + ;meshing = ZeroMesher + ;; select ubODEMeshmerizer only with ubOde physics engine + meshing = ubODEMeshmerizer + + ; ubODE and OpenDynamicsEngine does allocate a lot of memory on stack. On linux you may need to increase its limit + ; script opensim-ode-sh starts opensim setting that limit. You may need to increase it even more on large regions + ; edit the line ulimit -s 262144, and change this last value + + ; if you use Meshmerizer and want sculpt map collisions, setting this to + ; to true will store decoded sculpt maps in a special folder in your bin + ; folder, which can reduce startup times by reducing asset requests. Some + ; versions of mono dont work well when reading the cache files, so set this + ; to false if you have compatibility problems. + CacheSculptMaps = true + + ;; BulletSim is the default physics engine. It provides the best performance and most functionality. + ;; BulletSim supports varregions. + ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before. + ;; It continues to provide a workable physics implementation. It does not currently support varregions. + ;; basicphysics effectively does not model physics at all, making all objects phantom. + ;; Default is BulletSim + ;physics = BulletSim + ;physics = modified_BulletX + ;physics = OpenDynamicsEngine + ;physics = basicphysics + ;physics = POS + ;; alternative OpenDynamicsEngine engine. ubODEMeshmerizer meshing above MUST be selected also + physics = ubODE + + ; ## + ; ## SCRIPT ENGINE + ; ## + + ;; Default script engine to use. Currently, we only have XEngine + DefaultScriptEngine = "XEngine" + + ; Image decoding. Use CSJ2K for layer boundary decoding if true, + ; OpenJPEG if false + ; UseCSJ2K = true + + +[Map] + ; Map tile options. + ; If true, then maptiles are generated using the MapImageModule below. + ; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overridden + ; in individual region config file(s). If you do not want to upload map tiles at all, then you will need + ; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/ + GenerateMaptiles = false + + ;WorldMapModule = "WorldMap" + + ; The module to use in order to generate map images. + ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can + ; generate better images. + MapImageModule = "Map3DImageModule" + + ; World map blacklist timeout in seconds + ;BlacklistTimeout = 600 + + ; Refresh (in seconds) the map tile periodically + MaptileRefresh = 0 + + ; If not generating maptiles, use this static texture asset ID + MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + + ; Draw objects on maptile. This step might take a long time if you've got a large number of + ; objects, so you can turn it off here if you'd like. + DrawPrimOnMapTile = false + + ; Use terrain texture for maptiles if true, use shaded green if false + TextureOnMapTile = false + + ; Texture prims + TexturePrims = false + + ; Only texture prims that have a diagonal size greater than this number + TexturePrimSize = 64 + + ; Attempt to render meshes and sculpties on the map + RenderMeshes = false + + UseAntiAliasing = false + + +[Network] + ; OpenSim can send multiple simultaneous requests for services such as asset + ; retrieval. However, some versions of mono appear to hang when there are too + ; many simultaneous requests, default is 30 and is currently applied only to assets + ;MaxRequestConcurrency = 30 + + +[ClientStack.LindenUDP] + ; The client socket receive buffer size determines how many + ; incoming requests we can process; the default on .NET is 8192 + ; which is about 2 4k-sized UDP datagrams. On mono this is + ; whatever the underlying operating system has as default; for + ; example, ubuntu 8.04 or SLES11 have about 111k, which is about + ; 27 4k-sized UDP datagrams (on linux platforms you can [as root] + ; do "sysctl net.core.rmem_default" to find out what your system + ; uses a default socket receive buffer size. + ; + ; client_socket_rcvbuf_size allows you to specify the receive + ; buffer size LLUDPServer should use. NOTE: this will be limited + ; by the system's settings for the maximum client receive buffer + ; size (on linux systems you can set that with "sysctl -w + ; net.core.rmem_max=X") + ; + ;client_socket_rcvbuf_size = 8388608 + + ; Maximum outbound bytes per second for a single scene. This can be used to + ; throttle total outbound UDP traffic for a simulator. The default value is + ; 0, meaning no throttling at the scene level. The example given here is + ; 20 megabits + ; + ;scene_throttle_max_bps = 2500000 + + ; Maximum bytes per second to send to any single client. This will override + ; the user's viewer preference settings. The default value is 0, meaning no + ; aggregate throttling on clients (only per-category throttling). The + ; example given here is 1.5 megabits + ; + ;client_throttle_max_bps = 187500 + + ; Minimum bytes per second to send to any single client as a result of + ; adaptive throttling. Viewer preferences set to a lower number will + ; override the settin. The example given here ensures that adaptive + ; throttling will never decrease per client bandwidth below 256 kbps. + ; + ;adaptive_throttle_min_bps = 32000 + + ; Adaptive throttling attempts to limit network overload when multiple + ; clients login by starting each connection more slowly. Disabled by + ; default + ; + enable_adaptive_throttles = false + + ; Per-client bytes per second rates for the various throttle categories. + ; These are default values that will be overridden by clients. These + ; defaults are approximately equivalent to the throttles set by the Imprudence + ; viewer when maximum bandwidth is set to 350kbps + + ;resend_default = 6625 + ;land_default = 9125 + ;wind_default = 1750 + ;cloud_default = 1750 + ;task_default = 18500 + ;texture_default = 18500 + ;asset_default = 10500 + + ; Configures how ObjectUpdates are aggregated. These numbers + ; do not literally mean how many updates will be put in each + ; packet that goes over the wire, as packets are + ; automatically split on a 1400 byte boundary. These control + ; the balance between responsiveness of interest list updates + ; and total throughput. Higher numbers will ensure more full- + ; sized packets and faster sending of data, but more delay in + ; updating interest lists + ; + ;PrimUpdatesPerCallback = 100 + + ; TextureSendLimit determines how many packets will be put on + ; the outgoing queue each cycle. Like the settings above, this + ; is a balance between responsiveness to priority updates and + ; total throughput. Higher numbers will give a better + ; throughput at the cost of reduced responsiveness to client + ; priority changes or transfer aborts + ; + ;TextureSendLimit = 20 + + ; CannibalizeTextureRate allows bandwidth to be moved from the + ; UDP texture throttle to the task throttle. Since most viewers + ; use HTTP textures, this provides a means of using what is largely + ; unused bandwidth in the total throttle. The value is the proportion + ; of the texture rate to move to the task queue. It must be between + ; 0.0 (none of the bandwidth is cannibalized) and 0.9 (90% of the + ; bandwidth is grabbed) + ; + ; CannibalizeTextureRate = 0.5 + + ; The time to wait before disconecting an unresponsive client. + ; The time is in seconds. The default is one minute + ; + ;AckTimeout = 60 + + ; The time to wait before disconecting an unresponsive paused client. + ; A client can be paused when the file selection dialog is open during file upload. + ; This gives extra time to find files via the dialog but will still disconnect if + ; the client crashes or loses its network connection + ; The time is in seconds. The default is five minutes. + ; + ;PausedAckTimeout = 300 + + +[Appearance] + ; Persist avatar baked textures + ; Persisting baked textures can speed up login and region border + ; crossings especially with large numbers of users, though it + ; will store potentially large numbers of textures in your asset + ; database + PersistBakedTextures = false + + ; Control the delay before appearance is sent to other avatars and + ; saved in the avatar service. Attempts to limit the impact caused + ; by the very chatty dialog that sets appearance when an avatar + ; logs in or teleports into a region; values are in seconds + DelayBeforeAppearanceSave = 5 + DelayBeforeAppearanceSend = 2 + + ; If true, avatar appearance information is resent to other avatars in the simulator every 60 seconds. + ; This may help with some situations where avatars are persistently grey, though it will not help + ; in other situations (e.g. appearance baking failures where the avatar only appears as a cloud to others). + ResendAppearanceUpdates = false + + ; Turning this on responds to CachedTexture packets to possibly avoid rebaking the avatar + ; on every login + ReuseTextures = true + + +[Attachments] + ; Controls the number of milliseconds that are slept per 100 prims rezzed in attachments + ; Experimental setting to control CPU spiking when avatars with many attachments login/change outfit + ; or when multiple avatars with medium level attachments login/change outfit simultaneously. + ; If 0 then no throttling is performed. + ThrottlePer100PrimsRezzed = 0 + + +[Textures] + ; If true, textures generated dynamically (i.e. through osSetDynamicTextureData() and similar OSSL functions) are reused where possible + ; Chiefly, reuse occurs if a texture has already been generated with identical data and settings, and that texture contains no dynamic components + ; (e.g. images pulled from an external HTTP address). + ; Reusing previously generated textures results in a much faster update on the viewer but may cause issues if the viewer didn't receive all resolutions of the texture. + ; Currently, it will also increase asset cache use since temporary dynamic textures are no longer deleted. + ; Hence, currently considered experimental. + ; Default is false. + ReuseDynamicTextures = true + + ; If true, then textures generated dynamically that have a low data size relative to their pixel size are not reused + ; This is to workaround an apparent LL 3.3.4 and earlier viewer bug where such textures are not redisplayed properly when pulled from the viewer cache. + ; Only set this to true if you are sure that all the viewers using your simulator will not suffer from this problem. + ; This setting only has an affect is ReuseDynamicTextures = true + ; Default is false + ReuseDynamicLowDataTextures = true + + +[ODEPhysicsSettings] + ; ## + ; ## Physics stats settings ( most ignored by ubOde ) + ; + + ; If collect_stats is enabled, then extra stat information is collected which is accessible via the MonitorModule + ; (see http://opensimulator.org/wiki/Monitoring_Module for more details). + collect_stats = false + + ; ## + ; ## Physics logging settings - logfiles are saved to *.DIF files + ; ## + + ; default is false + ;physics_logging = true + ;; every n simulation iterations, the physics snapshot file is updated + ;physics_logging_interval = 50 + ;; append to existing physics logfile, or overwrite existing logfiles? + ;physics_logging_append_existing_logfile = true + + ;## + ;## World Settings + ;## + + ; World Step size. + ; with legacy ODE this value needs to be close to 0.02s + ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load + ; you will need to test acording to you needs + ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS + world_stepsize = 0.015 + ; number of iterations of constrains solver, higher should improve results + ; up to a point where acumulated math errors eliminate the improvement + ; more steps may increase CPU load. No real gain in changing + world_solver_iterations = 10 + + ;Spaces level settings. Affects memory consumption vs Collider CPU time for avatar and physical prim + ; defines spaces partition cells min and max sizes == 2^value + world_hashspace_level_low = -5 + world_hashSpace_level_high = 12 + + meters_in_small_space = 29.9 + + + ; ## + ; ## Contact properties. (the stuff that happens when things come in contact with each other) + ; ## + + ; surface layer around geometries other geometries can sink into before generating a contact + world_contact_surface_layer = 0.001 + + ; Filtering collisions helps keep things stable physics wise, but sometimes + ; it can be overzealous. If you notice bouncing, chances are it's that. + filter_collisions = false + + ; Non Moving Terrain Contact (avatar isn't moving) + nm_terraincontact_friction = 255.0 + nm_terraincontact_bounce = 0.1 + nm_terraincontact_erp = 0.1025 + + ; Moving Terrain Contact (avatar is moving) + m_terraincontact_friction = 75.0 + m_terraincontact_bounce = 0.05 + m_terrainContact_erp = 0.05025 + + ; Moving Avatar to object Contact + m_avatarobjectcontact_friction = 75.0 + m_avatarobjectcontact_bounce = 0.1 + + ; Object to Object Contact and Non-Moving Avatar to object + objectcontact_friction = 250.0 + objectcontact_bounce = 0.2 + + ; ## + ; ## Avatar Control + ; ## + + ; PID Controller Settings. These affect the math that causes the avatar to reach the + ; desired velocity + ; See http://en.wikipedia.org/wiki/PID_controller + + av_pid_derivative = 2200.0 + av_pid_proportional = 900.0 + + ; specifies if the capsule should be tilted (=true; old compatibility mode) + ; or straight up-and-down (=false; better and more consistent physics behavior) + av_capsule_tilted = false + + ; Movement. Smaller is faster. + + ; speed of movement with Always Run off + av_movement_divisor_walk = 1.4 + + ; speed of movement with Always Run on + av_movement_divisor_run = 0.9 + + ; When the avatar flies, it will be moved up by this amount off the ground (in meters) + minimum_ground_flight_offset = 3.0 + + ; Plant avatar. This reduces the effect of physical contacts with the avatar. + ; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive. + ; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active + ; will lock the avatar in place + av_planted = true + + ; No Avatar Avatar Collissions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment + av_av_collisions_off = true + + ; ## + ; ## Object options + ; ## + + ; amount of ODE steps where object is non moving for ODE to automatically put it to sleep + body_frames_auto_disable = 20 + + ; used to control llMove2Target + body_pid_derivative = 35 + body_pid_gain = 25 + + ; maximum number of contact points to generate per collision + contacts_per_collision = 80 + + ; start throttling the object updates if object comes in contact with 3 or more other objects + geom_contactpoints_start_throttling = 3 + + ; send 1 update for every x updates below when throttled + geom_updates_before_throttled_update = 15 + + ; ## + ; ## Sculpted Prim settings + ; ## + + ; Do we want to mesh sculpted prim to collide like they look? + ; If you are seeing sculpt texture decode problems + ; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ; then you might want to try setting this to false. + mesh_sculpted_prim = false + + ; number^2 non-physical level of detail of the sculpt texture. 32x32 - 1024 verticies + mesh_lod = 32 + + ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies + mesh_physical_lod = 16 + + ; ## + ; ## additional meshing options + ; ## + + ; Physics needs to create internal meshs (or convert the object meshs or scultps) + ; for all prims except simple boxes and spheres. + + ; collisions of small objects againts larger ones can have a increased CPU load cost + ; so this are represented by a simple BOX + ; if all their scale dimensions are lower or equal to this option. Default is 0.1m + ; (ubOde only) + ; MinSizeToMeshmerize = 0.1 + + +[BulletSim] + ; There are two bullet physics libraries, bulletunmanaged is the default and is a + ; native c++ dll bulletxna is a managed C# dll. They have comparible functionality + ; but the c++ one is much faster. + ;BulletEngine = "bulletunmanaged" + BulletEngine = "bulletxna" + + ; BulletSim can run on its own thread independent of the simulator's heartbeat + ; thread. Enabling this will not let the physics engine slow down avatar movement, etc. + UseSeparatePhysicsThread = true + + ; Terrain implementation can use either Bullet's heightField or BulletSim can build + ; a mesh. 0=heightField, 1=mesh + TerrainImplementation = 0 + ; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield + ; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher + ; magnifications use lots of memory. + TerrainMeshMagnification = 1 + + ; Should avatars collide with each other? + AvatarToAvatarCollisionsByDefault = false + + ; Default linkset implmentation + ; 'Constraint' uses physics constraints to hold linkset together. 'Compound' + ; builds a compound shape from the children shapes to create a single physical + ; shape. 'Compound' uses a lot less CPU time. + LinkImplementation = 1 ; 0=constraint, 1=compound + + ; If 'true', offset a linkset's origin based on mass of linkset parts. + LinksetOffsetCenterOfMass = false + + ; If 'true', turn scuplties into meshes + MeshSculptedPrim = false + + ; If 'true', force simple prims (box and sphere) to be meshed + ; If 'false', the Bullet native special case shape is used for square rectangles + ; and even dimensioned spheres. + ForceSimplePrimMeshing = true + + ; If 'true', when creating meshes, remove all triangles that have two equal vertexes. + ; Happens often in sculpties. If turned off, there will be some doorways + ; that cannot be walked through. + ShouldRemoveZeroWidthTriangles = true + + ; If 'true', use convex hull definition in mesh asset if present. + ShouldUseAssetHulls = true + + ; If there are thousands of physical objects, these maximums should be increased. + MaxCollisionsPerFrame = 2048 + MaxUpdatesPerFrame = 8192 + + ; Detailed physics debug logging. Very verbose. + PhysicsLoggingEnabled = False + PhysicsLoggingDir = "." + VehicleLoggingEnabled = False + + +[Sun] + ; send a Sun update every update_interval # of frames. A lower number will + ; make for smoother sun transition at the cost of network + ;update_interval = 100 + + +[Wind] + ; How often should wind be updated, as a function of world frames. Approximately 50 frames a second + wind_update_rate = 150 + + ; The Default Wind Plugin to load + wind_plugin = SimpleRandomWind + + +[Cloud] + ; update interval for the cloud cover data returned by llCloud(). + ; default is 1000 + cloud_update_rate = 1000 + + +[Trees] + ; active_trees allows module to change its trees in time. + ; some will be deleted, others created and rest may grow + ; default is false. You can change it with console command tree active true | false later + active_trees = false + ; the trees change execution time rate (in ms) + update_rate = 1000 + + ; allow the trees to grow. + ; DANGER + ; this option causes high network use on the order of + ; NumberOfTrees * NumberAvatars * 1000 / update_rate udp packets per second + allowGrow = false + + +[LL-Functions] + ; Maximum number of llListen events we allow over the entire region. + ; Set this to 0 to have no limit imposed + max_listens_per_region = 0 + + ; Maximum number of llListen events we allow per script + ; Set this to 0 to have no limit imposed. + max_listens_per_script = 0 + + ; Maximum number of external urls that scripts can set up in this simulator (e.g. via llRequestURL()) + max_external_urls_per_simulator = 256 + + ; Use size boxes instead of meshed prims, sculpts and mesh when calculating bounding boxes. + ; Speeds up calculations but can make them inaccurate, in some cases very inaccurate. + UseSimpleBoxesInGetBoundingBox = true + + ; Use llCastRay V3 if true. + ; Implements llCastRay similar but not identical to Second Life. + ; See http://wiki.secondlife.com/wiki/LlCastRay . + ; NEW + ; Meshes prims for good accuracy in ray hit detection, + ; handling basic and tortured prims, sculpts and meshes. + ; Uses ellipsoid, correctly sized avatar capsules. + ; Handles complex terrain, multi-prim objects and seated avatars. + ; Implements throttling and the status codes + ; RCERR_UNKNOWN and RCERR_CAST_TIME_EXCEEDED, + ; so LSL scripts need to handle these responses and RCERR_SIM_PERF_LOW. + ; WARNING + ; Can be faster on some servers and scenes, but slower on others, + ; compared to previous version of llCastRay in OpenSimulator. + ; Is in most cases considerably slower than llCastRay in Second Life. + ; Generates geometry meshes and can therefore use much system resources. + UseLlCastRayV3 = true + + ; Accepted calculation precision error in calculations in llCastRay V3 + FloatToleranceInLlCastRay = 0.00001 + + ; Accepted distance difference between duplicate hits in llCastRay V3 + FloatTolerance2InLlCastRay = 0.001 + + ; Detail level when rendering prims in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + PrimDetailLevelInLlCastRay = 1 + + ; Detail level when rendering sculpts in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + SculptDetailLevelInLlCastRay = 1 + + ; Detail level when rendering meshes in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + MeshDetailLevelInLlCastRay = 3 + + ; Detail level when rendering avatar capsules in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + AvatarDetailLevelInLlCastRay = 1 + + ; Maximum number of returned hits from llCastRay V3 + MaxHitsInLlCastRay = 16 + + ; Maximum number of returned hits per prim from llCastRay V3 + MaxHitsPerPrimInLlCastRay = 16 + + ; Maximum number of returned hits per object from llCastRay V3 + MaxHitsPerObjectInLlCastRay = 16 + + ; Report ray intersections with surfaces on exits from a prim as hits in llCastRay V3 if true + DetectExitHitsInLlCastRay = false + + ; Detect attachments in llCastRay V3 if true + DoAttachmentsInLlCastRay = false + + ; Throttle period length in ms before which all old llCastRay use is discarded in llCastRay V3 + ; The sum of AvailableTimeInMsPerRegionInLlCastRay and all AvailableTimeInMsPerAvatarInLlCastRay should not exceed this + ThrottleTimeInMsInLlCastRay = 200 + + ; Available time in ms for llCastRay per throttle period and 65536 m2 land area in llCastRay V3 + AvailableTimeInMsPerRegionInLlCastRay = 40 + + ; Available time in ms for llCastRay per throttle period and avatar when script in attachment or vehicle in llCastRay V3 + AvailableTimeInMsPerAvatarInLlCastRay = 10 + + ; Required available time in ms left to perform a new llCastRay in llCastRay V3 + RequiredAvailableTimeInMsInLlCastRay = 2 + + ; Maximum available time in ms possible in llCastRay V3, not to get too high values with varregions + MaximumAvailableTimeInMsInLlCastRay = 40 + + ; Use cached meshes in llCastRay V3 if true + ; Improves performance but uses more memory + UseMeshCacheInLlCastRay = true + + +[XEngine] + ; How many threads to keep alive even if nothing is happening + MinThreads = 2 + + ; How many threads to start at maximum load + MaxThreads = 100 + + ; Time a thread must be idle (in seconds) before it dies + IdleTimeout = 60 + + ; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest") + Priority = "Normal" + + ; Maximum number of events to queue for a script (excluding timers) + MaxScriptEventQueue = 3000 + + ; Stack size per thread created + ThreadStackSize = 262144 + + ; Set this to true to load each script into a separate + ; AppDomain. Setting this to false will load all script assemblies into the + ; current AppDomain, which will reduce the initial per-script memory overhead, + ; but deleted scripts stay inactive using memory. + ; Significantly improving script loading times. + ; However, setting this to false will also prevent script DLLs from being unloaded from memory if the script is deleted. + ; This may cause an OutOfMemory problem over time when avatars with scripted attachments move in and out of the region. + ; This may only be a problem if regions stay alive for a long time with lots of scripts added or edited. + ; At this time some mono versions seem to have problems with the true option, + ; so default is now false until a fix is found, to simply life of less technical skilled users. + AppDomainLoading = false + + ; Controls whether previously compiled scripts DLLs are deleted on sim restart. + ; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled. + ; It should be true on first run after updating opensim binary version + ; after first run you can change to false. + ; You can also set it to false and delete the script DLLs by hand + ; This does not delete cached scripts state. + DeleteScriptsOnStartup = false + + ; CompactMemOnLoad + ; forces calls to memory garbage collector before loading each script DLL during region startup. + ; Peak memory usage is reduced and region starts with a more compacted memory allocation. + ; But this costs a lot of time, so region load will take a lot longer. + ; it is more usefull if there are no previously compiled scripts DLLs (or DeleteScriptsOnStartup = true) + CompactMemOnLoad = true + + ; Controls whether scripts are stopped by aborting their threads externally (abort) + ; or by co-operative checks inserted by OpenSimulator into compiled script (co-op). + ; co-op will be more stable as aborting threads can cause instability. + ; abort was the default option in OpenSimulator 0.8 and before. + ; If this setting is changed between co-op and abort, then existing scripts will automatically be recompiled if necessary. + ; However, the setting change will not take affect until the next time you restart the simulator. + ; Setting changes will not affect state information stored for scripts. + ScriptStopStrategy = abort + + ; Rate to poll for asynchronous command replies (ms) + ; currently unused + ;AsyncLLCommandLoopms = 50 + + ; Compile debug info (line numbers) into the script assemblies + CompileWithDebugInformation = false + + ; Interval (s) between background save of script states + SaveInterval = 120 + + ; Interval (s) between maintenance runs (0 = disable) + MaintenanceInterval = 10 + + ; Amount of time in milliseconds we will wait for an event to completely normally when a script stop is requested + ; before aborting the thread (such as when an object containing scripts is taken into inventory). + WaitForEventCompletionOnScriptStop = 1000 + + ; Minimum settable timer interval. Any timer setting less than this is + ; rounded up to this minimum interval. + MinTimerInterval = 0.1 + + ; Sensor settings + SensorMaxRange = 96.0 + SensorMaxResults = 64 + + +[Groups] + ; Groups data is cached for this number of seconds before another request is made to the groups service + ; Set to 0 to disable the cache. + ; Default is 30 seconds + GroupsCacheTimeout = 30 + + +[PacketPool] + ;RecyclePackets = true + ;RecycleDataBlocks = true + + ; If true, then the basic packet objects used to receive data are also recycled, not just the LLUDP packets. + ; This reduces data churn + RecycleBaseUDPPackets = true + + +[InterestManagement] + ; This section controls how state updates are prioritized for each client + ; Valid values are BestAvatarResponsiveness, Time, Distance, + ; SimpleAngularDistance, and FrontBack + UpdatePrioritizationScheme = BestAvatarResponsiveness + ReprioritizationEnabled = true + ReprioritizationInterval = 2000.0 + RootReprioritizationDistance = 10.0 + ChildReprioritizationDistance = 20.0 + + ; TEST OPTION KEEP AS FALSE + ; if true, don't send object updates if outside view range + ObjectsCullingByDistance = false + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in the same region + ; Updates will always be sent to the avatar that the update addresses and if av velocity is effectively zero (to prevent drift due to missing updates). + ; n > 1 will reduce UDP traffic but will lead to laggier movement observed in other avatars. + RootTerseUpdatePeriod = 0 + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in another region + ; n > 1 will reduce UDP traffic but may lead to laggier movement observed in other avatars, though values up to 4 may not generate a noticeable effect. + ChildTerseUpdatePeriod = 0 + + ; Send an update to clients if the difference from the last sent avatar position is greater than this tolerance + RootPositionUpdateTolerance = 0.05 + + ; Send an update to clients if the euclidian difference from the last sent avatar rotation is greater than this tolerance + RootRotationUpdateTolerance = 0.1 + + ; Send an update to clients if the difference from the last sent avatar velocity is greater than this tolerance + RootVelocityUpdateTolerance = 0.001 + + +[Statistics] + ; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames + ; to include in the averaging calculations + NumberOfFrames=10 + + +[Terrain] + ; If 'true' each avatar is only sent terrain patches within their view distance + ; This also changes the region terrain loading from 'lawn mower' to ordered around + ; the avatar outward. + SendTerrainUpdatesByViewDistance = True + + +[LandManagement] + ; When editing terrain or objects, parcel layer info is updated in the viewer. + ; This can be expensive for large regions. If this variable is 'true', only the + ; parcel layer data around the area of interest is sent. The parcel layer info + ; is sent for 'ParcelLayerViewDistance' around the interest point. + ; If 'ParcelLayerViewDistance' is >= 128, the operation for legacy sized regions + ; will be what it has always been (send the whole region's parcel layer info). + ; Other parcel updates (login, changing parcel ownership, ...) will still send + ; whole region. + LimitParcelLayerUpdateDistance = true + ParcelLayerViewDistance = 128 + + +;; If you are using a simian grid frontend you can enable +;; this module to upload tile images for the mapping fn +;; +[SimianGridMaptiles] + RefreshTime = 3600 + + +;; +;; These are defaults that are overwritten below in [Architecture]. +;; These defaults allow OpenSim to work out of the box with +;; zero configuration +;; +[AssetService] + ; Disable this to prevent the default asset set from being inserted into the + ; asset store each time the region starts + AssetLoaderEnabled = false + + +[AutoBackupModule] + ;; default is module is disabled at the top level + AutoBackupModuleEnabled = false + + +[ServiceThrottle] + ;; Default time interval (in ms) for the throttle service thread to wake up + Interval = 5000 + + +[Materials] + MaxMaterialsPerTransaction = 50 diff --git a/bin/config-include/SimLean.ini b/bin/config-include/SimLean.ini new file mode 100644 index 0000000..0e80320 --- /dev/null +++ b/bin/config-include/SimLean.ini @@ -0,0 +1,884 @@ +[Startup] + ; ## + ; ## SYSTEM + ; ## + + ; Sets the method that OpenSim will use to fire asynchronous + ; events. Valid values are UnsafeQueueUserWorkItem, + ; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread. + ; + ; SmartThreadPool is reported to work well on Mono/Linux, but + ; UnsafeQueueUserWorkItem has been benchmarked with better + ; performance on .NET/Windows + ; + ; UnsafeQueueUserWorkItem refers to the fact that the code creating the event could elevate its security + ; privileges. However, as calling code is trusted anyway this is safe (if you set + ; TrustedBinaries = true in the [XEngine] section then you already have to trust that incoming code for other reasons). + async_call_method = SmartThreadPool + + ; Max threads to allocate on the FireAndForget thread pool + ; when running with the SmartThreadPool option above + MaxPoolThreads = 300 + + ; Allow certain jobs to be run consecutively in a job engine rather than always concurrently. + ; This improves performance in regions with large numbers of connections (in the hundreds). + JobEngineEnabled = false + + ; Maximum number of position, rotation and scale changes for each prim that the simulator will store for later undos + ; Increasing this number will increase memory usage. + MaxPrimUndos = 10 + + ; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum + ; This can be overridden in the region config file. + ClampPrimSize = false + + ; If a prim is loaded from an external source, clamp it to Z = 0 if Z is negative. + ClampNegativeZ = false + + ; Allow scripts to keep running when they cross region boundaries, rather than being restarted. State is reloaded on the destination region. + ; This only applies when crossing to a region running in a different simulator. + ; For crossings where the regions are on the same simulator the script is always kept running. + AllowScriptCrossing = true + + ; Main Frame time + ; This defines the rate of several simulation events. + ; Default value should meet most needs. + ; It can be reduced to improve the simulation of moving objects, with possible increase of cpu and network loads. + ; It should not be less than the physics engine step time. + ; Being a integer multiple of it may reduce some jitter in reported physics FPS. + ; changing this value, you need to change some of the following *EveryNFrames so their actions timing remains the same + FrameTime = 0.0909 + + ; Send scheduled updates to objects in the scene + ; This must be a whole number + UpdateObjectsEveryNFrames = 1 + + ; Send position/velocity, etc. updates to agents in the scene + ; This must be a whole number + UpdateAgentsEveryNFrames = 1 + + ; Apply pending forces from physics calculations to an entity. + ; This must be a whole number + UpdateEntityMovementEveryNFrames = 1 + + ; Send coarse location updates to viewers. In a classic viewer, this updates the minimap. + ; This must be a whole number + UpdateCoarseLocationsEveryNFrames = 50 + + ; Physics simulation execution or syncronization, acording to engine. Should be 1 + ; This must be a whole number + UpdatePhysicsEveryNFrames = 1 + + ; Send out the on frame event to modules and other listeners. This should probably never deviate from 1. + ; This must be a whole number + UpdateEventsEveryNFrames = 1 + + ; Send terrain updates to viewers + ; This must be a whole number + UpdateTerrainEveryNFrames = 50 + + ; Persitently store any objects which meet the PRIM STORAGE criteria + ; This must be a whole number + UpdateStorageEveryNFrames = 200 + + ; Clean up temp on rez objects. + ; This must be a whole number + UpdateTempCleaningEveryNSeconds = 180 + + ; ## + ; ## PRIM STORAGE + ; ## + + ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to + ; prevent frequently changing objects from heavily loading the region data store. + ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep. + ; + ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds + MinimumTimeBeforePersistenceConsidered = 60 + ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago + MaximumTimeBeforePersistenceConsidered = 600 + + ; ## + ; ## PHYSICS + ; ## + + ; Select a mesher here. + ; + ; Meshmerizer properly handles complex prims by using triangle meshes. + ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way + ; + ; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports + ; Usually this is only a box + + ;meshing = Meshmerizer + ;meshing = ZeroMesher + ;; select ubODEMeshmerizer only with ubOde physics engine + meshing = ubODEMeshmerizer + + ; ubODE and OpenDynamicsEngine does allocate a lot of memory on stack. On linux you may need to increase its limit + ; script opensim-ode-sh starts opensim setting that limit. You may need to increase it even more on large regions + ; edit the line ulimit -s 262144, and change this last value + + ; if you use Meshmerizer and want sculpt map collisions, setting this to + ; to true will store decoded sculpt maps in a special folder in your bin + ; folder, which can reduce startup times by reducing asset requests. Some + ; versions of mono dont work well when reading the cache files, so set this + ; to false if you have compatibility problems. + CacheSculptMaps = false + + ;; BulletSim is the default physics engine. It provides the best performance and most functionality. + ;; BulletSim supports varregions. + ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before. + ;; It continues to provide a workable physics implementation. It does not currently support varregions. + ;; basicphysics effectively does not model physics at all, making all objects phantom. + ;; Default is BulletSim + ;physics = BulletSim + ;physics = modified_BulletX + ;physics = OpenDynamicsEngine + ;physics = basicphysics + ;physics = POS + ;; alternative OpenDynamicsEngine engine. ubODEMeshmerizer meshing above MUST be selected also + physics = ubODE + + ; ## + ; ## SCRIPT ENGINE + ; ## + + ;; Default script engine to use. Currently, we only have XEngine + DefaultScriptEngine = "XEngine" + + ; Image decoding. Use CSJ2K for layer boundary decoding if true, + ; OpenJPEG if false + ; UseCSJ2K = true + + +[Map] + ; Map tile options. + ; If true, then maptiles are generated using the MapImageModule below. + ; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overridden + ; in individual region config file(s). If you do not want to upload map tiles at all, then you will need + ; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/ + GenerateMaptiles = false + + ;WorldMapModule = "WorldMap" + + ; The module to use in order to generate map images. + ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can + ; generate better images. + MapImageModule = "Map3DImageModule" + + ; World map blacklist timeout in seconds + ;BlacklistTimeout = 600 + + ; Refresh (in seconds) the map tile periodically + MaptileRefresh = 0 + + ; If not generating maptiles, use this static texture asset ID + ;MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + + ; Draw objects on maptile. This step might take a long time if you've got a large number of + ; objects, so you can turn it off here if you'd like. + DrawPrimOnMapTile = false + + ; Use terrain texture for maptiles if true, use shaded green if false + TextureOnMapTile = false + + ; Texture prims + TexturePrims = false + + ; Only texture prims that have a diagonal size greater than this number + TexturePrimSize = 48 + + ; Attempt to render meshes and sculpties on the map + RenderMeshes = false + + UseAntiAliasing = false + + +[Network] + ; OpenSim can send multiple simultaneous requests for services such as asset + ; retrieval. However, some versions of mono appear to hang when there are too + ; many simultaneous requests, default is 30 and is currently applied only to assets + ;MaxRequestConcurrency = 30 + + +[ClientStack.LindenUDP] + ; The client socket receive buffer size determines how many + ; incoming requests we can process; the default on .NET is 8192 + ; which is about 2 4k-sized UDP datagrams. On mono this is + ; whatever the underlying operating system has as default; for + ; example, ubuntu 8.04 or SLES11 have about 111k, which is about + ; 27 4k-sized UDP datagrams (on linux platforms you can [as root] + ; do "sysctl net.core.rmem_default" to find out what your system + ; uses a default socket receive buffer size. + ; + ; client_socket_rcvbuf_size allows you to specify the receive + ; buffer size LLUDPServer should use. NOTE: this will be limited + ; by the system's settings for the maximum client receive buffer + ; size (on linux systems you can set that with "sysctl -w + ; net.core.rmem_max=X") + ; + ;client_socket_rcvbuf_size = 8388608 + + ; Maximum outbound bytes per second for a single scene. This can be used to + ; throttle total outbound UDP traffic for a simulator. The default value is + ; 0, meaning no throttling at the scene level. The example given here is + ; 20 megabits + ; + ;scene_throttle_max_bps = 2500000 + + ; Maximum bytes per second to send to any single client. This will override + ; the user's viewer preference settings. The default value is 0, meaning no + ; aggregate throttling on clients (only per-category throttling). The + ; example given here is 1.5 megabits + ; + ;client_throttle_max_bps = 187500 + + ; Minimum bytes per second to send to any single client as a result of + ; adaptive throttling. Viewer preferences set to a lower number will + ; override the settin. The example given here ensures that adaptive + ; throttling will never decrease per client bandwidth below 256 kbps. + ; + ;adaptive_throttle_min_bps = 32000 + + ; Adaptive throttling attempts to limit network overload when multiple + ; clients login by starting each connection more slowly. Disabled by + ; default + ; + enable_adaptive_throttles = false + + ; Per-client bytes per second rates for the various throttle categories. + ; These are default values that will be overridden by clients. These + ; defaults are approximately equivalent to the throttles set by the Imprudence + ; viewer when maximum bandwidth is set to 350kbps + + ;resend_default = 6625 + ;land_default = 9125 + ;wind_default = 1750 + ;cloud_default = 1750 + ;task_default = 18500 + ;texture_default = 18500 + ;asset_default = 10500 + + ; Configures how ObjectUpdates are aggregated. These numbers + ; do not literally mean how many updates will be put in each + ; packet that goes over the wire, as packets are + ; automatically split on a 1400 byte boundary. These control + ; the balance between responsiveness of interest list updates + ; and total throughput. Higher numbers will ensure more full- + ; sized packets and faster sending of data, but more delay in + ; updating interest lists + ; + ;PrimUpdatesPerCallback = 100 + + ; TextureSendLimit determines how many packets will be put on + ; the outgoing queue each cycle. Like the settings above, this + ; is a balance between responsiveness to priority updates and + ; total throughput. Higher numbers will give a better + ; throughput at the cost of reduced responsiveness to client + ; priority changes or transfer aborts + ; + ;TextureSendLimit = 20 + + ; CannibalizeTextureRate allows bandwidth to be moved from the + ; UDP texture throttle to the task throttle. Since most viewers + ; use HTTP textures, this provides a means of using what is largely + ; unused bandwidth in the total throttle. The value is the proportion + ; of the texture rate to move to the task queue. It must be between + ; 0.0 (none of the bandwidth is cannibalized) and 0.9 (90% of the + ; bandwidth is grabbed) + ; + ; CannibalizeTextureRate = 0.5 + + ; The time to wait before disconecting an unresponsive client. + ; The time is in seconds. The default is one minute + ; + ;AckTimeout = 60 + + ; The time to wait before disconecting an unresponsive paused client. + ; A client can be paused when the file selection dialog is open during file upload. + ; This gives extra time to find files via the dialog but will still disconnect if + ; the client crashes or loses its network connection + ; The time is in seconds. The default is five minutes. + ; + ;PausedAckTimeout = 300 + + +[Appearance] + ; Persist avatar baked textures + ; Persisting baked textures can speed up login and region border + ; crossings especially with large numbers of users, though it + ; will store potentially large numbers of textures in your asset + ; database + PersistBakedTextures = false + + ; Control the delay before appearance is sent to other avatars and + ; saved in the avatar service. Attempts to limit the impact caused + ; by the very chatty dialog that sets appearance when an avatar + ; logs in or teleports into a region; values are in seconds + DelayBeforeAppearanceSave = 5 + DelayBeforeAppearanceSend = 2 + + ; If true, avatar appearance information is resent to other avatars in the simulator every 60 seconds. + ; This may help with some situations where avatars are persistently grey, though it will not help + ; in other situations (e.g. appearance baking failures where the avatar only appears as a cloud to others). + ResendAppearanceUpdates = false + + ; Turning this on responds to CachedTexture packets to possibly avoid rebaking the avatar + ; on every login + ReuseTextures = true + + +[Attachments] + ; Controls the number of milliseconds that are slept per 100 prims rezzed in attachments + ; Experimental setting to control CPU spiking when avatars with many attachments login/change outfit + ; or when multiple avatars with medium level attachments login/change outfit simultaneously. + ; If 0 then no throttling is performed. + ThrottlePer100PrimsRezzed = 0 + + +[Textures] + ; If true, textures generated dynamically (i.e. through osSetDynamicTextureData() and similar OSSL functions) are reused where possible + ; Chiefly, reuse occurs if a texture has already been generated with identical data and settings, and that texture contains no dynamic components + ; (e.g. images pulled from an external HTTP address). + ; Reusing previously generated textures results in a much faster update on the viewer but may cause issues if the viewer didn't receive all resolutions of the texture. + ; Currently, it will also increase asset cache use since temporary dynamic textures are no longer deleted. + ; Hence, currently considered experimental. + ; Default is false. + ReuseDynamicTextures = false + + ; If true, then textures generated dynamically that have a low data size relative to their pixel size are not reused + ; This is to workaround an apparent LL 3.3.4 and earlier viewer bug where such textures are not redisplayed properly when pulled from the viewer cache. + ; Only set this to true if you are sure that all the viewers using your simulator will not suffer from this problem. + ; This setting only has an affect is ReuseDynamicTextures = true + ; Default is false + ReuseDynamicLowDataTextures = false + + +[ODEPhysicsSettings] + ; ## + ; ## Physics stats settings ( most ignored by ubOde ) + ; + + ; If collect_stats is enabled, then extra stat information is collected which is accessible via the MonitorModule + ; (see http://opensimulator.org/wiki/Monitoring_Module for more details). + collect_stats = false + + ; ## + ; ## Physics logging settings - logfiles are saved to *.DIF files + ; ## + + ; default is false + ;physics_logging = true + ;; every n simulation iterations, the physics snapshot file is updated + ;physics_logging_interval = 50 + ;; append to existing physics logfile, or overwrite existing logfiles? + ;physics_logging_append_existing_logfile = true + + ;## + ;## World Settings + ;## + + ; World Step size. + ; with legacy ODE this value needs to be close to 0.02s + ; with ubOde this value can be reduced to improve simulation quality with the cost of higher cpu load + ; you will need to test acording to you needs + ; choosing a value that is a integer sub multiple of FrameRate reduces some jitter on reported physics FPS + world_stepsize = 0.01818 + ; number of iterations of constrains solver, higher should improve results + ; up to a point where acumulated math errors eliminate the improvement + ; more steps may increase CPU load. No real gain in changing + world_solver_iterations = 10 + + ;Spaces level settings. Affects memory consumption vs Collider CPU time for avatar and physical prim + ; defines spaces partition cells min and max sizes == 2^value + world_hashspace_level_low = -5 + world_hashSpace_level_high = 12 + + meters_in_small_space = 29.9 + + + ; ## + ; ## Contact properties. (the stuff that happens when things come in contact with each other) + ; ## + + ; surface layer around geometries other geometries can sink into before generating a contact + world_contact_surface_layer = 0.001 + + ; Filtering collisions helps keep things stable physics wise, but sometimes + ; it can be overzealous. If you notice bouncing, chances are it's that. + filter_collisions = false + + ; Non Moving Terrain Contact (avatar isn't moving) + nm_terraincontact_friction = 255.0 + nm_terraincontact_bounce = 0.1 + nm_terraincontact_erp = 0.1025 + + ; Moving Terrain Contact (avatar is moving) + m_terraincontact_friction = 75.0 + m_terraincontact_bounce = 0.05 + m_terrainContact_erp = 0.05025 + + ; Moving Avatar to object Contact + m_avatarobjectcontact_friction = 75.0 + m_avatarobjectcontact_bounce = 0.1 + + ; Object to Object Contact and Non-Moving Avatar to object + objectcontact_friction = 250.0 + objectcontact_bounce = 0.2 + + ; ## + ; ## Avatar Control + ; ## + + ; PID Controller Settings. These affect the math that causes the avatar to reach the + ; desired velocity + ; See http://en.wikipedia.org/wiki/PID_controller + + av_pid_derivative = 2200.0 + av_pid_proportional = 900.0 + + ; specifies if the capsule should be tilted (=true; old compatibility mode) + ; or straight up-and-down (=false; better and more consistent physics behavior) + av_capsule_tilted = false + + ; Movement. Smaller is faster. + + ; speed of movement with Always Run off + av_movement_divisor_walk = 1.3 + + ; speed of movement with Always Run on + av_movement_divisor_run = 0.8 + + ; When the avatar flies, it will be moved up by this amount off the ground (in meters) + minimum_ground_flight_offset = 3.0 + + ; Plant avatar. This reduces the effect of physical contacts with the avatar. + ; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive. + ; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active + ; will lock the avatar in place + av_planted = false + + ; No Avatar Avatar Collissions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment + av_av_collisions_off = false + + ; ## + ; ## Object options + ; ## + + ; amount of ODE steps where object is non moving for ODE to automatically put it to sleep + body_frames_auto_disable = 20 + + ; used to control llMove2Target + body_pid_derivative = 35 + body_pid_gain = 25 + + ; maximum number of contact points to generate per collision + contacts_per_collision = 80 + + ; start throttling the object updates if object comes in contact with 3 or more other objects + geom_contactpoints_start_throttling = 3 + + ; send 1 update for every x updates below when throttled + geom_updates_before_throttled_update = 15 + + ; ## + ; ## Sculpted Prim settings + ; ## + + ; Do we want to mesh sculpted prim to collide like they look? + ; If you are seeing sculpt texture decode problems + ; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ; then you might want to try setting this to false. + mesh_sculpted_prim = true + + ; number^2 non-physical level of detail of the sculpt texture. 32x32 - 1024 verticies + mesh_lod = 32 + + ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies + mesh_physical_lod = 16 + + ; ## + ; ## additional meshing options + ; ## + + ; Physics needs to create internal meshs (or convert the object meshs or scultps) + ; for all prims except simple boxes and spheres. + + ; collisions of small objects againts larger ones can have a increased CPU load cost + ; so this are represented by a simple BOX + ; if all their scale dimensions are lower or equal to this option. Default is 0.1m + ; (ubOde only) + ; MinSizeToMeshmerize = 0.1 + + +[BulletSim] + ; There are two bullet physics libraries, bulletunmanaged is the default and is a + ; native c++ dll bulletxna is a managed C# dll. They have comparible functionality + ; but the c++ one is much faster. + BulletEngine = "bulletunmanaged" + ; BulletEngine = "bulletxna" + + ; BulletSim can run on its own thread independent of the simulator's heartbeat + ; thread. Enabling this will not let the physics engine slow down avatar movement, etc. + UseSeparatePhysicsThread = false + + ; Terrain implementation can use either Bullet's heightField or BulletSim can build + ; a mesh. 0=heightField, 1=mesh + TerrainImplementation = 0 + ; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield + ; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher + ; magnifications use lots of memory. + TerrainMeshMagnification = 1 + + ; Should avatars collide with each other? + AvatarToAvatarCollisionsByDefault = false + + ; Default linkset implmentation + ; 'Constraint' uses physics constraints to hold linkset together. 'Compound' + ; builds a compound shape from the children shapes to create a single physical + ; shape. 'Compound' uses a lot less CPU time. + LinkImplementation = 1 ; 0=constraint, 1=compound + + ; If 'true', offset a linkset's origin based on mass of linkset parts. + LinksetOffsetCenterOfMass = false + + ; If 'true', turn scuplties into meshes + MeshSculptedPrim = false + + ; If 'true', force simple prims (box and sphere) to be meshed + ; If 'false', the Bullet native special case shape is used for square rectangles + ; and even dimensioned spheres. + ForceSimplePrimMeshing = false + + ; If 'true', when creating meshes, remove all triangles that have two equal vertexes. + ; Happens often in sculpties. If turned off, there will be some doorways + ; that cannot be walked through. + ShouldRemoveZeroWidthTriangles = true + + ; If 'true', use convex hull definition in mesh asset if present. + ShouldUseAssetHulls = true + + ; If there are thousands of physical objects, these maximums should be increased. + MaxCollisionsPerFrame = 2048 + MaxUpdatesPerFrame = 8192 + + ; Detailed physics debug logging. Very verbose. + PhysicsLoggingEnabled = False + PhysicsLoggingDir = "." + VehicleLoggingEnabled = False + + +[Sun] + ; send a Sun update every update_interval # of frames. A lower number will + ; make for smoother sun transition at the cost of network + ;update_interval = 100 + + +[Wind] + ; How often should wind be updated, as a function of world frames. Approximately 50 frames a second + wind_update_rate = 150 + + ; The Default Wind Plugin to load + wind_plugin = SimpleRandomWind + + +[Cloud] + ; update interval for the cloud cover data returned by llCloud(). + ; default is 1000 + cloud_update_rate = 1000 + + +[Trees] + ; active_trees allows module to change its trees in time. + ; some will be deleted, others created and rest may grow + ; default is false. You can change it with console command tree active true | false later + active_trees = false + ; the trees change execution time rate (in ms) + update_rate = 1000 + + ; allow the trees to grow. + ; DANGER + ; this option causes high network use on the order of + ; NumberOfTrees * NumberAvatars * 1000 / update_rate udp packets per second + allowGrow = false + + +[LL-Functions] + ; Maximum number of llListen events we allow over the entire region. + ; Set this to 0 to have no limit imposed + max_listens_per_region = 1000 + + ; Maximum number of llListen events we allow per script + ; Set this to 0 to have no limit imposed. + max_listens_per_script = 64 + + ; Maximum number of external urls that scripts can set up in this simulator (e.g. via llRequestURL()) + max_external_urls_per_simulator = 100 + + ; Use size boxes instead of meshed prims, sculpts and mesh when calculating bounding boxes. + ; Speeds up calculations but can make them inaccurate, in some cases very inaccurate. + UseSimpleBoxesInGetBoundingBox = true + + ; Use llCastRay V3 if true. + ; Implements llCastRay similar but not identical to Second Life. + ; See http://wiki.secondlife.com/wiki/LlCastRay . + ; NEW + ; Meshes prims for good accuracy in ray hit detection, + ; handling basic and tortured prims, sculpts and meshes. + ; Uses ellipsoid, correctly sized avatar capsules. + ; Handles complex terrain, multi-prim objects and seated avatars. + ; Implements throttling and the status codes + ; RCERR_UNKNOWN and RCERR_CAST_TIME_EXCEEDED, + ; so LSL scripts need to handle these responses and RCERR_SIM_PERF_LOW. + ; WARNING + ; Can be faster on some servers and scenes, but slower on others, + ; compared to previous version of llCastRay in OpenSimulator. + ; Is in most cases considerably slower than llCastRay in Second Life. + ; Generates geometry meshes and can therefore use much system resources. + UseLlCastRayV3 = false + + ; Accepted calculation precision error in calculations in llCastRay V3 + FloatToleranceInLlCastRay = 0.00001 + + ; Accepted distance difference between duplicate hits in llCastRay V3 + FloatTolerance2InLlCastRay = 0.001 + + ; Detail level when rendering prims in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + PrimDetailLevelInLlCastRay = 1 + + ; Detail level when rendering sculpts in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + SculptDetailLevelInLlCastRay = 1 + + ; Detail level when rendering meshes in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + MeshDetailLevelInLlCastRay = 3 + + ; Detail level when rendering avatar capsules in llCastRay V3 + ; 0 = Low, 1 = Medium, 2 = High, 3 = Highest, higer level gives better accuracy but slower call + AvatarDetailLevelInLlCastRay = 1 + + ; Maximum number of returned hits from llCastRay V3 + MaxHitsInLlCastRay = 16 + + ; Maximum number of returned hits per prim from llCastRay V3 + MaxHitsPerPrimInLlCastRay = 16 + + ; Maximum number of returned hits per object from llCastRay V3 + MaxHitsPerObjectInLlCastRay = 16 + + ; Report ray intersections with surfaces on exits from a prim as hits in llCastRay V3 if true + DetectExitHitsInLlCastRay = false + + ; Detect attachments in llCastRay V3 if true + DoAttachmentsInLlCastRay = false + + ; Throttle period length in ms before which all old llCastRay use is discarded in llCastRay V3 + ; The sum of AvailableTimeInMsPerRegionInLlCastRay and all AvailableTimeInMsPerAvatarInLlCastRay should not exceed this + ThrottleTimeInMsInLlCastRay = 200 + + ; Available time in ms for llCastRay per throttle period and 65536 m2 land area in llCastRay V3 + AvailableTimeInMsPerRegionInLlCastRay = 40 + + ; Available time in ms for llCastRay per throttle period and avatar when script in attachment or vehicle in llCastRay V3 + AvailableTimeInMsPerAvatarInLlCastRay = 10 + + ; Required available time in ms left to perform a new llCastRay in llCastRay V3 + RequiredAvailableTimeInMsInLlCastRay = 2 + + ; Maximum available time in ms possible in llCastRay V3, not to get too high values with varregions + MaximumAvailableTimeInMsInLlCastRay = 40 + + ; Use cached meshes in llCastRay V3 if true + ; Improves performance but uses more memory + UseMeshCacheInLlCastRay = true + + +[XEngine] + ; How many threads to keep alive even if nothing is happening + MinThreads = 2 + + ; How many threads to start at maximum load + MaxThreads = 100 + + ; Time a thread must be idle (in seconds) before it dies + IdleTimeout = 60 + + ; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest") + Priority = "BelowNormal" + + ; Maximum number of events to queue for a script (excluding timers) + MaxScriptEventQueue = 3000 + + ; Stack size per thread created + ThreadStackSize = 132144 + + ; Set this to true to load each script into a separate + ; AppDomain. Setting this to false will load all script assemblies into the + ; current AppDomain, which will reduce the initial per-script memory overhead, + ; but deleted scripts stay inactive using memory. + ; Significantly improving script loading times. + ; However, setting this to false will also prevent script DLLs from being unloaded from memory if the script is deleted. + ; This may cause an OutOfMemory problem over time when avatars with scripted attachments move in and out of the region. + ; This may only be a problem if regions stay alive for a long time with lots of scripts added or edited. + ; At this time some mono versions seem to have problems with the true option, + ; so default is now false until a fix is found, to simply life of less technical skilled users. + AppDomainLoading = false + + ; Controls whether previously compiled scripts DLLs are deleted on sim restart. + ; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled. + ; It should be true on first run after updating opensim binary version + ; after first run you can change to false. + ; You can also set it to false and delete the script DLLs by hand + ; This does not delete cached scripts state. + DeleteScriptsOnStartup = true + + ; CompactMemOnLoad + ; forces calls to memory garbage collector before loading each script DLL during region startup. + ; Peak memory usage is reduced and region starts with a more compacted memory allocation. + ; But this costs a lot of time, so region load will take a lot longer. + ; it is more usefull if there are no previously compiled scripts DLLs (or DeleteScriptsOnStartup = true) + CompactMemOnLoad = true + + ; Controls whether scripts are stopped by aborting their threads externally (abort) + ; or by co-operative checks inserted by OpenSimulator into compiled script (co-op). + ; co-op will be more stable as aborting threads can cause instability. + ; abort was the default option in OpenSimulator 0.8 and before. + ; If this setting is changed between co-op and abort, then existing scripts will automatically be recompiled if necessary. + ; However, the setting change will not take affect until the next time you restart the simulator. + ; Setting changes will not affect state information stored for scripts. + ScriptStopStrategy = abort + + ; Rate to poll for asynchronous command replies (ms) + ; currently unused + ;AsyncLLCommandLoopms = 50 + + ; Compile debug info (line numbers) into the script assemblies + CompileWithDebugInformation = false + + ; Interval (s) between background save of script states + SaveInterval = 120 + + ; Interval (s) between maintenance runs (0 = disable) + MaintenanceInterval = 10 + + ; Amount of time in milliseconds we will wait for an event to completely normally when a script stop is requested + ; before aborting the thread (such as when an object containing scripts is taken into inventory). + WaitForEventCompletionOnScriptStop = 1000 + + ; Minimum settable timer interval. Any timer setting less than this is + ; rounded up to this minimum interval. + MinTimerInterval = 0.1 + + ; Sensor settings + SensorMaxRange = 96.0 + SensorMaxResults = 16 + + +[Groups] + ; Groups data is cached for this number of seconds before another request is made to the groups service + ; Set to 0 to disable the cache. + ; Default is 30 seconds + GroupsCacheTimeout = 30 + + +[PacketPool] + ;RecyclePackets = true + ;RecycleDataBlocks = true + + ; If true, then the basic packet objects used to receive data are also recycled, not just the LLUDP packets. + ; This reduces data churn + RecycleBaseUDPPackets = true + + +[InterestManagement] + ; This section controls how state updates are prioritized for each client + ; Valid values are BestAvatarResponsiveness, Time, Distance, + ; SimpleAngularDistance, and FrontBack + UpdatePrioritizationScheme = BestAvatarResponsiveness + ReprioritizationEnabled = true + ReprioritizationInterval = 2000.0 + RootReprioritizationDistance = 10.0 + ChildReprioritizationDistance = 20.0 + + ; TEST OPTION KEEP AS FALSE + ; if true, don't send object updates if outside view range + ObjectsCullingByDistance = false + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in the same region + ; Updates will always be sent to the avatar that the update addresses and if av velocity is effectively zero (to prevent drift due to missing updates). + ; n > 1 will reduce UDP traffic but will lead to laggier movement observed in other avatars. + RootTerseUpdatePeriod = 0 + + ; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in another region + ; n > 1 will reduce UDP traffic but may lead to laggier movement observed in other avatars, though values up to 4 may not generate a noticeable effect. + ChildTerseUpdatePeriod = 0 + + ; Send an update to clients if the difference from the last sent avatar position is greater than this tolerance + RootPositionUpdateTolerance = 0.05 + + ; Send an update to clients if the euclidian difference from the last sent avatar rotation is greater than this tolerance + RootRotationUpdateTolerance = 0.1 + + ; Send an update to clients if the difference from the last sent avatar velocity is greater than this tolerance + RootVelocityUpdateTolerance = 0.001 + + +[Statistics] + ; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames + ; to include in the averaging calculations + NumberOfFrames=10 + + +[Terrain] + ; If 'true' each avatar is only sent terrain patches within their view distance + ; This also changes the region terrain loading from 'lawn mower' to ordered around + ; the avatar outward. + SendTerrainUpdatesByViewDistance = True + + +[LandManagement] + ; When editing terrain or objects, parcel layer info is updated in the viewer. + ; This can be expensive for large regions. If this variable is 'true', only the + ; parcel layer data around the area of interest is sent. The parcel layer info + ; is sent for 'ParcelLayerViewDistance' around the interest point. + ; If 'ParcelLayerViewDistance' is >= 128, the operation for legacy sized regions + ; will be what it has always been (send the whole region's parcel layer info). + ; Other parcel updates (login, changing parcel ownership, ...) will still send + ; whole region. + LimitParcelLayerUpdateDistance = true + ParcelLayerViewDistance = 128 + + +;; If you are using a simian grid frontend you can enable +;; this module to upload tile images for the mapping fn +;; +[SimianGridMaptiles] + RefreshTime = 3600 + + +;; +;; These are defaults that are overwritten below in [Architecture]. +;; These defaults allow OpenSim to work out of the box with +;; zero configuration +;; +[AssetService] + ; Disable this to prevent the default asset set from being inserted into the + ; asset store each time the region starts + AssetLoaderEnabled = true + + +[AutoBackupModule] + ;; default is module is disabled at the top level + AutoBackupModuleEnabled = false + + +[ServiceThrottle] + ;; Default time interval (in ms) for the throttle service thread to wake up + Interval = 5000 + + +[Materials] + MaxMaterialsPerTransaction = 50 diff --git a/bin/config-include/config_localhost.ini b/bin/config-include/config_localhost.ini new file mode 100644 index 0000000..501a1f4 --- /dev/null +++ b/bin/config-include/config_localhost.ini @@ -0,0 +1,49 @@ +; The Const section allows us to define some basic information that we +; will use throughout our configuration. We will provide examples for +; setting the base url of the ROBUST server and the public and private ports +; it uses. Changing the values of the constants will set the operating +; parameters thoughout the configuration. Other constants that may prove +; to be useful may be added to the followin section. They may be +; referenced anywhere in the configuration by using ${Const|Name}. One +; such use is providing a base path for setting locations that ROBUST +; uses to write data. + +; Also put grid specific stuff here. + + +[Paths] + AssetsPath = "../../AssetFiles" + BackupPath = "../../backups" + CachePath = "../../caches" + ConfigPath = "../../config" + DbPath = "../../db" + LogPath = "../../logs" + WebPath = "../../web" + +[Const] + MOTD = "Welcome to your local grid." + + GridName = "localhost Grid" + ShortGridName = "lg" + + ; For a grid these will usually be the externally accessible IP/DNS + ; name and use default public port 8002 and default private port 8003 + ; For a standalone this will usually be the externally accessible IP/DNS + ; name and use default public port 9000. The private port is not used + ; in the configuration for a standalone. + BaseHostname = "http://127.0.0.1" + HostName = "localhost" + BaseURL = ${Const|BaseHostname} + GridURL = ${Const|BaseHostname} + SSLURL = "https://${Const|HostName}" + + PublicPort = "8002" + PrivatePort = "8003" + PublicSSLPort = "8443" + + ; The public port of the ROBUST asset server, which might be different. + AssetServerPort = "8003" + + ; Database credentials. + DataProvider = "OpenSim.Data.MySQL.dll" + ConnectionString = "Data Source=MYSQL_HOST;Database=MYSQL_DB;User ID=MYSQL_USER;Password=MYSQL_PASSWORD;Old Guids=true;" -- cgit v1.1