[Opensim-dev] client API bindings?
Toni Alatalo
antont at kyperjokki.fi
Wed Sep 2 18:37:27 UTC 2009
Maróy Ákos kirjoitti:
> space, and write client plugins for the simulators to connect (for
> example, using X-Plane as the flight simulator). For this, I need to
> integrate the client as a plugin to these applications, which is done
> using C / C++ or Python in the case of X-Plane, for example.
>
Cool idea.
In OpenSim they are called ClientViews.They implement a protocol which
clients can use to connect to the server. The prominent one is for the
SL(tm) viewer, but there is an experimental one for another new VW
protocol called MXP, and at least an IRC one as well. Also for the
Realxtend project there is a modified ClientView where the SL protocol
is extended to support Ogre meshes etc.
OpenSim is a .NET project, written in C#, so you can use any language
that has a .net implementation for writing your thing. IronPython is a
pretty cool and mature implementation, I wrote an experimental .py
region module loader for OpenSim once and probably you could use it to
write a ClientView too if you prefer that to C#. But C# is also nice,
kind of a mix of C++ and Python -- if those are what you know from
before, should be easy to learn. The API is the same for any .net language.
> As I'm new to OpenSim, it might be that the above scenario is not
> feasible at all :)
>
It should be feasible in principle, and I think a quite interesting
challenge for the platform.
One problem is that due to the Second Life compatibility origins, the
OpenSim worlds are partitioned in 256x256m regions, which run as
separate instances. When you cross a region border, there is a handover
procedure etc. So the default architecture is not at all suitable for
flying 300m/s 'cause you'd need so many regions and it'd be doing the
crossing procedure all the time.
I think there's an on-going experiment with different sized / large
regions, just today Teravus touched this thing it seems, that might
serve you and I guess he can tell more -
/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs
A trick I've been thinking for supporting fast large movements is to
change the scale: make your planes 1/100 the size, so the default region
size is then 25,6km for the lilliput pilot in the plane :) A 10x10
region grid or something would already give quite nice amount of space,
and grids can be much larger too. Then you could fly past the giant
avatars there and they'd have fun seeing small model planes fly :o
For example in MXP you don't have this kind of region stuff in the
protocol at all - there you just have a thing called a bubble, which
AFAIK is the sphere of perception for the viewer, and the server always
tells the client about the things close to it. The client nor the
protocol don't know anything about how the space is partitioned on the
server(s). So in the MXP ClientView you can perhaps see an example how
to adapt the OpenSim internal scene things to a different protocol.
> Akos
>
~Toni
More information about the Opensim-dev
mailing list