Rick Kimball is the developer of ABNet, a free platform for VRML/X3D multiuser worlds. On February 6 MixED organizes a meeting there, so now it's time to meet this formidable programmer and read in his own words how is ABNet from inside.
- What are the improvements of the latest version of ABNet?
- In what operating systems can the server be run?
- ABNet is written in Java. You can host the ABNet server on any operating system that is running java 1.4 or above. VRMLWorld.net is running on Linux using Java 6.0 from Sun. However, I do most of my testing on windows vista running the latest java from Sun. At one point, I was running VRMLWorld.net on a vmware partition in Windows 2000 that was hosting Linux using IBM java on my home computer. The server itself consumes very little resources. On VRMLWorld.net, it rarely uses more than 3 percent of the total CPU even with many clients. On a windows computer you wouldn't even notice it running. For windows, there is a systray icon to control the starting and stopping.
- On what programming languages or technologies is ABNet built?
- I developed ABNet to showcase my skill set to future employers. I've used a little bit of every technology that someone might use to support web development in today's Web 2.0 environment. ABNet has 3 main components. The client side user interface, the multi user server, and a web server. They communicate with each other using a combination of network technologies and scripting interfaces.
The server is written in java. Its main purpose is to route messages from the client to each user in the 3d scene. The client and the server communicate over TCP/IP using an XML protocol that is compatible with Flash sockets. So in theory, you could replace the client side of ABNet with a flash swf object. The ABNet server uses simple http requests to keep the count of online worlds and users. It communicates that information to VRMLWorld.net. The abnet server is actually running on a different host than the web server.
VRMLWorld.net uses MySQL to keep track of all the worlds that are online and how many users are in them. PHP is used to update and provide access to the database information in a variety of formats. You can query the list and get json, XML and html output.
- What are the virtues of ABNet compared to other VRML/X3D-based 3D chat systems?
- ABNet makes it easy to host any VRML or X3D world without a lot of setup. You don't have to login, you don't have to modify the world to share it. One of its prime objectives is to make it easy to find out which worlds are popular and make it easy to join other 3d users.
From a network standpoint, ABNet is very network friendly. Data is only sent
back and forth when required unlike AJAX style polling servers. The data doesn't encounter any delay because it doesn't poll. Each client maintains a TCP/IP connection that receives data asynchronously. It only uses outbound connections so you don't have to poke holes in your firewall unlike some UDP based multi-user servers.
From a modification standpoint, ABNet is completely customizable. If you don't
From a 3d technology standpoint, ABNet is very low impact. It doesn't force
you to type in 3d which tends to slow down your frame rate. All chat interaction is done in a separate thread using standard HTML controls. You can easily cut and paste information in the chat. When you are chatting, there is a "composing mode" It lets you know someone is typing. This is common in most IM clients but is missing from many 3d chat systems.
Because the ABNet client is written in C++ as a dll, it communicates as fast as possible with the 3d scene. It doesn't have to marshal data in and out of the browser as would be required with a java based client. Unique to ABNet is its ability to flash the title bar of MSIE to alert you of new users or conversations
in a 3d scene.
VRMLWorld acts as a gateway to store all this information. The information about which worlds are online and how many users are in them is available to other chat servers.
The information is updated using simple HTTP requests. The details are available on the forums.
- Are Blaxxun avatars supported?
- ABNet supports the Blaxxun style Avatar Proto. If you build your avatar
using H-Anim and wrap it in an Avatar Proto, you can use them. You can trigger gestures from a drop down selection that is created dynamically for each avatar. It supports up to 70 gestures. If you need more than that you could
change the user interface to have as many as you desire.
- How can worldbuilders use ABNet with their own worlds?
- There are different levels of integration with ABNet. You can just go to http://vrmlworld.net/abnet2/ and share it. You don't have to setup a server you are just using the one at VRML.net You can take advantage of the ABNet shared events by modifying the 3d content. ABNet shared events are very similar to the livingworlds specification.
An ABNet Shared Zone proto must be added and wired up to the triggers in
the 3d scene using routes. There are several examples of this on the front page of VRML.net. The world "bespace lecture" uses shared events to change
the displays. The buttons in "The Mantis's Secret Lab" are wired to shared events so that when one users pushes them, all other users see the results. The "Shared Event Test" world on the front page uses all the available shared event types in a very simple world.
If you want to create a custom user interface that is specific to your world you can use the base user interface and change it completely. Someone might want to do this if their 3d world was more gamelike and they wanted to put some of the game elements in a 2d interface.
If you want to have a custom home page, you can use the chat server at VRMLworld.net without having to setup your own. Examples of that can be seen at http://220.127.116.11/~virtualh/VHLbase/VHL_Front_Page.htm or http://www.int3d.com/3dscenes/pesaro3d-chat/pesaro3d-chat.html
- What are your future plans for ABNet?
- In my limited amount of spare time, I've been working on an easier to modify user interface. This will make it easier to for users who customize the user interface to upgrade when the standard interface changes. We might add a firefox addin that would work with FF 3.0 and Chrome. Support for persistent shared events and objects is also being considered.
© 2008 by Jordi R. Cardona. Link to this post without copying the text.If you liked this post, get updates of Hiperia3D News for FREE