[Startup]

; Set this to true if you are connecting your OpenSimulator regions to a grid
; Set this to false if you are running OpenSimulator in standalone mode
gridmode = false

; ##
; ## REGIONS
; ##

; Determine where OpenSimulator looks for the files which tell it which regions to server
; Defaults to "filesystem" if this setting isn't present
region_info_source = "filesystem"
; region_info_source = "web"

; Determines where the region XML files are stored if you are loading these from the filesystem.  
; Defaults to bin/Regions in your OpenSimulator installation directory
; regionload_regionsdir="C:\somewhere\xmlfiles\"

; Determines the page from which regions xml is retrieved if you are loading these from the web
; The XML here has the same format as it does on the filesystem (including the <Root> tag), 
; except that everything is also enclosed in a <Regions> tag.
; regionload_webserver_url = "http://example.com/regions.xml";

; Draw objects on maptile.   This step might take a long time if you've got a huge amount of 
; objects, so you can turn it off here if you'd like.
DrawPrimOnMapTile = true

; ##
; ## STORAGE
; ##

; *** Prim Storage - only leave one storage_plugin uncommented ***
; --- Null stores nothing - effectively disabling persistence:
storage_plugin = "OpenSim.Data.Null.dll"

; --- To use sqlite as region storage:
;storage_plugin = "OpenSim.Data.SQLite.dll"
storage_connection_string="URI=file:OpenSim.db,version=3";

; --- To use MySQL storage, supply your own connectionstring (this is only an example):
;     note that the supplied account needs create privilegies if you want it to auto-create needed tables.
; storage_plugin="OpenSim.Data.MySQL.dll"
; storage_connection_string="Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;";

; turn on experimental storage of prim inventories in the region database

; Prim inventory storage is now turned on by default
; However, this option remains in case it needs to be disabled
; More details of the current state of this can be found at
;
; http://opensimulator.org/wiki/OpenSim:Prim_Inventory_Persistence
;
storage_prim_inventories = true

; Select whether you want to use local or grid asset storage.
;
; If you're running in standalone, you definitely want local, since there is no grid (hence this is redundant, and should
; really be eliminated).  The database itself is defined in asset_plugin below
;
; If you're running a region server connecting to a grid, you probably want grid mode, since this will use the 
; grid asset server.  If you select local in grid mode, then you will use a database as specified in asset_plugin to store assets
; locally.  This will mean you won't be able to take items using your assets to other people's regions.
asset_database = "local"
;asset_database = "grid"

; Should avatars in neighbor sims see objects in this sim?
see_into_this_sim_from_neighbor = True

; ##
; ## PHYSICS
; ##

; Select a mesher here. ZeroMesher is save and fast.
; ZeroMesher also means that the physics engine models the physics of prims
; sticking to the basic shapes the engine does support. Usually this is only a box.
; Meshmerizer gives a better handling of complex prims by using triangle meshes.
; Note, that only ODE physics currently deals with meshed prims in a satisfactoring way
; 
meshing = ZeroMesher
;meshing = Meshmerizer

; Choose one of the physics engines below
physics = basicphysics
;physics = POS
;physics = OpenDynamicsEngine
;physics = modified_BulletX


startup_console_commands_file = "startup_commands.txt"
shutdown_console_commands_file = "shutdown_commands.txt"

;permissionmodules = "DefaultPermissionsModule"
serverside_object_permissions = false

; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true.
physical_prim = true

; To run a script every few minutes, set the script filename here
; timer_Script = "filename"

; ##
; ## ScriptEngine
; ##

; These are region modules loaded into each region to provide script support
; Scripts may be everything from LSL or C# scripts put in prims to whole game systems that controls the whole grid.
; You can load multiple modules by separating them with a coma.
;
; Example:
;script_engine = OpenSim.Region.ScriptEngine.DotNetEngine.dll,OpenSim.Region.ScriptEngine.RemoteServer.dll
;
; This is the current and most stable ScriptEngine:
script_engine = OpenSim.Region.ScriptEngine.DotNetEngine.dll

