Our KidsFirst project includes a great deal of what we’ve learned about Croquet. We’re making all the code available through the CroquetSource code repository, as part of the Contributions collection of code that will be distributed in the forthcoming Croquet release. (This repository is available to developers ahead of release, as part of what David Reed calls “Invention in public.” For info on updating, see this movie and this discussion thread. There will also be a new image distribution shortly.)
We call this code the KAT – KidsFirst Application Toolkit. It fits over all the other Croquet SDK code without changing it. All the KAT-specific classes begin with K – partly for the KidsFirst project that informs its development, and partly as homage to Alan. As the code matures, you may or may not see some of the KAT code migrate down to the base classes from which it inherits. (For historical reasons, the name of the Monticello package is “Wisconsin.” This may change.)
No first public version ever includes everything that you’d like to have. Right now (prior to even the Open Beta release) we’re missing some of the features of Dormouse, especially annotation connectors and Brie. And the user interface doesn’t include Mark‘s cool avatars yet. But it’s a good stake in the ground for a Wide-Area Network communications and 3D Wiki application software.
- You can drive around with the usual super-secret option-click-and-hold-a-distance-from-the-center-of-the-screen that is built into Croquet, or you can use the KAT’s w-a-s-d keys and some nav buttons on the screen.
- You can drag into Croquet from your desktop most picture formats, .mp3 sound, .mpeg movies, .ase 3D models, and plain text. The text is collaboratively editable in real-time. You can also make a lot of stuff from a conventional menu bar across the top. You play sounds and movies by clicking on the object in the world, which closes when it’s finished playing. It may take a moment to get the sound/movie into your cache, which is handled for you by the KAT, but is internally stored outside of the Croquet world.
- You can make a virtual tablet PC panel that is a shared interface to an application running on a Unix box. Specify a .doc URL and you get a Word-like editor. Specify a .pdf URL and you get an Acrobat-like viewer. Otherwise, you get a Firefox browser. Everybody viewing the panel can see and interact with it in (somewhat slow) real-time.
- Once in the world, everything can be moved around, sized, copied/cut/pasted (onto space or onto each other to form assemblies), or carried (including carrying them to other worlds). You can also texture stuff (including rectangular prisms) by copying the “material” of something you like and pasting that. There’s a “context menu” (alt/option-click) for everything.
- When you first ask for a new microphone output, your avatar gets a 3D speaker under its arm. What you say into your computer’s microphone will be broadcast to everyone in the Croquet space, spatialized to the speaker location. (To avoid feedback, you won’t hear it yourself.) You start off carrying the speaker, so the sound travels with you as you move around. Like any other model, you can stop carrying it, or cut it out of the scene altogether (at which point the sound stops, of course). You can also copy this (or make subsequent new microphone output speakers) and put them in different places.
- Similarly, if you have a camera connected (and have the right Squeak plugin installed), your avatar will be carrying a big video screen behind its head. Same deal for carrying, cutting, copying, etc. (The plugins we have will go into the release. Stay tuned…)
- When you start, you are prompted for the name or address of a machine running a Croquet router. If you enter an empty string, it will start a router for you on your own machine. (We’ll set up a standard location later and announce it here when it’s ready. We did not include the Bryan Ford “Hole-punching” NAT traversal. In Dormouse we had adapted some code from David Reed that used this technique to allow anyone to run a router from a dynamic IP address behind a firewall. We had too many problems making this work in the field back then.) If you do stuff you want to save, there’s a menu item to save the state of the current world or all known worlds. (There are several samples built in. Some initially empty.) If you start up again later (with your own router), it will pick up the saved world definitions.