# Getting Started

DiscoVR Engine is a framework built on top of [A-Frame](https://github.com/aframevr/aframe) for building interactive XR experiences — virtual tours, metaverses, VR games — declaratively, with a single `<discovr>` tag in an HTML page.

It is device-agnostic: it runs on any browser capable of running A-Frame, including desktop, mobile, and VR headsets.

## Requirements

- A modern browser with WebGL support (and WebXR support if you want VR headset compatibility).
- No build tools, bundler, or install step. DiscoVR Engine is loaded directly by the browser as a native ES module, and it fetches everything else it needs on its own.

## Installation

Add DiscoVR Engine to your page by loading `discovr-core.js` as a module script:

```html
<script type="module" src="https://core.discovr-engine.eu/discovr-core.js"></script>
```

It must be loaded with `type="module"` (not as a classic script), since it relies on native ES module imports.

## Your first scene

Add a `<discovr>` tag anywhere in the page body. Its attributes configure the experience; no other markup is required to get a scene on screen.

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My DiscoVR Experience</title>
</head>
<body>
    <discovr presets="defaultScene:true;defaultLights:true;defaultContents:true"></discovr>

    <script type="module" src="https://core.discovr-engine.eu/discovr-core.js"></script>
</body>
</html>
```

Opening this page will:
1. Show a loading screen while DiscoVR Engine fetches A-Frame and its own components.
2. Create an `<a-scene>` with a default environment, ambient and directional lighting, and a couple of test objects (a prototype cube and an interactive box).
3. Hide the loading screen once the scene has rendered.

The `presets` attribute above enables demo content so you have something to look at right away. A real experience typically drops `defaultScene`/`defaultContents` entirely (or sets them to `false`) and adds its own content instead of the built-in test objects — the scene still gets a full, customizable setup (background, renderer, shadows, fog, ...) either way, see the [Configuration Reference](configuration-reference.md#presets) for the `scene*` keys that control it.

## What's next

- **[Configuration reference](configuration-reference.md)** — the full list of `<discovr>` attributes (environment, player rig, teleport, networking, audio, UI).
- **[Programmatic scene building](discovr-class-api.md)** — the `DiscoVR` class, for building (part of) a scene in JavaScript instead of tag attributes.
- **[Examples](examples.md)** — complete pages for common scenarios: a virtual tour, a multiplayer room, a physics playground, an embedded widget.
