Blender homepage link
header graphic
 

FAQ

Verse Basics

Question What is Verse?
Answer Verse is a real-time network protocol for 3D graphics that allows multiple applications to work with the same data.

Question OK…could you elaborate?
Answer Yes, please read the Introduction to the Specification.

Question What can Verse be used for?
Answer All types of 3D and 2D graphics applications using collaboration, including gaming, hand-held, wireless, computational steering, simulation, education, design review and so on…

Question Who wrote Verse? Who conceived of it?
Answer I, Eskil Steenberg. Earlier versions were developed at the Interactive Institute, with lots of help from Emil Brink.

Question So there is an old Verse?
Answer Yes. It can be found at verse.sf.net. The new version is not compatible with the old version.

Question Are there any apps using Verse?
Answer Yes. Many work with the former version of Verse, and are being ported over to the new 2.0 implementation.

Question Am I bugging you by e-mailing you?
Answer No, you are encouraging me, but I may not be able to answer very quickly.

Question So I should mail you even if my question is silly?
Answer yes!

Question I have written something! It's kind of silly, what should I do with it?
Answer Post it!

Question Are you aware of the holes/spelling issues in the spec?
Answer Yes, but don't let that stop you, mail me about it.

Question Is there anything special that is needed, that I should focus on coding?
Answer No, everything is needed! Everything is also appreciated, so do what ever you want!

Question Will there be more functionality added to Verse?
Answer Yes, some.

Question What license is the Verse protocol implementation under?
Answer A BSD-type free license. (Yes, you can make commercial components)

Question Can I implement my own Verse implementation using the spec?
Answer Yes, go right ahead.

Question What platform does it run on?
Answer Verse is very portable and should run on most platforms.

Question I want to write something but I don't want it to be LGPL. Can I do that?
Answer Yes.

Question I want to change the Verse protocol to support X, can I do that?
Answer Yes, but don't, because then it won't be compatible with other things written for the protocol. Mail me instead and I will try to find a solution for you.

Question When are we going to see an app?
Answer This experiment is not about an app, its about having lots of little apps working together.

Question Cool. I'm not a programmer, but I want to help. How do I do that?
Answer There is lots to do, like host web sites and stuff like that. We also need as much help and support as we can get so please spread the word and get as many as possible to help.

Question Is Verse secure?
Answer Verse is written to be secure but may still have bugs. Verse is still very new and as far as I know no one has tried to hack it yet, but I assume there are exploits. These exploits are likely to make it possible for an attacker to allocate memory, use cpu, and crash Verse but are unlikely to be able to read, edit, or delete files, or execute applications like trojans or viruses. If you are or you know a hacker who would like to hack verse, mail me any exploits you can find. I would very much like to discuss security concerns with someone who knows a lot about it.

preformance
Question How fast is Verse?
Answer It's fast, but it all depends on your network.

Question Is Verse optimized?
Answer Verse is optimized mainly for low-latency and minimum bandwidth usage.

Question How many users can the server handle?
Answer It all depends on how much traffic there is. The server is only limited by the network connection.

Question Is client/server really scalable for large applications?
Answer I think so, but if I'm wrong then Verse can also be implemented for hierarchical servers, server farms and point-to-point.

Question Why doesn't Verse use TCP/CORBA/HTTP/FTP?
Answer None of those are optimized for low-latency: they have too large headers and HTTP/FTP are used for files rather then real-time commands.

Data

Question How much data can be stored in verse?
Answer 4,294,967,295 nodes, 4,294,967,295 vertices and polygons per geometry node, 65,535 layers per geometry node, bitmaps up to 65,535 pixels in 3 dimensions. 65,535 channels (layers) per bitmap node. 65,535 fragments per material node. 65,535 buffers of text in each text node, each containing up to 4,294,967,295 lines of text.

Question What kind geometry can be stored?
Answer Creased Catmull-Clark Subdivision Surfaces.

Question Why doesn't Verse support other geometry types?
Answer SDS is a popular type of geometry, and polygons, B-splines and NURBS can all be nicely converted to SDS. There is also a strong motivation to keep the API and system small and easy to write for. A single geometry representation helps a lot.

Question Can I add my own geometry type?
Answer Yes, but the resulting protocol won't be Verse and won't be compatible with anything else written with Verse, so it's not a very good idea.

Question My app uses a different kind of data, what should I do?
Answer Your application must convert the data into the Verse format. Sometimes you may need to keep the data in both formats.

Question Why doesn't Verse support Construction History?
Answer Verse only stores the result of operations, however, applications are free to internally use construction history. The reason for this is to make application writing easier.

Question Is there a Verse file format?
Answer No, not a "official" format, though if you want to create one, please let me know.

Question How do I know what the data will look like?
Answer It depends on the implementation, each implementation should try to render as closely as possible to the spec.

Question What method should verse data be rendered with?
Answer Each implementation is free to choose what ever method of rendering, hardware and API.

Question Can you render off-line?
Answer Yes, you can output a snapshot and render it out in a off-line renderer.

Question Where can I store ny own data?
Answer In tags, text nodes, and in layers of the geometry and bitmap nodes.

writing apps
Question How do I start?
Answer Start by reading the spec to familiarize yourself with Verse and then take a look at the tutorials.

Question Should I write my app as a "host" or as a "client"?
Answer Almost all apps should be clients.

Question When do I write host apps?
Answer If you want to write a new server implementation. Host applications are mainly meant to be used as hubs connecting multiple clients.

Question I'm having trouble compiling Verse on my platform. What do I do?
Answer Mail me.

Question I'm having a hard time knowing what commands are being sent. What can I do?
Answer Rebuild Verse with V_PRINT_SEND_COMMANDS and V_PRINT_RECEIVE_COMMANDS defined, and all outgoing and incoming traffic will be decoded and printed to standard output.

Question Can I write plug-ins for other apps so that they can talk to Verse?
Answer Yes!

Question I want to write in another language.
Answer That is not a question. :)

Question Do you mind if I write Verse apps in another language?
Answer Not at all! If you write a wrapper for another language, please mail me so other people may use it.

Question Verse is really low-level. Is there anything higher-level written on top of it?
Answer Yes, it's called "Enough" and will be out soon.

Question Can I write an app that only listens?
Answer Yeah, no problem.

Question Can I write an app that ignores incoming data?
Answer Yeah you may, but you should listen to your own commands coming back. You should never assume your commands won't bounce back.

Question What libraries should I use?
Answer Verse requires standard C, and sockets. Your components can use whatever you want (OpenGL, GLUT, GTK+, Carbon, SDL, DirectX). We suggest but don't force you to write your component portably.

Question Do I need to listen to all incoming commands?
Answer No. If you don't want to listen to the commands don't subscribe to them.

Question I call multiple send commands but only the last one gets sent, why?
Answer You must have different IDs to differentiate the commands.

Question My callback gets the wrong data, why?
Answer Don't forget that you must add a user pointer as the first parameter to your callback function.