;Experimental remote ScriptServer plugin (does not currently work):
;script_engine = OpenSim.Region.ScriptEngine.RemoteServer.dll


[StandAlone]
accounts_authenticate = true
welcome_message = "Welcome to OpenSim"

; Asset database provider
asset_plugin = "OpenSim.Data.SQLite.dll"
; asset_plugin = "OpenSim.Data.MySQL.dll" ; for mysql
; asset_plugin = "OpenSim.Data.NHibernate.dll" ; for nhibernate

; the Asset DB source.  This only works for sqlite and nhibernate for now
; Asset Source SQLite Exampe
; asset_source = "URI=file:Asset.db,version=3"
; Asset Source NHibernate Example (DIALECT;DRIVER;CONNECTSTRING)
; asset_source = "SQLiteDialect;SqliteClientDriver;URI=file:Asset.db,version=3"

; Inventory database provider
inventory_plugin = "OpenSim.Data.SQLite.dll"
; inventory_plugin = "OpenSim.Data.MySQL.dll"
; inventory_plugin = "OpenSim.Data.NHibernate.dll" ; for nhibernate
; Inventory Source NHibernate Example (DIALECT;DRIVER;CONNECTSTRING)
; inventory_source = "SQLiteDialect;SqliteClientDriver;URI=file:Inventory.db,version=3"


; User Data Database provider
userDatabase_plugin = "OpenSim.Data.SQLite.dll"
; userDatabase_plugin = "OpenSim.Data.MySQL.dll"
; userDatabase_plugin = "OpenSim.Data.NHibernate.dll" ; for nhibernate
; User Source NHibernate Example (DIALECT;DRIVER;CONNECTSTRING)
; user_source = "SQLiteDialect;SqliteClientDriver;URI=file:User.db,version=3"

default_location_x = 1000
default_location_y = 1000
dump_assets_to_file = false


[Network]
http_listener_port = 9000
remoting_listener_port = 8895

; Uncomment below to enable llRemoteData/remote channels
; remoteDataPort = 20800

grid_server_url = "http://127.0.0.1:8001"
grid_send_key = "null"
grid_recv_key = "null"

user_server_url = "http://127.0.0.1:8002"
user_send_key = "null"
user_recv_key = "null"

asset_server_url = "http://127.0.0.1:8003"

inventory_server_url = "http://127.0.0.1:8004"


[Chat]
whisper_distance = 10
say_distance = 30
shout_distance = 100


[ODEPhysicsSettings]

;## 
;## World Settings
;##

;Gravity.  Feel like falling up?  change world_gravityz to 9.8 instead of -9.8.  m/s
world_gravityx = 0
world_gravityy = 0
world_gravityz = -9.8

; World Step size. (warning these are dangerous.  Changing these will probably cause your scene to explode dramatically)
; reference: fps = (0.09375/ODE_STEPSIZE) * 1000;
world_stepsize = 0.020
world_internal_steps_without_collisions = 10

;World Space settings. Affects memory consumption vs Collider CPU time for avatar and physical prim
world_hashspace_size_low = -4
world_hashSpace_size_high = 128

;Dynamic space settings Affects memory consumption vs Collider CPU time for static prim
meters_in_small_space = 29.9
small_hashspace_size_low = -4
small_hashspace_size_high = 66

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

; 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_linux = 3200.0
av_pid_proportional_linux = 1400.0

av_pid_derivative_win = 2200.0
av_pid_proportional_win = 900.0;

;girth of the avatar.  Adds radius to the height also
av_capsule_radius = 0.37

; Max force permissible to use to keep the avatar standing up straight
av_capsule_standup_tensor_win = 550000
av_capsule_standup_tensor_linux = 2000000

