Component Programming Guide

From Virtual World Web Wiki
Jump to: navigation, search

This section explains Virtual World Web server components, how to create your own, and the various infrastructure systems available to your component.

About Server Components

Virtual World Web server component are .NET assemblies (.dll files) that are loaded at run-time by the VWW server software. There are four VWW server services that together form what we refer to as the Layer One or "The VWW Infrastructure". Each of these services will load your component assembly at startup, and include your component in the processing of various operations. The four services are:

  • Service Provider - The service that co-ordinates your VWW network presence, manages Instance Hosts, makes changes to stored data, and communicates with Root Services
  • Instance Host - The service that hosts running scene instances and accepts and manages client connections. There may be many of these running to balance load. This service is where your component will likely do most of its work.
  • Admin Web - The service that provides the admin configuration tool. Your component will very likely extend this tool to allow your admins to configure your component.
  • Web View - The service that renders user-facing web pages for worldspace. This is a fairly undeveloped service at present, but it's intention is to allow components to come together to render useful information about a scene or world that is visible on the web. This would allow for linkage with social media among other things.

Getting Started

Creating a Component - A quick-start guide to creating, deploying, and updating your own components.

Component Basics - A tour of the component template project layout, and a little about the technologies involved.

Component Programming

Following are a set of guides which each explain a powerful features of the VWW platform and how to work with it from your custom component. We recommend reading these in order as we've tried to order them so they build from foundational concepts to the more complex and specialized.

  • Handling Server Events - How your component involves itself in server event processing.
  • Working With Databases - How to create your own data model and store tables in the main database.
  • Communicating With Other Components - How to offer your component's services to and consume the services of other components.
  • Communicating Across Servers - There are several mechanisms for communicating between the several services your component is loaded into, including communicating between running instances on scaled-out instance hosts.
  • Extending Server Objects - How to attach component extensions to classes of server objects to simplify lifetime management of your object instances.
  • Extending Server JavaScript - How to add JavaScript global objects, extend existing objects, and otherwise offer functionality to the world scripting system.
  • Layer One Programming - Describes the major sections of functionality available from Layer One and how to work with them;
    • The Settings System - How to work with system settings, including defining your own.
    • The Chat System - How to intercept chat messages, handle slash commands, work with channels, send chat messages, etc.
    • The Worldspace System - How to create and manage worldspace (worlds, scenes, layers, instances, etc)
    • The Object System - How to work with Object Types, inventory containers, tags, metadata, and more.
    • The Entity System - How to work with accounts, personas, groups, and more.
    • The Permissions System - How to work with access control.
    • The Financial System - How to create and work with tokens that can act as game currencies.
    • The Resource System - How to work with resources. How to link resources (files) into the world. How to accept user uploads.
    • The Translation System - How to make your component localized (support multiple languages).
    • The View System - How to work with shared 3D views. These are the basis for instances (server hosted scenes, where all connected users see changes to the scene in real-time), but also allow you to create smaller bits of shared 3D document.
  • Extending the Transfer System - How to include data when your component is transferred to another server, or make your own objects easily transferable via the admin.
  • Extending User Interface - How to program the server side of custom user interface.
  • Extending the Admin - How to extend the admin from your component.
  • Extending the WebView - How to extend the WebView from your component.