"Grow mighty worlds from little acorns."

The Acorn language is designed to make it easier and faster to build immersive, sharable 3-D worlds using just one approachable, powerful, extensible language. Acorn binds together all aspects of a Web3D scene: the look and location of its parts, how they behave and how people interact with them.

If you are new to 3-D or programming, you will appreciate how approachable Acorn is. It uses common-sense words, minimizes distracting punctuation, and employs straightforward, consistent rules. It allows you to get started with a few powerful techniques, and then grow your knowledge bit by bit as your skill and confidence grows. If you are eager to start learning, skip the rest of this introduction and dive in to the first chapter or find a helpful introductory tutorial.

If you are a professional, Acorn should feel deliberately familiar, as it seamlessly merges together useful design concepts from static, content languages (XML and JSON) as well as popular dynamically-typed, object-oriented languages (particularly Ruby, Lua, Coffeescript and Javascript). Acorn's simple grammar concisely supports the specification of static or procedurally-generated 3-D content. Enriching 3-D scenes with captivating motion and interactivity is efficiently described using Acorn's powerful methods and type architecture that supports dynamic inheritance, mixins, singleton behaviors, and manipulation as first-class values.

The rest of this introduction highlights several of Acorn's more useful features in more detail.

All The World's a Stage

Imagine that a scene in your world is like a stage setting for a play. Perhaps a wall divides the stage, separating a meadow from the overgrown garden. A locked, metal door traps anyone within the garden who does not have its key. The moon casts a tiny glow on two lovers sneaking towards the wall from opposite sides.

For Acorn, these are all Parts: both lovers, the moon, the wall, the door and the key. They are parts of the scene, which is itself a part in a world with many scenes. Acorn invests much of its 3-D magic in the humble, but flexible Part.

Every part has its own content and behavior.

The content and behavior of each and every part within a world can be hierarchically specified in a very straightforward, readable manner using Acorn's builder grammar. Static content generally only requires literal numbers, symbols and (perhaps) some procedural methods. Procedurally-generated content can make use of variables, expressions and even embedded control structures.

New parts can be added at any time. Any aspect of any existing part can be altered at any time. Acorn's extensible part selector makes it easy to select and manipulate the specific parts in the world that match the specified criteria.

Plays Well With Others

Acorn not only helps custom craft modular bricks, it also offers powerful Internet-based mechanisms for snapping those bricks together. Making Acorn Internet-savvy is essential for accomplishing Web3D's open-world vision:

Acorn's built-in Internet connectivity and 2-way binding capabilities grant the world builder many benefits with little extra work:

One Language to Rule Them All

By this point, developers of interactive web sites should be experiencing deja vu all over again, as all the Acorn features discussed so far are a part of their tool suites. The difference is that Acorn does in one language what otherwise requires multiple languages and libraries:

Doesn't that seem unnecessarily complicated to you? All those layers of software wrestling each other's differences just steepens the learning curve and makes everyone's job unnecessarily difficult.

Such complexity can be defended by explaining each of the historical steps it took to evolve the web to what it has become. But if we are going to embark on a new and more complicated three-dimensional journey, we need a more approachable synthesis of what we have learned over the last 25 years. Acorn is the result of distilling and re-bottling the "good parts" of the world-wide web into something simple, expressive and powerful, leaving behind the legacy artifacts that add no value.

With one readable, world-building language, we can:

What makes Acorn distinctive is not its capabilities, but the way it marries them together, powerfully and seamlessly.

Fast and Furious

Let's switch gears, and talk about speed.

Responsive performance is critical to widespread acceptance of 3-D world exploration. Visitors want their virtual worlds to unfold and interact in a smooth and responsive way. Unfortunately, the price one pays for Acorn's dynamic language flexibility is that it can never perform as well as a compiled language like C/C++.

Fortunately, the architecture of Web3D and Acorn greatly minimizes this handicap: