Frequently asked questions

Setup, capabilities, reusable objects, controls, and distribution. For a first run, follow Getting started.

Getting started

How do I run the downloaded project?

Extract the ZIP, open a terminal in its project folder, and run node tools/serve.mjs with Node.js 24 or later. Open http://127.0.0.1:8194/ in a WebGL2-capable browser. No dependency installation or build step is needed. See Getting started.

Can I double-click the HTML file?

Use an HTTP server. A file:// address does not provide the supported environment for module imports and local asset loading. An existing static HTTP server can also serve the extracted folder.

Does it need AI, an account, or photographs from me?

No runtime AI service or account is required. The supplied models and assets are included locally, including the authored human data. You do not need to provide photographs. Some supplied visual assets were generated during development; using them does not run an AI model.

Full 3D capabilities and limits

Is this full 3D or a flat scene with height effects?

Meshes, cameras, positions, orientations, and collision queries operate in three dimensions. Surfaces can overlap horizontally at different heights, such as a bridge above terrain. The generated terrain itself is a heightfield; arbitrary overhangs require separate geometry. See the API reference.

What physics and simulation does it provide?

It provides motion integration and collision queries against terrain, boxes, spheres, and static triangle surfaces. Flight, water, weather, and object activity are application-oriented approximations. It is not a general dynamic rigid-body solver or a certified aerodynamic, weather, or fluid simulator.

Is the world infinite, or guaranteed to look photorealistic?

No. Supplied landscapes, camera ranges, reflections, and shadow coverage are finite. Visual quality depends on the assets, scene, lighting, viewing distance, and hardware. The supplied content does not carry a promise of photographic realism.

Reusable objects

Can I use the engine without the workshop or all the models?

Yes. Copy the complete engine/ folder and only the object folders your application uses. Import the local engine API and pass it into each constructor. The engine does not import the object library or workshop. See the distribution guide.

How do I turn a template into a standalone application?

Run node tools/create-app.mjs --template=starter --out=apps/my-app, or choose --template=object-demo for the person-and-umbrella example. The generated application has its own engine and required objects. The runnable templates inside the main project share its dependency folders, so copying a template alone is insufficient.

How do I make a new object package?

Keep its code and assets in one folder, use local imports, and accept the engine API through the constructor. Expose its root, supported properties and behavior, bounds, update, snapshot, and cleanup methods. Add an object.json manifest. The creating objects guide includes a complete small example; the package reference describes existing classes.

Does a saved object snapshot contain everything needed to rebuild it?

Only the state supported by that class. Constructor-dependent appearance may require reconstruction before restoring transforms. Reinject shared terrain, wind, or decoded assets; for example, pass the awaited assets into a reconstructed AuthoredPerson. A snapshot is not a complete executable scene.

Model Studio

What can I change in the Studio?

Add, select, replace, frame, or remove model instances. The inspector exposes common transforms and the selected package's properties and actions. Camera movement is separate from model rotation and scale. Studio edits are current-session state, not an automatically saved scene file.

How does a later model appear in the library?

Place a compatible package inside the application's objects/ folder. Its manifest declares studio.js, whose models array supplies factories, properties, and actions. Use Load another package in Studio, then add the model. See Model Studio for the protocol and a working fixture.

Can Studio import any mesh file or edit arbitrary source geometry?

The current loader accepts compatible application-local object packages. It is not a general mesh-file importer, desktop file manager, or full modeling application. Packages are trusted code supplied by the application owner; the loader does not sandbox their implementation.

Flight and Xbox controllers

Can I fly manually and inspect the landscape?

Flight offers guided and manual control, cockpit and chase views, and named landscape inspection points. The application supplies the flight motion; the reusable aircraft object provides its visual model, mechanisms, and instruments. See camera and controller controls for mappings.

How do I activate an Xbox controller?

Pair or connect it through your computer first. Open the workshop on localhost or HTTPS, focus the page, and press then release a controller button. The Xbox Controller panel reports detection. Focus the 3D view and release controls to neutral after reconnecting or changing focus. The app uses the browser's standard gamepad layout; it does not pair Bluetooth devices.

Why does controller input stop when I edit a field or leave the tab?

Input is suspended while a form field is being edited or the page is inactive. Focus loss and disconnect clear commands. Return focus to the viewport and release controls to neutral to re-arm. Camera movement remains available while animation is paused; aircraft simulation remains paused.

Are all controllers and wireless connections verified?

No. Support depends on the browser exposing a standard-mapped device. Software mapping tests do not establish compatibility with every physical controller, browser, or wireless connection. The controller guide and verification record state the tested scope.

Documentation and downloads

What is the difference between the web pages and the ZIP?

The HTML documentation is for browsing. The ZIP contains the project files for local use and reuse, including original Markdown documentation. Start with the documentation index to find API, object, application, and verification references.

Which commands verify and package a changed project?

npm test runs the Node checks; npm run verify checks dependency boundaries; npm run build prepares the public distribution and ZIP. tools/package.mjs can recreate the archive from an already prepared clean public folder. These commands do not deploy the project to an external host.

Do the docs, tools, and tests have to ship with my own application?

The runtime does not read its guides or test tools. A consumer needs its application files, complete engine, selected object packages, and their assets. Retain the applicable license notices and provenance when redistributing. Tools and tests support serving, development, and verification; see the distribution guide.

Can I rename the application folder or move it to another server?

Yes, when the complete dependency folders remain together and the consumer uses relative imports. Update the consumer's import paths if you rename a package folder. Do not introduce absolute paths to the original checkout. Serve the moved application over HTTP and check its actual loading and controls.

Why is the ZIP itself absent after I extract the download?

The archive deliberately excludes itself. The engine, workshop and documentation work normally after extraction. To recreate a local download ZIP, run npm run package in a clean extracted folder. If tests or development have created working files, use npm run build to prepare a fresh clean distribution and ZIP.

Licenses and commercial use

May I modify, redistribute, or use this commercially?

The project license permits those uses subject to its terms and retained notices. Read the project license, including its warranty, liability, and governing-law provisions. This FAQ is a guide to the distribution, not a replacement for the license.

What third-party notices must I keep?

Bundled Three.js retains its MIT license notice. Included authored human source data is identified as CC0 in its provenance records. Preserve applicable notices and asset records; other content that you add may have different terms. See source provenance.

Troubleshooting

The page is blank or reports a missing module. What should I check?

Confirm an HTTP address, keep the full extracted folders together, and check the page's error message or browser console for the missing path. Verify that engine/src/, engine/vendor/, and required object assets are present. Use a WebGL2-capable browser with graphics acceleration available.

The local server cannot start. What can I do?

Check that Node.js is available and that the terminal is in the extracted project folder. If the port is occupied, use node tools/serve.mjs --port=8195 and open the matching address. Keep that server process running while viewing the project.

Why does a mechanism stay still after I change a control?

Some controls set a target that the object's update method approaches over time. Resume animation to see mechanisms travel to that target. In a custom application, call the object's documented update method and advance shared services such as wind once per frame.

What if rendering is slow or an old version still appears?

Try a lower quality setting and reduce detailed objects in the current view. After replacing a distribution, reload the page and confirm that its displayed version and files are the ones you intended to serve. Performance records apply to their documented scenes and hardware; they are not a guaranteed frame rate.