Questions for an important project

Hello Ladies and Gentlemen from this Wonderful Panda3D world,

For an important project I am looking at a number of “platforms”, including Panda3D which seems to be very attractive to me!

My requirements are not really “game specific” but more “virtual worlds”:

  • several visitors connecting into the same virtual world
  • they should be able to chat/IM using little windows, to see each other etc…
  • I need to collect statistics on number of users, what they do,…
  • it should be secure
  • e-commerce should be possible within the world
  • teleporting would be nice, as well as kind of “flying mode” (like in Second Life)
  • avatar mode / 3rd person viewpoint
  • from within a gaming world is it possible, when a visitor/player clicks on an object, to (1) first display a set of text lines (e.g. within a specific world window), containing also a standard www URL, (2) when the visitor then clicks on this URL, the system opens a conventional www window for this URL ?
  • the biggest issue is around networking: as a minimum there should be a master or server system able to synchronize the clients at connecting time-- after that one can imagine they synchronize directly in peer-to-peer mode; however the server I have available is not accepting C++ libraries – which means that I cannot use Panda3D on this server/master – how can I synchronize the clients then ? For instance can I write a Python CGI to do this ? Any hints/pointers ?

Many thanks in advance,
-michel

short story long… panda is a pretty complete game engine providing pretty much all you need to do whatever you can imagine or code.

  • several visitors connecting into the same virtual world
    ->possible (see toon town, pirates online, spaceshooter samples on the forum etc)

  • they should be able to chat/IM using little windows, to see each other etc…
    ->possible, a matter of coding on your end. i already did, works great.

  • I need to collect statistics on number of users, what they do,…
    ->possible, its just up to you to code it.

– it should be secure
->possible, also up to you and how you code it.

  • e-commerce should be possible within the world
    ->dunno excatly what it is… but nothing’s impossible.

  • teleporting would be nice, as well as kind of “flying mode” (like in Second Life)
    ->possible, no big deal, you have to code movement anyway, thats basic.

  • avatar mode / 3rd person viewpoint
    -> also possible, also basic coding.

  • from within a gaming world is it possible
    ->have not tried it but should be possible,too.

  • the biggest issue is around networking:
    ->as everything else, coding the networking is up to you,too.
    for your networking… if you cant use clibs on your server… well if you can use python you could pretty much use everything python provides. btw. setting up a peer-to-peer online multiplayer game without a true controlling server is quite a huge and difficult task. decentralised networking itself already is but in games you also have to add tons more stuff like cheating prevention, lag compensation and and and… not impossible but ,good luck.

basically panda provides everything you need. like networking, drawing, sound playing, input output etc… however. .it’s up to you to make it do what you want it to do.
means you can do all of this if you can/learn programm it.

btw… your project sure sounds like yet another mmorpg … or rather second life clone :wink:. wanna tell us any details about it?

Dear Thomas,

Many thanks for your VERY fast (and nice) reply :smiley:

I don’t have the ambition of another MMORPG or SL but … today in France there are several web sites which provide lists and details of companies and their products in specific areas, for selling purposes. This is all static, Web1.0 type, non-presence, non-interactive, non-fun, non-cool … :cry:

For a small set of products sold in a given small geography of France, I would like to offer an alternative to the above in the form of a multi-users 3D virtual world, where people could register and land … see areas which not only display products’ 3D objects, but also get the feeling of the region, with the plants, trees, … the sounds around based on where they are, interact with other guys visiting, with vendors etc…

What do you think ? Is Panda3D the right tool ? What’s your ideas ?

:confused:

Now this is a really interesting idea. I like it. Here are my two cent:

(1) The size of the client…

…might be a fun killer. A Panda3D application with some 3D content (models, textures, …) will be at least 50-100 megabytes. Even if you implement a streaming method for media then the pure application will be 30 megabytes. This is because all of Panda3D and Python is packed into the installer, to make it standalone.

Now if I would go and buy a book at, say, Amazon, then I would be pissed if I had to wait for a 100M download before I can start my “shopping experience”. If I want to buy a car… well, then why not waiting a little bit.

(2) Server side

I would recommend a server/client model. For most of your requirements there is no need for running Panda3D on the server side. For example chat and e-commerce. So no problems here.

And for synchronizing the virtual world – well, most of the world could be static, and the only dynamic things could be the avatar positions/orientations/animations. You could have a look at the DIS protocol (used by many distributed military simulation). In your case I think a stripped-down “avatar-status” PDU and some network management PDUs (new customer joined the network etc) will be enough. I agree that lag will be a problem, but dead reckoning algorithms can help here.

And in your case lag is not as crucial as for an shooter game. I mean, ok a customer sees another avatar running into the wrong direction or an obstacle for a second or two, but this is not important for his own mission (finding a nice product). If the same would happen in a shooter game then the player would be pissed, because he has SEEN the other avatar, aimed, shot - and missed because he has seen the other avater at the wrong position.

(3) Security

There is no such thing as secure software. It’s just a matter of how much annoyance you give evildoers. Any Python based client is a security problem, even if you distribute only bytecode (pyc files), because the bytecode can be decompyled (no typo). So it’s a matter of how “valuable” the products you want to sell are, compared to how much effort it is to hack the system.

One idea would be to use a transaction number system like many online banking systems use. You could send registered customers TAN lists, and for each transaction they have to enter one number from this list. The e-commerce server chooses a random number and prompts the customer to enter exactly this number. Distribution of TAN lists could be done “outside” the client/server application, e.g. per snail-mail or email, again depending on how valuable your products are.

enn0x

well in fact panda would be a nice choise, aside from the fact that the download would be quite huge.
if you are bound to smaller downloads you might want to look at blenders game engine. from my tests it’s by far not as complete as panda. when it comes to networking i have no idea about blender engine . and performance seems to be lower,too. aside from that,i never really tried coding it. but it’s only a few meg’s and you can make browser-plugins with it if i remember correctly.

well just my 2 cents… no you already have 4 of them :wink:
if you dont have to provide small downloads i’d recommend to give panda a try.

Hi,

Many thanks to both of you Thomas and Enn0x!

Size of client (or more precisely time to download it): sure it matters. The “value” is between the book and the car, perhaps closer to the book!?

Do you know where I could find examples of these PDUs for synchronizing the users ?

I will have a look at blender games engine too-- also there something called BZoo on top of this engine …

Let’s see!

Thanks again my friends,
-michel

http://siso.sc.ist.ucf.edu/dis-dd/

But I didn’t want to urge you into working through those PDUs. What I wanted to say is perhaps it is worth having a look at the general architecture of a DIS simulation. Maybe this architecture would work for you too.

enn0x

PS: I think a sub-part of the “Entity State PDU” would be enough for your requirements.

If client size matters there may be ways to strip down the size of panda3d. Does anybody know how much of Toontown has to be downloaded before you could start playing?

You might also want to look at Java Monkey Engine which is about to release version 1.0 . It’s a more reasonable size at four megabytes. Also, because it’s Java, you could use Java web start for your app, or maybe even a Java applet.