; used to calculate mass of avatar.  
; float AVvolume = (float) (Math.PI*Math.Pow(CAPSULE_RADIUS, 2)*CAPSULE_LENGTH);
; av_density * AVvolume;

av_density = 80

; use this value to cut 52% of the height the sim gives us
av_height_fudge_factor = 0.52

; 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

; ##
; ## Object options
; ##

; used in the mass calculation.
geometry_default_density = 10.000006836

; 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

; amount of time a geom/body will try to cross a region border before it gets disabled
geom_crossing_faiures_before_outofbounds = 5

; 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

; Used for llSetStatus.  How rigid the object rotation is held on the axis specified
body_motor_joint_maxforce_tensor_linux = 2
body_motor_joint_maxforce_tensor_win = 5

; ##
; ## Sculpted Prim settings
; ##

; Do we want to mesh sculpted prim to collide like they look?
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


[RemoteAdmin]
enabled = false
access_password = unknown


[RestPlugins]
enabled = false
password = unknown
prefix = /admin


[RestRegionPlugin]
enabled = false

; Uncomment the following for IRC bridge
; experimental, so if it breaks... keep both parts... yada yada
; also, not good error detection when it fails
;[IRC]
;server  = name.of.irc.server.on.the.net
;nick    = OpenSimBotNameProbablyMakeThisShorter
;channel = #the_irc_channel_you_want_to_connect_to
;port = 6667
;fallback_region = name of "default" region
;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
; must start with "PRIVMSG {0} : " or irc server will get upset
;for <bot>:<user in region> :<message>
;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
;for <bot>:<message> - <user of region> :
msgformat = "PRIVMSG {0} : {3} - {1} of {2}"
;for <bot>:<message> - from <user> :
;msgformat = "PRIVMSG {0} : {3} - from {1}"


[Voice]
; PLEASE NOTE that we don't have voice support in OpenSim quite yet - these configuration options are stubs
enabled = false
; This is not supported by the SLViewer right now and 
; hardcoded within the SL Viewer. Maybe it will be 
; changed in future. :-)
account_management_server = https://www.bhr.vivox.com/api2
; Global SIP Server for conference calls
sip_domain = testserver.com


[AsteriskVoice]
; PLEASE NOTE that we don't have voice support in OpenSim quite yet - these configuration options are stubs
enabled = false
; SIP account server domain 
sip_domain = testserver.com
; SIP conf server domain 
conf_domain = testserver.com
; URL of the asterisk opensim frontend 
asterisk_frontend = http://testserver.com:49153/
; password for the asterisk frontend XmlRpc calls
asterisk_password = bah-humbug
; timeout for XmlRpc calls to asterisk front end (in ms)
asterisk_timeout = 3000
; salt for asterisk nonces
asterisk_salt = paluempalum


; Uncomment the following to control the progression of daytime
; in the Sim.  The defaults are what is shown below
;[Sun]
; number of wall clock hours for an opensim day.  24.0 would mean realtime
;day_length = 0.5

; send a Sun update ever frame_rate # of frames.  A lower number will
; make for smoother sun transition at the cost of network
;frame_rate = 100


[ScriptEngine.DotNetEngine]
;
; These settings are specific to DotNetEngine script engine
; Other script engines based on OpenSim.Region.ScriptEngine.Common.dll will have almost identical settings, but in another section of this config file.
;

; When a script receives an event the event is queued.
; Any free thread will start executing this event. One script can only have one event executed simultaneously.
; If you have only one thread, and one script has a loop or does a lot of work, then no other scripts can run at the same time.
; Same if you have 10 threads, then only 10 scripts can be run simultaneously. 
; But because most scripts exit after their task, the threads are free to go on to the next script.

; Refresh ScriptEngine config options (these settings) every xx seconds
; 0 = Do not refresh
; Set it to number of seconds between refresh, for example 30.
; Will allow you to change ScriptEngine settings while server is running just by using "CONFIG SET" on console
; For example to increase or decrease number of threads: CONFIG SET NumberOfScriptThreads 10
; NOTE! Disabled for now. Feature does not work.
RefreshConfig=0

