Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Open Simulator Technical Help
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
OpenSimulator Internals/Package Overview
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= Package Overview = OpenSimulator's source tree is organized into a hierarchy of packages (C# projects). This page gives a top-level map. For detailed internals of individual classes, see the [[OpenSimulator_Internals/Code_Map|Code Map]] pages. == OpenSim == The top-level package launches the region server and manages the console. * '''Entry point:''' <code>OpenSim/Region/Application/Application.cs</code> β <code>Main()</code> instantiates an <code>OpenSim</code> object, calls <code>Startup()</code> (which spins up worker threads), then blocks the initial thread on the main console prompt. * <code>OpenSim.Startup()</code> is inherited from <code>OpenSim.Framework.Servers.BaseOpenSimServer</code>; it delegates to <code>StartupSpecific()</code>. == OpenSim.Addons == '''Note: not actively maintained. Use with caution.''' * '''OpenSim.Addons.Groups''' β group support. * '''OpenSim.Addons.OfflineIM''' β offline IM support. == OpenSim.ApplicationPlugins == Application plugins: modular code that affects the entire region server (as distinct from [[OpenSimulator_Internals/Package_Overview#OpenSim.Region.CoreModules|region modules]], which affect individual regions). == OpenSim.Capabilities == Basic data structures for capability (HTTPS/event-queue) support. == OpenSim.ConsoleClient == REST console client for remote connection to a running OpenSimulator instance. Not widely deployed; most operators use a <code>screen</code> session on Linux or separate terminals on Windows. == OpenSim.Data == All low-level database access code. Contains per-backend packages: * '''OpenSim.Data.MySQL''' β MySQL/MariaDB backend (primary for grid deployments). * '''OpenSim.Data.SQLite''' β SQLite backend (common for standalone/testing). Each backend implements the <code>IAssetData</code> and sibling interfaces defined here. The interface hierarchy is: <code>OpenSim.Data</code> defines the interfaces; per-DB packages provide the implementations. See also: [[OpenSimulator_Internals/Useful_Queries|Useful Queries]]. == OpenSim.Framework == General framework code shared across the simulator and ROBUST. Not region-specific. Subpackages of note: {| class="wikitable" |- ! Subpackage !! Purpose |- | OpenSim.Framework.AssetLoader.Filesystem || Loads library assets from the local filesystem. |- | OpenSim.Framework.Console || Console infrastructure. |- | OpenSim.Framework.Monitoring || Statistics gathering and monitoring. |- | OpenSim.Framework.RegionLoader.FileSystem || Loads region config from filesystem (e.g. <code>bin/Regions/Regions.ini</code>). |- | OpenSim.Framework.RegionLoader.Web || Loads region config from a remote URL. |- | OpenSim.Framework.Serialization || OAR and IAR read/write infrastructure. |- | OpenSim.Framework.Servers || Generic server base classes, HTTP server infrastructure. |} Two subpackages handle configuration loading from HTTP and XML respectively; neither is a current deployment path. == OpenSim.Region == Most of the region-specific code lives here. === OpenSim.Region.ClientStack === Infrastructure for pluggable UDP client stacks. In practice only one stack exists (LLUDP); the abstraction remains in case alternatives are ever needed. * '''OpenSim.Region.ClientStack.LindenCaps''' β HTTP/capability side of the Second Life protocol. Glues cap requests to region modules. * '''OpenSim.Region.ClientStack.LindenUDP''' β UDP side of the Second Life protocol. Glues UDP packets to scene and region module code. Future Code Map page: [[OpenSimulator_Internals/Code_Map/LLUDPServer|LLUDPServer]] (planned). === OpenSim.Region.CoreModules === The bundled region modules. This is a large package covering a wide range of functionality. Key modules documented in the Code Map: * [[OpenSimulator_Internals/Code_Map/AttachmentsModule|AttachmentsModule]] β avatar attachment lifecycle. * [[OpenSimulator_Internals/Code_Map/EntityTransferModule|EntityTransferModule]] β region crossings and teleports. * [[OpenSimulator_Internals/Code_Map/HGEntityTransferModule|HGEntityTransferModule]] β Hypergrid teleport handling. * [[OpenSimulator_Internals/Code_Map/InventoryAccessModule|InventoryAccessModule]] β inventory access during rez/derez. * [[OpenSimulator_Internals/Code_Map/AvatarFactoryModule|AvatarFactoryModule]] β avatar appearance management. === OpenSim.Region.DataSnapshot === Generates an XML summary of region contents; can be exposed to external search engines. === OpenSim.Region.Framework === The core of the simulator: scene graph, [[OpenSimulator_Internals/Code_Map/ScenePresence|ScenePresence]], scene object classes, inventory structures, and the [[OpenSimulator_Internals/Code_Map/Scene|Scene]] itself. === OpenSim.Region.OptionalModules === Region modules not considered core; could in principle be removed while retaining a functional Second Life-compatible simulator. === OpenSim.Region.Physics === Physics framework and engine plugins: BulletSim, ubODE, ODE. === OpenSim.Region.ScriptEngine === Script engine infrastructure. Current engines: XEngine (older), YEngine (current). === OpenSim.Region.UserStatistics === Exposes simulator statistics via a web page. == OpenSim.Server == Server infrastructure shared between the region simulator and ROBUST. * '''OpenSim.Server.Base''' β common server infrastructure. * '''OpenSim.Server.Handlers''' β translates raw incoming HTTP requests to service calls. Used primarily in grid mode for ROBUST instances. Example: <code>Asset/AssetServerGetHandler</code> translates an asset fetch request into a call to the asset service and returns the result. == OpenSim.Services == Service implementations and the connectors that invoke them remotely over HTTP. * In '''grid mode''': service implementations run inside ROBUST instances. * In '''standalone mode''': service implementations are instantiated directly inside OpenSim.exe. <code>OpenSim.Services.Connectors</code> contains the HTTP client code that region simulators use to talk to remote ROBUST services. See [[OpenSimulator_Internals/Connector_Architecture|Connector Architecture]] for the full connector and service table. == OpenSim.Tests == Test infrastructure and some standalone client test code. Actual regression tests live in <code>*.Tests</code> subpackages throughout the tree (e.g. <code>OpenSim.Region.Framework.Tests</code>). == OpenSim.Tools == Utility tools associated with OpenSimulator but not used in normal operation. == See Also == * [[OpenSimulator_Internals/Code_Map|Code Map]] β per-class internals * [[OpenSimulator_Internals/Connector_Architecture|Connector Architecture]] β service/connector table * [[OpenSimulator_Internals/Useful_Queries|Useful Queries]] β database reference * [[OpenSimulator_Internals/Walkthroughs|Walkthroughs]] β runtime flow documentation [[Category:OpenSimulator Internals]]
Summary:
Please note that all contributions to Open Simulator Technical Help may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Open Simulator Technical Help:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
OpenSimulator Internals/Package Overview
Add topic