FAQs
From Croquet Consortium
How is Croquet different from other technologies that seem similar?
Answer: Croquet, as a software development environment, is more extensible than the proprietary technologies behind collaborative worlds such as Second Life, and before that ViOS. Second Life doesn't create a computational environment that belongs to its users - it uses a constrained computational environment (its servers) to capture "eyeballs" for a variety of schemes to derive revenue from them. With Croquet, users/developers may freely share, modify and view the source code (due to Croquet's liberal license), the technology is not hosted on a single organization’s server (and hence governed by that organization as was the case with ViOS and now with Second Life), and it provides a complete professional programmer’s language (Smalltalk/Squeak), integrated development environment (IDE), and class library in every distributed, running participant’s copy (the programming development environment itself is simultaneously shareable and extensible). Croquet based worlds can also be updated while the system is live and running. For more on how Croquet differs from SL, read this.
Some of the environments that are enabled by Croquet can superficially resemble those of Sun's Project Looking Glass in that they permit the display of 2D windows as if they were 3D objects floating in a three-dimensional world. However, Croquet has been designed to go much further given that the programming of the 3D world is virtually without limits (due in part to Squeak's late-binding architecture and metaprogramming facilities).
Croquet reaches farther than Microsoft Research's Task Gallery for it is not bound to any particular operating systems, and eventually could constitute an operating system of its own by building more upon its Squeak foundations. (Croquet’s lack of device drivers is its largest drawback as an operating system).
Virtual Object System is another open source project that shares many goals with the Croquet project.
The proprietary Muse Windows and Internet Explorer-dependent software platform allows developers to build applications ranging from collaborative 3D websites to in-store kiosks and set top box interfaces. Muse-based applications can incorporate video and interactive capabilities.
The Uni-Verse Consortium is a european effort to create an open source 3D platform for multi-user, interactive, distributed, high-quality 3D graphics and audio for home, public and personal use. The foundation of the technology is "Verse", a lightweight, low latency, general-purpose network protocol for 3D data, which lets multiple applications act together as one large system by sharing data over the network.
Why do we need Croquet?
Answer: There are a number of reasons why we need something like Croquet today. First, the personal computer user interface was cast in amber 20 years ago. This was for various reasons:
- The desktop GUI originally developed by Alan Kay and his colleagues was an extremely successful approach to interacting with the personal computer.
- The emergence of software monopolies removed any encouragement to innovate on the platform. Compare a modern PC of 2004 to the first Macintosh shipping in 1984 and the major difference you will see is color.
- The fact that these dominant systems were created in early bound languages made it impossible to easily modify the foundations of the system either by the developers or by third parties.
Croquet was built to answer a simple question. "If we were to create a new operating system and user interface knowing what we know today, how far could we go?" Further, what kinds of decisions would we make that we might have been unable to even consider 20 or 30 years ago, when the current operating systems were first created? We decided that it was time for an existence proof that innovation could still continue and succeed on the personal computer. We felt that the very definition of the personal computer and its role needed to be shifted from a single-user closed system to a next generation broadband communication device.
Who created Croquet?
Answer: Croquet was architected by (in alphabetical order) Alan Kay, Julian Lombardi, Mark McCahill, Andreas Raab, David P. Reed, its principal system architect David A. Smith and others who believe that the time is right to create useful systems and interfaces to enable access to the underlying power of modern computers and network connectivities. The Croquet Project is really a continuation and synthesis of a number of parallel efforts over the last thirty years. The 1.0 codebase is the creation of many individuals who tirelessly contributed to the project prior to its release. Among the many who have contributed are: Howard Stearns, Peter Moore, Joshua Gargus, Preston Austin, Jack Keel, Ron Stewart, Martin Scheutze, Liz Wendland, Darius Clark, Ed Boyce, and many others.
What is TeaTime?
Answer: TeaTime is the basis for Croquet's object-object communication and synchronization. It is designed to support multi-user applications that can be scaled to massive numbers of concurrently interacting users in a shared virtual space. Croquet's treatment of distributed computation assumes a truly large scale distributed computing platform, consisting of heterogeneous computing devices distributed throughout a planet-scale communications network. Applications are expected to span machines and involve many users. In contrast with the more traditional architectures we grew up with, Croquet incorporates replication of computation (both objects and activity), and the idea of active shared subspaces in its basic interpreter model. More traditional distributed systems replicate data, but try very hard not to replicate computation. It is often easier and more efficient to send the computation to the data, rather than the other way around, however. Consequently, Croquet is defined so that replication of computations is just as easy as replication of data alone.
What is Squeak?
Answer: Squeak is an open, highly-portable Smalltalk-80 implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. The list of features in Squeak is extensive. What would, in other environments, be third party extensions downloadable elsewhere comes fully integrated in the standard Squeak release. More
Why is Croquet built on Squeak?
Answer: Croquet required a number of capabilities that could only be provided by a true late bound, message sending language. Croquet's relationship to Squeak gives Croquet the property of a purely object-oriented system. This allows for significant flexibility in the design and the nature of the protocols and architectures that have been developed for Croquet. An essential part of our development process is Squeak's ability to keep the system running while testing and especially while making changes. Squeak allows even major changes to be performed incrementally and they take no more than a fraction of a second to effect. Another key feature of Squeak is its generalized storage allocator and garbage collector that is not only efficient in real-time (so that animations and dynamic media of many kinds can be played while the garbage collector is collecting), but that allows reshaping of objects to be done safely. It may be interesting to note that when we first set out to build Croquet, we intended to do it in Java. However, we had to abandon that approach because Java lacks needed meta facilities.
What is the Squeak virtual machine?
Answer: The Squeak virtual machine is software that acts as an interface between Squeak code and the microprocessor. The Squeak virtual machine is written in Slang, a functional subset of Smalltalk that can be translated into standard C. Squeak essentially uses the C language as a cross-platform equivalent of assembly language. Since Slang is a subset of Smalltalk, the Squeak virtual machine can be edited and debugged by running it in Squeak itself. The virtual machine can also be extended with plug-ins, written in either C or Slang. These are used in Squeak for such things as playing MPEGs and for Squeak's built in public key encryption abilities.
What do I need to run Croquet?
Answer: Croquet runs on all major platforms (Windows, MacOS, Linux) and requires a reasonable hardware graphics capability on your computer. If your computer is less than two years old, you probably have a good system to run on. Otherwise, you might want to consider acquiring a new graphics card. An nVidia GeForce 2 or better will work quite well and is reasonably inexpensive. Croquet requires that you set your graphics color depth at 16 or 32 bits. Some systems require Croquet to be run in 32-bit color to support the hardware stencil buffer. We do not currently set this for you, so you will need to modify this yourself. On Windows, you can select the "Display" control panel (or right click on the Windows desktop and select "Properties" from the menu). Select the “settings" tab, and set the color to "True Color (32 bit)". Under OSX, select "Displays" from your System Preferences and make sure it is set to "millions" of colors.
Will Croquet be one-programming language centric (i.e. Squeak)?
Answer: Some of us are currently working on providing alternative language compilers including JavaScript and Python. We would also like to provide some level of access to Java. The key elements of successfully working in a Croquet context is that the language be late bound, and have some kind of message based object control. TeaTime is based entirely upon sending messages to objects.
Does Croquet use a lot of bandwidth?
Answer: Croquet requires only a few tens of kilobits in bandwidth most of the time in order to achieve real-time collaboration. This efficiency is possible partly through classic P2P processing in which each client does rendering and any other possible calculations on its own. Large, short bursts of bandwidth are required for occasional complex messages, such as the creation of new objects. Although relatively little bandwidth is required for coordination among collaborators, transmission is still required for applications that generate a lot of new data to be shared. For example, video conferencing among users will still require that the video data be transmitted between participating machines..
What happens if two users are behind network address translation devices (NATs)?
Answer: The current implementation of Croquet does not attempt to bypass NATs. The ability for two users behind different NATs to establish mutual addressibility is not straightforward, and usually depends on the existence of rendezvous devices that exist on the public Internet.
The networking layer of Croquet requires lightweight, end-to-end connectivity between end-user machines, with low latency; Croquet can also exploit multicast in some cases. Croquet does not need high and sustained bandwidth as file sharing systems do. Instead, it's requirements are similar to MMORPG systems and IP voice conferencing systems, but we have a scalability requirement that servers not introduce points of failure or bottlenecks. We have been hoping to exploit STUN and/or related techniques used in edge-driven overlay networking protocols. Worst case we may have to invent a new protocol that accomplishes our goals, but we have hope that NAT-bypassing edge-based protocol standards will become more common.
How can I get some help with a Croquet problem?
See Help on the navigation bar on the left of this page.
What types of 3D model files can Croquet import?
The current types of 3D content files that can be directly imported by Croquet are:
- .ase, ascii version of 3DS Max export file
- .mdl, older model files from ALICE
- .obj, text file format from WaveFront
- .wrl, VRML97 text format (it may be necessary to install the VRML package from the Contributions project at CroquetSource)
There are currently no exporters for externally-supported 3D model file formats.
I can't get Croquet to run on my Linux box, what's up?
- Make sure your OpenGL is working in other apps, e.g. glxgears.
- Use ldd to find out which library it is actually linked against (should be /usr/lib/libGL.so.1).
- Make sure /usr/lib/libGL.so is a symlink to that library. The Croquet.sh script should create that link in its own bin directory since on some Linux distros it is missing.
- Make sure you have the Squeak B3DAcceleratorPlugin.
- Use ldd to check which libGL is linked to it.
Croquet is a bit unusual in its handling of OpenGL, in that libGL is both linked to the executable (actually, libGL.so.1 linked to B3DAcceleratorPlugin.so) and dlopen()ed later (from libGL.so via FFI). The rendering context is created in the plugin, the rendering happens directly from Croquet through FFI by looking up GL functions in libGL.so. You should make sure both libGL.so and libGL.so.1 are actually using the same GL library.