; Number of threads to use for script event execution
; Threads are shared across all regions
NumberOfScriptThreads=2

; Script event execution thread priority inside application.
; Valid values: Lowest, BelowNormal, Normal, AboveNormal, Highest
ScriptThreadPriority=BelowNormal

; How long MAX should a script event be allowed to run (per event execution)?
; Do not set this too low (like 50ms) as there are some time wasted in simply executing a function
; There is also a small speed penalty for every kill that is made
MaxEventExecutionTimeMs=5000

; Should we enable the max script event execution thread to look for scripts that exceed their timeslice?
EnforceMaxEventExecutionTime=true

; Should we stop the script completely when time exceeds?
; This is useful if you have a high <MaxEventExecutionTimeMs> and want to deactivate scripts that go wrong
; Note that for example physics engine can slow down the system and make scripts spend more time
DeactivateScriptOnTimeout=false

; If no scripts have executed in this pass how long should we sleep before checking again
; Impact:
; Too low and you will waste lots of CPU
; Too high and people touching object or similar will have to wait up to this amount of time before script responding
SleepTimeIfNoScriptExecutionMs=50

; AppDomains are used for two things:
; * Security: Scripts inside AppDomains are limited in permissions. 
; * Script unloading: When a script is deactivated it can not be unloaded. Only whole AppDomains can be unloaded.
;                     AppDomains are therefore only unloaded once ALL active scripts inside it has been deactivated (removed from prims).
; Each AppDomain has some memory overhead. But leaving dead scripts in memory also has memory overhead.
ScriptsPerAppDomain=1

; MaintenanceLoop
; How often to run maintenance loop
; Maintenance loop is doing: script compile/load, script unload, reload config, adjust running config and enforce max execution time
MaintenanceLoopms=50

; How many maintenanceloops between each of these.
; (if 2 then function will be executed every MaintenanceLoopms*2 ms)
; Script loading/unloading

; How long load/unload thread should sleep if there is nothing to do
; Higher value makes it respond slower when scripts are added/removed from prims
; But once active it will process all in queue before sleeping again
MaintenanceLoopTicks_ScriptLoadUnload=1

; Other tasks
; check if we need to reload config, adjust running config and enforce max execution time
MaintenanceLoopTicks_Other=10


; Maximum number of items in load/unload queue before we start rejecting loads
; Note that we will only be rejecting load. Unloads will still be able to queue.
LoadUnloadMaxQueueSize=100

; Maximum number of (LSL) events that can be queued before new events are ignored.
EventExecutionMaxQueueSize=300

; Async LL command sleep
; If no async LL commands are waiting, how long should thread sleep before checking again
; Async LL commands are LSL-commands that causes an event to be fired back with result
AsyncLLCommandLoopms=50

; When script is converted from LSL to C#, or just plain compiled, a copy of the script source will be put in the ScriptEngine folder
WriteScriptSourceToDebugFile=true

; Specify default script compiler
; If you do not specify //cs, //vb, //js or //lsl tag as the first characters of your script then the default compiler will be chosen
; Valid languages are: lsl, cs, js and vb
DefaultCompileLanguage=lsl

; Specify what compilers are allowed to be used
; Note vb only works on Windows for now (Mono lacks VB compile support)
; Valid languages are: lsl, cs, js and vb
AllowedCompilers=lsl,cs,js,vb

; Compile scripts with debugging
; Probably a thousand times slower, but gives you a line number when something goes wrong.
CompileWithDebugInformation=true

; Remove old scripts on next startup
CleanUpOldScriptsOnStartup=true

[LL-Functions]
; Set the following to true to allow administrator owned scripts to execute console commands
AllowosConsoleCommand=false

AllowGodFunctions = false

