;; 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