|
Verse Basics
What is Verse?
Verse is a real-time network protocol for 3D graphics that allows
multiple applications to work with the same data.
OK…could you elaborate?
Yes, please read the
Introduction to the Specification.
What can Verse be used for?
All types of 3D and 2D graphics applications using
collaboration, including gaming, hand-held, wireless,
computational steering, simulation, education, design review and
so on…
Who wrote Verse? Who conceived of it?
I, Eskil Steenberg. Earlier versions were developed at
the Interactive Institute, with lots of help from Emil Brink.
So there is an old Verse?
Yes. It can be found at verse.sf.net. The new version is
not compatible with the old version.
Are there any apps using Verse?
Yes. Many work with the former version of Verse, and are being
ported over to the new 2.0 implementation.
Am I bugging you by e-mailing you?
No, you are encouraging me, but I may not be able to answer very quickly.
So I should mail you even if my question is silly?
yes!
I have written something! It's kind of silly, what should I
do with it?
Post it!
Are you aware of the holes/spelling issues in the spec?
Yes, but don't let that stop you, mail me about it.
Is there anything special that is needed, that I should focus
on coding?
No, everything is needed! Everything is also appreciated, so
do what ever you want!
Will there be more functionality added to Verse?
Yes, some.
What license is the Verse protocol implementation under?
A BSD-type free license. (Yes, you can make commercial components)
Can I implement my own Verse implementation using the spec?
Yes, go right ahead.
What platform does it run on?
Verse is very portable and should run on most platforms.
I want to write something but I don't want it to be LGPL. Can I do that?
Yes.
I want to change the Verse protocol to support X, can I do
that?
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.
When are we going to see an app?
This experiment is not about an app, its about having lots of little apps working together.
Cool. I'm not a programmer, but I want to help. How do I do that?
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.
Is Verse secure?
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.
How fast is Verse?
It's fast, but it all depends on your network.
Is Verse optimized?
Verse is optimized mainly for low-latency and minimum
bandwidth usage.
How many users can the server handle?
It all depends on how much traffic there is. The server is
only limited by the network connection.
Is client/server really scalable for large applications?
I think so, but if I'm wrong then Verse can also be implemented for
hierarchical servers, server farms and point-to-point.
Why doesn't Verse use TCP/CORBA/HTTP/FTP?
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
How much data can be stored in verse?
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.
What kind geometry can be stored?
Creased Catmull-Clark Subdivision Surfaces.
Why doesn't Verse support other geometry types?
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.
Can I add my own geometry type?
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.
My app uses a different kind of data, what should I do?
Your application must convert the data into the Verse format.
Sometimes you may need to keep the data in both formats.
Why doesn't Verse support Construction History?
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.
Is there a Verse file format?
No, not a "official" format, though if you want to create
one, please let me know.
How do I know what the data will look like?
It depends on the implementation, each implementation should
try to render as closely as possible to the spec.
What method should verse data be rendered with?
Each implementation is free to choose what ever method of
rendering, hardware and API.
Can you render off-line?
Yes, you can output a snapshot and render it out in a
off-line renderer.
Where can I store ny own data?
In tags, text nodes, and in layers of the geometry and bitmap
nodes.
How do I start?
Start by reading the spec to familiarize yourself with Verse
and then take a look at the tutorials.
Should I write my app as a "host" or as a "client"?
Almost all apps should be clients.
When do I write host apps?
If you want to write a new server implementation. Host
applications are mainly meant to be used as hubs connecting multiple clients.
I'm having trouble compiling Verse on my platform. What do I do?
Mail me.
I'm having a hard time knowing what commands are being sent. What can I do?
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.
Can I write plug-ins for other apps so that they can talk to Verse?
Yes!
I want to write in another language.
That is not a question. :)
Do you mind if I write Verse apps in another language?
Not at all! If you write a wrapper for another language,
please mail me so other people may use it.
Verse is really low-level. Is there anything higher-level
written on top of it?
Yes, it's called "Enough" and will be out soon.
Can I write an app that only listens?
Yeah, no problem.
Can I write an app that ignores incoming data?
Yeah you may, but you should listen to your own commands
coming back. You should never assume your commands won't bounce back.
What libraries should I use?
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.
Do I need to listen to all incoming commands?
No. If you don't want to listen to the commands don't
subscribe to them.
I call multiple send commands but only the last one gets sent, why?
You must have different IDs to differentiate the commands.
My callback gets the wrong data, why?
Don't forget that you must add a user pointer as the first
parameter to your callback function.
|