; Maximum number of llListen events we allow per script
; Set this to 0 to have no limit imposed.
max_listens_per_script = 64

[DataSnapshot]
; The following set of configs pertains to search.
; Set index_sims to true to enable search engines to index your searchable data
; If false, no data will be exposed, DataSnapshot module will be off, and you can ignore the rest of these search-related configs
index_sims = false
; If search is on, change this to your grid name; will be ignored for standalones
gridname = "OSGrid"
; 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
default_snapshot_period = 1200
; This will be created in bin, if it doesn't exist already. It will hold the data snapshots.
snapshot_cache_directory = "DataSnapshot"
; This semicolon-separated string serves to notify specific data services
; about the existence of this sim.
data_services="http://metaverseink.com/cgi-bin/register.py"


[Economy]
; These economy values get used in the BetaGridLikeMoneyModule.  - This module is for demonstration only -
; In grid mode, use this currency XMLRPC server.  Leave blank for normal functionality
CurrencyServer = ""
; "http://192.168.1.127/currency.php"

; In grid mode, this is the land XMLRPC server. Leave blank for normal functionality
LandServer = ""
;"http://192.168.1.127/landtool.php"

; 45000 is the highest value that the sim could possibly report because of protocol constraints
ObjectCapacity = 45000

; Money Unit fee to upload textures, animations etc
PriceUpload = 0

; Money Unit fee to create groups
PriceGroupCreate = 0

; This is the account Money goes to for fees.  Remember, economy requires that money circulates somewhere... even if it's an upload fee
EconomyBaseAccount = 00000000-0000-0000-0000-000000000000

; This is the type of user that will pay fees.  
; Set this to 2 for users, estate managers and Estate Owners
; Set this to 1 for Users and Estate Managers
; Set this to 0 for Users only.   
; -1 disables
UserLevelPaysFees = -1

; Amount to give to user as a stipend
UserStipend = 1000

; When a user gets low on money units and logs off, then logs back on, issue a new stipend if they have less money units then this 
; amount. Be aware that the account money isn't stored anywhere so users will get a stipend if you restart the simulator
IssueStipendWhenClientIsBelowAmount = 10

; If this is true, the simulator will remember account balances until the simulator is shutdown or restarted.
KeepMoneyAcrossLogins = true

; 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.
ObjectCount = 0
PriceEnergyUnit = 100
PriceObjectClaim = 10
PricePublicObjectDecay = 4
PricePublicObjectDelete = 4
PriceParcelClaim = 1
PriceParcelClaimFactor = 1

PriceRentLight = 5
TeleportMinPrice = 2
TeleportPriceExponent = 2
EnergyEfficiency = 1
PriceObjectRent = 1
PriceObjectScaleFactor = 10
PriceParcelRent = 1


[SVN]
Enabled = false
Directory = SVNmodule\repo
URL = "svn://your.repo.here/"
Username = "user"
Password = "password"
ImportOnStartup = false
Autosave = false
AutoSavePeriod = 15 ; Number of minutes between autosave backups


[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
; Rate to poll for asynchronous command replies (ms)
AsyncLLCommandLoopms = 50
; Save the source of all compiled scripts
WriteScriptSourceToDebugFile = false
; Default language for scripts
DefaultCompileLanguage = lsl
; List of allowed languages (lsl,vb,js,cs)
AllowedCompilers = lsl
; Compile debug info (line numbers) into the script assemblies
CompileWithDebugInformation = true
; Allow the use of os* functions (some are dangerous)
AllowOSFunctions = false
; Interval (s) between background save of script states
SaveInterval = 120
; Interval (s) between maintenance runs (0 = disable)
MaintenanceInterval = 10
; Time a script can spend in an event handler before it is interrupted
EventLimit = 30
; If a script overruns it's event limit, kill the script?
KillTimedOutScripts = false
; Allow OS console command functionality (VERY DANGEROUS!!)
AllowosConsoleCommand = false