|
|
|
Foundation ::
Visualization and Virtual Reality ::
CAVERNsoft G2
|
CAVERNsoft G2 FAQ
What
platforms does it support?
Back to top
G2 is supported on SGIs and Linux mainly
but the networking libraries are also supported under Solaris
and Win98/NT/2000.
What
is the difference between CAVERNsoft and CAVERNsoft G2?
Back to top
G2 differs from the earlier architecture
(G1) in a number of important ways:
-
Firstly, it is completely incompatible with
G1.
-
Fundamentally G2 breaks all of G1's services
into separate and smaller classes. In essence G2 is a toolkit whereas G1
was a monolythic system. G2 will make it easier for us to maintain and
port to other platforms, but at the same time should increase flexibility
for you.
-
G2 relies heavily on a client/server architecture.
Hence many of the networking classes in G2 have client and server versions.
Our experience with G1 has shown that although client/server symmetric
systems allowed us to more easily build collaborative systems in general,
in practice most of the architectures we built were client/server systems.
Hence by adopting this out-right we can significantly simplify CAVERNsoft's
overall architecture.
-
G2 places the responsibility of threading
on the application. G1 was heavily threaded and hence the application program
would respond to a series of callbacks. This was in principle a useful
concept however in practice we have found many incompatibilities between
threads and existing libraries such as Performer, OpenGL and the CAVE library.
Hence many server classes in G2 have a Process() member function that can
be called within a loop. This loop can be executed in a thread if the programmer
so chooses. The programmer is responsible for creating that thread.
-
G2 significantly simplifies G1's persistent
shared memory system (Information Resource Broker) both architecturally
and at the API level. At the architectural level, data is now only shared
via reliable TCP connections. It was found that in practice the only time
we shared data over unreliable UDP links was for avatar data or streaming
audio. We can do this far more effectively and simply using G2's UDP reflector
class. Persistence however is still been supported by G1's database. Hence
databases from G1 are still compatible in G2. However the philosophy in
G2 is for it to serve the distribution of small pieces of data (such as
the location of objects in a scene) rather than both small data and massive
data. Although G2 can still handle the same sized datasets in G1, it is
does so less efficiently. We will inevitably improve this over time, however
it is recommended that for moving large datasets one should use the remoteIO
classes in G2. These are designed so that they can move files larger than
2 Gigs. In the future it will be enhanced to be able to move multi-gigabyte
files over parallel connections hence making better use of available network
bandwidth.
|
|
|
|