AssetServerProposal/Verse

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(New page: To turn Cable Beach into a [http://verse.blender.org/faq/ Verse] host, the Verse protocol needs to be implemented in C#. There was a previous effort to wrap libverse using P/Invoke, but th...)
 
m (updated a dead link to a related Wikipedia article)
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
To turn Cable Beach into a [http://verse.blender.org/faq/ Verse] host, the Verse protocol needs to be implemented in C#. There was a previous effort to wrap libverse using P/Invoke, but this is now a dead project.
+
__NOTOC__
 +
{{Quicklinks}}
  
==Work Required==
+
{{proposal}}
 +
 
 +
To turn Cable Beach into a [https://en.wikipedia.org/wiki/Verse_protocol Verse] host, the Verse protocol needs to be implemented in C#. There was a previous effort to wrap libverse using P/Invoke, but this is now a dead project.
 +
 
 +
== Work Required ==
  
 
Create a C# Verse library that implements:
 
Create a C# Verse library that implements:
  
* RSA encryption for login (may require big integer support, there is a Mono library for this)
+
* <s>RSA encryption for login</s>
* The modified XOR encryption used for packet encryption
+
* <s>The modified XOR encryption used for packet encryption</s>
* UDP server (the libomv UDP server can be used here)
+
* <s>UDP server (the libomv UDP server can be used here)</s>
 
* Callback to connect login attempts to an authorization backend
 
* Callback to connect login attempts to an authorization backend
* Subscription service (for clients to subscribe to different data types) with four unique states for each node in common data, three states per object node, two states per geometry node, one state per material node, two states per bitmap node, two states per text node, two states per curve node, and three states per audio node
+
* <s>Subscription commands for clients to subscribe to different data types</s>
* Basic Node class or interface
+
* Geometry node command decoding
* Object, Geometry, Material, Bitmap, Text, Audio and Curve nodes
+
* <s>Command callback system</s>
* Custom layers for each node type
+
* <s>Packet serialization/deserialization</s>
* Callback defined for each command
+
* Packet serialization/deserialization
+
 
* Packet queuing (logging) system for incoming and outgoing, with event compression (searching for old commands to make obsolete)
 
* Packet queuing (logging) system for incoming and outgoing, with event compression (searching for old commands to make obsolete)
 
* ACK/NAK system
 
* ACK/NAK system
 
* Ordered transmission mode for non-idempotent commands
 
* Ordered transmission mode for non-idempotent commands
* Decoders for each message type that connect packets to callbacks and take action such as broadcasting the packet or sending it back to the client
+
* <s>Decoders for each message type that connect packets to callbacks and take action such as broadcasting the packet or sending it back to the client</s>
  
===Estimate===
+
=== Estimate ===
  
A basic implementation (possibly only supporting one or two types of nodes) should be possible in six weeks or less. Once this library is created, a VerseFrontend.cs could be started for Cable Beach to create a Verse host. Some form of Verse file format would have to be created to make use of the storage backends, and logic would need to be added to balance between overloading the storage backend with small updates and potentially losing data by not saving to disk. This might take up to another two weeks. Finally, an OpenSim (realXtend server?) Verse client could be written that subscribes to geometry data and converts subdivision surfaces into polygon meshes. The complexity of this depends on availability of algorithms to convert subdivision surfaces into polygons, and the amount of work required to inject new mesh objects into the OpenSim scene. A rough estimate would be one week.
+
A basic implementation (possibly only supporting one or two types of nodes) should be possible in two weeks or less. Once this library is created, a VerseFrontend.cs could be started for Cable Beach to create a Verse host. Some form of Verse file format would have to be created to make use of the storage backends, and logic would need to be added to balance between overloading the storage backend with small updates and potentially losing data by not saving to disk. This might take up to another two weeks. Finally, an OpenSimulator (realXtend server?) Verse client could be written that subscribes to geometry data and converts subdivision surfaces into polygon meshes. The complexity of this depends on availability of algorithms to convert subdivision surfaces into polygons, and the amount of work required to inject new mesh objects into the OpenSimulator scene. A rough estimate would be one week.
  
Total project time: Nine weeks
+
Total project time: Five weeks

Latest revision as of 12:42, 8 September 2020


To turn Cable Beach into a Verse host, the Verse protocol needs to be implemented in C#. There was a previous effort to wrap libverse using P/Invoke, but this is now a dead project.

[edit] Work Required

Create a C# Verse library that implements:

  • RSA encryption for login
  • The modified XOR encryption used for packet encryption
  • UDP server (the libomv UDP server can be used here)
  • Callback to connect login attempts to an authorization backend
  • Subscription commands for clients to subscribe to different data types
  • Geometry node command decoding
  • Command callback system
  • Packet serialization/deserialization
  • Packet queuing (logging) system for incoming and outgoing, with event compression (searching for old commands to make obsolete)
  • ACK/NAK system
  • Ordered transmission mode for non-idempotent commands
  • Decoders for each message type that connect packets to callbacks and take action such as broadcasting the packet or sending it back to the client

[edit] Estimate

A basic implementation (possibly only supporting one or two types of nodes) should be possible in two weeks or less. Once this library is created, a VerseFrontend.cs could be started for Cable Beach to create a Verse host. Some form of Verse file format would have to be created to make use of the storage backends, and logic would need to be added to balance between overloading the storage backend with small updates and potentially losing data by not saving to disk. This might take up to another two weeks. Finally, an OpenSimulator (realXtend server?) Verse client could be written that subscribes to geometry data and converts subdivision surfaces into polygon meshes. The complexity of this depends on availability of algorithms to convert subdivision surfaces into polygons, and the amount of work required to inject new mesh objects into the OpenSimulator scene. A rough estimate would be one week.

Total project time: Five weeks

Personal tools
General
About This Wiki