# Start here

Accounts, roles, devices, requirements and controls, before your first simulation.

Everything you need before opening a simulation.

* [What HyperSkill is](/start-here/what-hyperskill-is)
* [Create an account and sign in](/start-here/create-an-account-and-sign-in): signing up, and how students get accounts.
* [Choose your role](/start-here/choose-your-role): Author, Teacher or Learner, and what each one shows you.
* [Get HyperSkill on your devices](/start-here/get-hyperskill-on-your-devices): the browser, Windows, headset and iOS builds.
* [System Requirements](/start-here/system-requirements): what the hardware needs to be.
* [Controls](/start-here/controls): moving and grabbing, on a keyboard and in a headset.
* [Settings](/start-here/settings): your profile, plan, device filters and downloads.


# What HyperSkill is

The products in the HyperSkill family, what each one does, and where to find them.

HyperSkill is a platform for building and running training simulations in VR, mixed reality, on desktop, in a browser and on iOS. Around it sit a few products that this guide covers together.

| Product             | What it is                                                                                               | Where                                                                          |
| ------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| HyperSkill Platform | Where teachers run classes and group sessions, everyone browses Skillful, and every run's analytics live | [platform.siminsights.com](https://platform.siminsights.com)                   |
| HyperSkill Studio   | The authoring tool that builds 3D simulations, and the app that plays them                               | The HyperSkill app on your device, or in a browser                             |
| Skillful            | The catalog of ready-made simulations, courses and assets                                                | [platform.siminsights.com/skillful](https://platform.siminsights.com/skillful) |
| SimGenie            | AI that builds a 3D simulation from a description                                                        | [simgenie.ai](https://simgenie.ai)                                             |
| Spark               | Conversational simulations: a learner talks with an AI character and is scored                           | [spark.siminsights.com](https://spark.siminsights.com)                         |
| Career Pathway      | A short assessment that matches learners to careers and simulations                                      | [pathway.siminsights.com](https://pathway.siminsights.com)                     |

One account works across all of them.

## Support

Email <support@siminsights.zendesk.com> with the simulation's name and what you saw. For live support call [+1 (855) 683-7051](tel:+18556837051). Community discussion is at [forums.siminsights.com](https://forums.siminsights.com).


# Create an account and sign in

Signing up for HyperSkill, verifying your email, and how students get their accounts.

Go to [platform.siminsights.com](https://platform.siminsights.com) and press **Log in**.

{% stepper %}
{% step %}

### Sign up

On the login screen choose **Sign up**. Use an email address and password, or sign in with Google or Apple.
{% endstep %}

{% step %}

### Verify

Check your email for a verification link and open it.
{% endstep %}

{% step %}

### Choose your role

The first time in, set the role you work in: Author, Teacher or Learner. See [Choose your role](/start-here/choose-your-role).
{% endstep %}
{% endstepper %}

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FU48C0NQCafR47WMf9of7%2Flogin.png?alt=media&amp;token=77bf38de-517a-45b9-abdf-d608d9e516e5" alt=""><figcaption></figcaption></figure>

Students in a class do not sign up on their own: their teacher adds them by email, and an account is created for them. They sign in with that email. See [My classes and lessons](/learn/my-classes-and-lessons).


# Choose your role

Author, Teacher and Learner: what each role shows you, and how to switch.

HyperSkill Platform shows different things depending on the role you set: **Author**, **Teacher** or **Learner**. Set it under [**Settings > Profile**](https://platform.siminsights.com/settings/profile). It is also in the avatar menu in the top right, under **Role**.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FHBRh8vqEL6B8zCY3B6v2%2Frole%20selection.png?alt=media&#x26;token=ee6d34da-309f-4172-a183-5a27d8b23263" alt=""><figcaption></figcaption></figure>

| Role    | What the sidebar shows                                                                | Who it is for                                         |
| ------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| Author  | Home, Sims, Assets & Media, Classes, Group sessions, Courses, Organizations, Skillful | People who build simulations, and organization admins |
| Teacher | Home, Classes, Group sessions, Skillful                                               | People who run classes and sessions                   |
| Learner | My summary, Classes, Courses, Skillful                                                | Students and self-paced learners                      |

The role changes what is in the sidebar, not what your account can do. Your simulations, classes and results are the same in every role.


# Get HyperSkill on your devices

Download HyperSkill for the browser, Windows, Meta Quest, HoloLens and iOS.

Every build is at [platform.siminsights.com/settings/downloads](https://platform.siminsights.com/settings/downloads), with the current version of each.

| Device             | What you get                                                                                            |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| Browser            | **HyperSkill Online** runs in the tab. Nothing to install, and the recommended way to try a simulation. |
| Windows            | **Windows Desktop**, the full app for authoring and playing.                                            |
| Meta Quest         | **Get on Meta** opens the store listing for the HyperSkill app.                                         |
| Microsoft HoloLens | The HoloLens build.                                                                                     |
| iPad and iPhone    | **HyperSkill for iOS** on the App Store.                                                                |
| Unity developers   | The **Unity VX Packager**, for turning your own 3D models into HyperSkill assets.                       |

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FUSDbw3PlSB16duiDROKP%2Fdownloads.png?alt=media&#x26;token=edaedfc4-358d-4e28-809d-144511a0fbc7" alt=""><figcaption></figcaption></figure>


# System Requirements

The minimum recommended hardware for operation of the HyperSkill application

### System Requirements

Microsoft Windows 10 64-bit or higher

An internet connection with at least 80 Mbps

Processor: An Intel Core i5-4590 or AMD FX 8350 or equivalent

Graphics card: An NVIDIA GeForce GTX 1060 or AMD Radeon RX 480 or equivalent

Memory: 8 GB of RAM or more

Storage Space: At least 600 MB

### Recommended for Oculus Quest

* Oculus Quest 2 or better
* Internet not required to launch and experience downloaded sim

### Recommended specs for iOS

* iPad only
* iOS 11.0 or higher
* Bluetooth device for audio/microphone (optional)

### Recommend browsers for WebGL

* Google Chrome
* Mozilla Firefox
* Microsoft Edge

###


# Controls

Keyboard and mouse controls, and the controller buttons on Meta Quest and Pico.

## Desktop and web (mouse and keyboard)

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FNuBhXKVGGDpbBbToduwR%2Fimage.png?alt=media&#x26;token=013a0dd7-8719-455f-a57c-5a43b02a642a" alt=""><figcaption></figcaption></figure>

| Control        | Description                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------- |
| W              | Move forward                                                                                |
| A              | Move left                                                                                   |
| S              | Move backwards                                                                              |
| D              | Move right                                                                                  |
| E              | Grab item / unsnap object                                                                   |
| X              | Drop/release item                                                                           |
| Left click     | Interact / Use. For snap zones, point the cursor at a snap zone to snap a held item into it |
| Right click    | Rotate view                                                                                 |
| Space          | Jump                                                                                        |
| C              | Crouch                                                                                      |
| Esc            | Pause                                                                                       |
| Tab            | Toggle microphone                                                                           |
| V              | Toggle fly mode (if enabled)                                                                |
| F3             | Toggle FPS                                                                                  |
| Left Ctrl + F3 | Toggle all UI visibility                                                                    |

## Meta Quest

<figure><img src="https://lh7-us.googleusercontent.com/6rKvXrucvOxOPNx2yNp3QF8baIbFfBdzXIqynF13rJZnB1yGNGJKzVohDI17cyS6Gft4ZsticoQY5HDaDTpsnIIMC5UpPFHMtC1nti45F9auVk-ndZgdLqOwaI4ytxGgwK_Il9cEnifAAqmBte7oOQ" alt="" width="563"><figcaption></figcaption></figure>

| Control             | Description                                                                                                                |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| 1. Teleport         | Press the control stick down to teleport. The laser from the controller becomes an arc; release to move to where it lands. |
| 2. Menu button      | Opens the main menu, including height adjustment.                                                                          |
| 3. Selection button | Makes selections in menus, using the laser from the controller.                                                            |
| 4. Grip button      | Press and hold to pick up objects.                                                                                         |
| 5. Oculus button    | Opens the Oculus menu. Not used by HyperSkill.                                                                             |
| 6. Trigger          | Interact with or use objects. Point at them with the laser, or bring the controller close to them.                         |

## Pico

* **Click and use**: the trigger, the button under your index finger.
* **Grab**: hold the trigger and the side grip button at the same time.
* **Settings during a simulation**: press **B**, point up at the menu, and pull the trigger to select.


# Settings

Manage your account settings here

Your account settings are at [platform.siminsights.com/settings/profile](https://platform.siminsights.com/settings/profile). Four pages:

## Profile

* **Account**: the name and email on your account.
* **Role**: Author, Teacher or Learner. See [Choose your role](/start-here/choose-your-role).
* **Appearance**: light, dark, or follow your system.
* **Language**: English, Spanish, Italian or Hindi. Simulations that support your language are translated.
* **Learner profile**: a few lines about yourself that AI characters in simulations use to tailor what they say.
* **Delete account**, at the bottom. Deletion is requested here and completed within about three days.

## Subscription

Your plan, its seats, and billing. [Subscription and seats](/organizations-and-subscription/subscription-and-seats) covers inviting colleagues onto your plan and accepting an invitation.

## Skillful

Which Skillful simulations appear on your headsets and desktop devices. [Simulations](/skillful/simulations) covers choosing them.

## Downloads

HyperSkill for every device. See [Get HyperSkill on your devices](/start-here/get-hyperskill-on-your-devices).


# Quickstarts

Ten minutes to a first result, one path per role.

One short path for each role, from signing in to something real.

* [For teachers](/quickstarts/for-teachers): find a simulation and run it with your class.
* [For learners](/quickstarts/for-learners): join a live session, or open a lesson your teacher assigned.
* [For authors](/quickstarts/for-authors): build a first 3D simulation, or a first Spark.

Each one links out to the fuller pages as it goes, so you can stop at the quickstart or keep reading.


# For teachers

Find a simulation and run it with your whole class, in about ten minutes.

Ten minutes from signing in to a class running a simulation together. Everything here is covered in more depth under [Teach](/teach).

{% stepper %}
{% step %}

### Sign in and set your role to Teacher

At [platform.siminsights.com](https://platform.siminsights.com), open [**Settings > Profile**](https://platform.siminsights.com/settings/profile) and set **Role** to **Teacher**. See [Choose your role](/start-here/choose-your-role).
{% endstep %}

{% step %}

### Find a simulation

Open [**Skillful**](https://platform.siminsights.com/skillful) and browse the catalog. Three filters do most of the work:

* **Category** for your subject.
* **Variant** for how much the simulation leads the learner. Guided simulations walk through each step, and are the right default for K-12.
* **Platform** for the devices your students will use. **MR** simulations need a mixed reality headset and will not open on an ordinary VR headset or in a browser, so only pick MR if you know your devices support it.

Open a simulation to read what it covers before you commit a class period to it. [Simulations](/skillful/simulations) covers the rest of the filters, what each button on a simulation page means, and how to control which simulations appear on your headsets.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FRW2jxKNHbEB0SG9yxphm%2Fimage.png?alt=media&#x26;token=1b84888a-ff89-42e6-85b1-30a09cc0f90a" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Start a group session

On the simulation's page press **Assign group session**, then **Start session**. A five-digit code appears. See [Group sessions](/teach/group-sessions).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FXZYeMAgyf6UcgJQzP1sY%2FScreenshot%202026-09-04%20at%2012.06.01%E2%80%AFPM.png?alt=media&#x26;token=54feee56-ec1a-4483-a055-46214878c9c5" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Get students in

Put the code on the board. On a headset they open HyperSkill and choose **Input pin code**; on a computer they go to [launch.siminsights.com/join](https://launch.siminsights.com/join). Watch them appear on your session page.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FDl2K1BIuwlw0CVr5RXzZ%2FScreenshot%202026-09-04%20at%2012.08.48%E2%80%AFPM.png?alt=media&#x26;token=73ddb76b-8a8d-4eca-a8e1-0c177c4f00b4" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Wrap up

Press **End session**. Their results stay under [**Group sessions**](https://platform.siminsights.com/sessions).
{% endstep %}
{% endstepper %}

## Once you know your way around

[**Group sessions**](https://platform.siminsights.com/sessions) **> Host a session** starts a session without going through Skillful. It is quicker once you already know the name of the simulation you want.

## When you want more than a live session

Create a **class**, add your students by email, and assign a **lesson** that mixes simulations with a reading and quizzes. Students work through it on their own time, and you see who has finished. See [Classes](/teach/classes) and [Lessons](/teach/lessons).


# For learners

Join a live session with a code, or open a lesson your teacher assigned.

## Joining a live session

Your teacher gives you a five-digit code.

* **In a headset**: open HyperSkill, choose **Input pin code**, and enter the code.
* **On a computer**: go to [launch.siminsights.com/join](https://launch.siminsights.com/join), enter the code and your name, and press **Launch**. The simulation runs in your browser.

You do not need an account for this.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F4AJfb5USWUejcx7tBNAS%2FScreenshot%202026-09-04%20at%2012.15.12%E2%80%AFPM.png?alt=media&amp;token=a98e244c-20f9-463d-92ba-e7f991cff80d" alt="" width="563"><figcaption></figcaption></figure>

## Doing a lesson

If your teacher added you to a class, sign in at [platform.siminsights.com](https://platform.siminsights.com) with the email they used. Open [**Classes**](https://platform.siminsights.com/classes), open your class, open the lesson and press **Start lesson**. See [The lesson player](/learn/the-lesson-player) for how a lesson works.

## Seeing how you did

[**My summary**](https://platform.siminsights.com/me) shows every simulation you have run and your skill mastery. Open a run to see your timeline and replay. See [My summary](/learn/my-summary).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FdkuOrKiCb8hEscyZC7ll%2FScreenshot%202026-09-04%20at%2012.17.29%E2%80%AFPM.png?alt=media&amp;token=6f753016-c259-40b1-8a8b-aeda05cd8656" alt="" width="563"><figcaption></figcaption></figure>

## Controls

New to VR? See [Controls](/start-here/controls) for the buttons on your headset.


# For authors

Build your first 3D simulation in HyperSkill Studio, or your first Spark.

There are two kinds of simulation to build, and they are built in different places.

* **3D simulations** are built in **HyperSkill Studio**, in a browser or on Windows. A learner moves around a space and handles objects. Covered in depth under [HyperSkill Studio](/hyperskill-studio-authoring).
* **Sparks** are conversational simulations, built in the browser. A learner talks with an AI character and is scored on the conversation. Covered under [Spark](/spark).

You can find a detailed video tutorial in our [YouTube playlist](https://www.youtube.com/watch?v=ziAevzrFMDI\&list=PLJbp-d55DdDgoPCWtMcsSpdBEVCczp7oP).

## Build a 3D simulation

{% stepper %}
{% step %}

### Open HyperSkill Studio

In HyperSkill Platform, open [**Get HyperSkill**](https://platform.siminsights.com/settings/downloads). **HyperSkill Online** runs in your browser with nothing to install; **Windows Desktop** is the installed app. See [Get HyperSkill on your devices](/start-here/get-hyperskill-on-your-devices).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F9DxZJHN05o5lA1MaLv00%2FScreenshot%202026-09-04%20at%2012.24.08%E2%80%AFPM.png?alt=media&#x26;token=f55f278e-1484-403e-8c97-e0a9789d8781" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Create a simulation

Select **Create New Sim** in the top right corner of the My Sims page, which opens by default when you launch the app.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FQPtpaXVPV6ILbnXUs1JC%2FScreenshot%202026-09-04%20at%2012.28.05%E2%80%AFPM.png?alt=media&#x26;token=327a1674-5a74-4688-a0f3-77f2d2ca99c3" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Name it and pick a space

Give the simulation a name, select a virtual space from the list, and click **Create** in the bottom right corner.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FVeQPjVBMAWfBmUQCLpN1%2FScreenshot%202026-06-09%20141031.png?alt=media&#x26;token=fa3a2993-5b84-4d45-85d5-ba3e7371b7f2" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Author the simulation

The simulation opens in edit mode. Move the camera with the same controls a learner uses, drop objects into the space from the asset library, and use the tabs along the top to add tasks, rules and scoring.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fyj6u7dbmDFGrJ8jzDCbp%2FScreenshot%202026-09-04%20at%2012.48.02%E2%80%AFPM.png?alt=media&amp;token=3dcbbf3d-43d4-4e95-8590-b74c51877f78" alt="" width="563"><figcaption></figcaption></figure>

This is the part with real depth to it. [Authoring a simulation](/hyperskill-studio-authoring/authoring-a-simulation) covers building the steps a learner follows, making objects react to what they do, and scoring their performance.
{% endstep %}

{% step %}

### Save and play

Click the save icon <img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FrEFd1xetBQf39EC5nIwv%2FScreenshot%202026-09-04%20at%2012.32.41%E2%80%AFPM.png?alt=media&#x26;token=c906a2f6-8217-4f74-ab52-4e13ef464923" alt="" data-size="line"> to save your changes, then press **Play** to enter experience mode.
{% endstep %}
{% endstepper %}

## Build a Spark

{% stepper %}
{% step %}

### Create the Spark

Go to [spark.siminsights.com](https://spark.siminsights.com), sign in with your HyperSkill account, and create a Spark.
{% endstep %}

{% step %}

### Build the conversation

**Scenario Flow** is the states the conversation moves through, **AI** is the character and the agents that score it, and **Settings** covers the microphone.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FXlwXMN3Q8LlgtGXOFL5G%2FScreenshot%202026-09-04%20at%2012.56.05%E2%80%AFPM.png?alt=media&amp;token=98b2ed08-6c3d-4bd5-b9f1-494bfc51eedd" alt="" width="563"><figcaption></figcaption></figure>

[Building a Spark](/spark/building-a-spark) covers writing the character's instructions, giving it documents to draw on, and setting up the agents that score the conversation and the feedback the learner sees at the end.
{% endstep %}

{% step %}

### Try it

Press **Open experience** to play it as a learner would.
{% endstep %}

{% step %}

### Publish

A Spark cannot be played outside the editor until it is published.
{% endstep %}
{% endstepper %}


# Skillful

The library of ready-made simulations, assets, courses and organizations included with HyperSkill.

Skillful is the library of ready-made content included with HyperSkill. Browsing is open to anyone at [platform.siminsights.com/skillful](https://platform.siminsights.com/skillful), with no account.

* [Simulations](/skillful/simulations): finding one, checking it runs on your devices, and opening it.
* [Assets](/skillful/assets): the objects, people and spaces simulations are built from.
* [Courses](/skillful/courses): several lessons in a fixed order.
* [Organizations](/skillful/organizations): the publishers, each with a page of their work.

Some simulations are free. The rest, and all courses, need a Skillful subscription. See [Access and pricing](/skillful/access-and-pricing).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FC4tB8w9zXmvHBQsjVI5e%2Fimage.png?alt=media&amp;token=a43692bb-dab5-4b04-9760-d374639c98e8" alt=""><figcaption></figcaption></figure>


# Simulations

Search and filter the catalog, check a simulation runs on your devices, and open it.

Over a thousand simulations, free to browse at [platform.siminsights.com/skillful](https://platform.siminsights.com/skillful) whether or not you have an account.

## Finding one

Pick a subject category, or search by name. Five filters sit above the results:

| Filter            | Narrows by                          |
| ----------------- | ----------------------------------- |
| Category          | Subject area                        |
| Variant           | Guided, Unguided or Timed           |
| Platform          | The devices it runs on              |
| Grade level       | The school grades it is written for |
| Learning standard | The standards it maps to            |

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FHdOiXyNQtp6GAIPl4e1t%2FScreenshot%202026-09-04%20at%201.53.12%E2%80%AFPM.png?alt=media&amp;token=fcceb6e8-7bb0-40d3-9813-56318eeff44d" alt="" width="563"><figcaption></figcaption></figure>

## Checking it fits your class

A simulation's page describes what the learner does, and lists the same facts you filtered by:

* **Category**, the subject.
* **Grades** it was written for.
* **Variant**: Guided walks the learner through each step, Unguided leaves them to work it out, Timed puts them under a clock. For younger students, or anyone new to VR, Guided is the safer choice.
* **Standards** it maps to.

**Share** copies a link to the page, for sending to a colleague.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FLteWlGadvMDTGb1Excz1%2FScreenshot%202026-09-04%20at%201.54.17%E2%80%AFPM.png?alt=media&amp;token=1a761d1d-0122-44b0-b5cd-f08e7115dcc1" alt="" width="563"><figcaption></figcaption></figure>

## Running it

**Plays on** lists the devices the simulation runs on. Check it before you build a class period around one: not every simulation runs everywhere.

{% hint style="info" %}
**MR** simulations need a mixed reality headset. They will not open on an ordinary VR headset or in a browser.
{% endhint %}

Then there are two ways in, depending on whether one person is going in or the whole class at once.

**On your own.** Press **Launch simulation**, then pick how to play: in the browser, in the Windows app, on a headset by entering a pin code, or on an iPad. Leave it a moment and it starts whichever suits the device you are on.

**With a class.** Press **Assign group session**, then **Start session**. Everyone joins the same run with a five-digit code, and you watch them from one page. See [Group sessions](/teach/group-sessions).

If the button reads **Buy simulation**, please login with an account that has access to Skillful. See [Access and pricing](/skillful/access-and-pricing).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FWmkNU7Tw9etlujVUr81T%2FScreenshot%202026-09-04%20at%201.54.17%E2%80%AFPM%20copy.png?alt=media&amp;token=42e1fe89-ac82-4d95-b2b0-d37ddcb21d42" alt="" width="563"><figcaption></figcaption></figure>

## Trimming the list on your devices

HyperSkill on a headset or desktop lists the whole catalog, which can be overwhelming for a student.

[**Settings > Skillful**](https://platform.siminsights.com/settings/skillful) narrows it. Tick the variants, categories, grades and standards you want, then save. Nothing is lost: clearing the tags brings the full catalog back, and the website always lists everything.

The filter belongs to your account, so it follows you onto any device you sign in to. It does not change what anyone else sees.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FVuXWxh4cDZ6GmFz9tETe%2FScreenshot%202026-09-04%20at%201.55.21%E2%80%AFPM.png?alt=media&amp;token=422279fd-da70-446d-ab48-fd8f0b8d84f2" alt="" width="563"><figcaption></figcaption></figure>


# Assets

The virtual objects, people and spaces that HyperSkill simulations are built from.

Simulations are built from virtual objects, people and spaces. You can view the public Skillful library of assets at [platform.siminsights.com/skillful/assets](https://platform.siminsights.com/skillful/assets). Any author will have access to use these assets in their simulation (even if they do not have Skillful access).

Search by name, narrow by kind with **Type**, and sort by newest or alphabetically. Each asset has a page with its details and a **Share** link.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fbr03K3YR5Y4mpM3OixfO%2FScreenshot%202026-09-04%20at%202.00.23%E2%80%AFPM.png?alt=media&amp;token=024aad23-8cd1-4932-8564-d560757e73fd" alt="" width="563"><figcaption></figcaption></figure>

If you cannot find a virtual asset you need, you can add your own in HyperSkill Studio. See [Virtual entities](/hyperskill-studio-authoring/virtual-entities).


# Courses

Courses on Skillful: several lessons in a fixed order, mixing simulations with readings and quizzes.

A course is a collection of lessons, each can contain a interactive simulation, conversational AI simulation, pre and post quizzes, readings, and more. You can view the list of courses at [platform.siminsights.com/skillful/courses](https://platform.siminsights.com/skillful/courses).

You can view more information about a course by viewing its page, which will contain the number of lessons and a short preview of each lesson and what it covers.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FaaFTUqImRcmqc2XblpIB%2FScreenshot%202026-09-04%20at%202.03.09%E2%80%AFPM.png?alt=media&amp;token=d482c43f-0107-45d7-bdf0-09b9977f89bc" alt="" width="563"><figcaption></figcaption></figure>

Courses need a Skillful subscription. See [Access and pricing](/skillful/access-and-pricing).

You can view your progress on a course and continue working through it by going to <https://platform.siminsights.com/courses>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FvxTmg4uLTWtxopgzwwnq%2FScreenshot%202026-09-04%20at%202.06.07%E2%80%AFPM.png?alt=media&amp;token=b8d3b947-492d-4fa0-81fd-20dfe14304ec" alt="" width="563"><figcaption></figcaption></figure>


# Organizations

Public pages for the schools and companies that publish simulations on Skillful.

Organizations can publish how they have worked with and used HyperSkill. You can view all the organizations and how they have used HyperSkill at [platform.siminsights.com/skillful/organizations](https://platform.siminsights.com/skillful/organizations).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FL0zYV0CCsbjKxtvpeVP4%2FScreenshot%202026-09-04%20at%202.08.07%E2%80%AFPM.png?alt=media&amp;token=04d1d052-fcbb-47f7-8cda-b2e2be0abeaf" alt="" width="563"><figcaption></figcaption></figure>

If you are part of an organization and want to have your organization appear on this page or modify settings,  refer to [Organizations](/organizations-and-subscription/organizations) which covers creating one, adding members, attaching simulations, and choosing which to feature on this page.


# Access and pricing

What a Skillful subscription includes, what each button on a simulation means, and how to buy.

Some simulations are [free](https://platform.siminsights.com/skillful?category=Free). The rest, and all courses, require a Skillful subscription, which also lets teachers build lessons from the catalog and host group sessions.

## Buying

View subscriptions, their pricing, and what is included at [siminsights.com/pricing](https://siminsights.com/pricing), for individuals and for schools and organizations.&#x20;

Your plan is at [**Settings > Subscription**](https://platform.siminsights.com/settings/subscription). [Subscription and seats](/organizations-and-subscription/subscription-and-seats) covers putting colleagues on your plan, accepting an invitation, and changing or canceling billing.

{% hint style="info" %}
If you lack access, ask whoever manages the subscription to invite you (see [Subscription and seats](/organizations-and-subscription/subscription-and-seats) on instructions), or email <support@siminsights.zendesk.com> with the address on your account.
{% endhint %}


# Teach

Classes, lessons, group sessions and learner progress.

Two ways to teach with simulations, and you can use both. A **group session** is synchronous: the whole class runs the same simulation at the same time, joining with a code, no accounts needed. A **class** is asynchronous: a roster of learners with their own accounts, working through lessons you assign at their own pace.

* [Classes](/teach/classes): building a roster and adding students.
* [Lessons](/teach/lessons): assigning simulations with readings and quizzes around them.
* [Group sessions](/teach/group-sessions): running one simulation live with everyone at once.
* [Learner Lesson progress](/teach/learner-lesson-progress): who has started, who has finished, and what they did.
* [Courses you author](/teach/courses-you-author): how your own courses are being used.

Teaching features need a Skillful subscription. See [Access and pricing](/skillful/access-and-pricing).


# Classes

Create a class, add students by email or CSV, and manage the roster.

A class is your roster in HyperSkill. Each learner gets their own account, you assign lessons with due dates, and you can see who has started and finished each one. Lessons are a solution to assign asynchronous work, for a synchronous option see [Group sessions](/teach/group-sessions).

Open [**Classes**](https://platform.siminsights.com/classes) in [platform.siminsights.com](https://platform.siminsights.com).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FuQeuHs71yuxVJcxviN2r%2FScreenshot%202026-09-04%20at%202.13.11%E2%80%AFPM.png?alt=media&amp;token=398b5c69-c1fa-4a97-8947-9f17ba17a331" alt="" width="563"><figcaption></figcaption></figure>

## Create a class

{% stepper %}
{% step %}

### Class details

Press **New class**. Give the class a name. Subject, grade or difficulty, academic year and curriculum are optional.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FUrrJY2dYlXJTV9ypMVFo%2Fimage.png?alt=media&amp;token=c9d3df2c-11f3-489d-82b0-7cef22e9b10b" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Students

Add learners by name and email, one per row, or press **Upload CSV** and use the template from **Download template**. You can also skip this step and add students later.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FxGv2ut6PpYChV9MogxDB%2Fimage.png?alt=media&amp;token=f20dfdcd-ca03-45aa-9bc3-a70639edad34" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Review

Check the details and press **Create class**. After creating your class students you have added will get an email to join.
{% endstep %}
{% endstepper %}

Every learner you add gets an email. Anyone without a HyperSkill account has one created for them, so students do not need to sign up on their own.

## Inside a class

A class has three tabs: **Lessons**, **Students** and **Settings**. Above them, the class shows how many students are enrolled, how many lessons are assigned, and how many are open to students right now.

### Students

The roster: each student's name, email and the date they were added. **Add students** opens the same form as the wizard, with CSV upload. To remove a student, open the row's menu and choose **Remove student**.

### Settings

Change the class name, subject, grade, academic year or curriculum. **Delete class**, at the bottom, removes the roster and lesson assignments for every student; their past work stays in your analytics. Students lose access to its lessons, and it cannot be undone.

## Where to next

* Assign work: [Lessons](/teach/lessons).
* See who has done what: [Learner progress](/teach/learner-lesson-progress).
* What your students see: [My classes and lessons](/learn/my-classes-and-lessons).


# Lessons

Assign simulations with AI-generated readings and quizzes, and set due dates.

A lesson is an asynchronous sequence of activities that cover Skillful simulation(s). Learners can work through the lesson on the web at their own pace. You can generate Suggested AI activities that will be relevant to the Skillful simulations you have selected

Open a class and choose the **Lessons** tab. Each lesson shows whether it is **Open**, **Past due** or **Draft**.

## Create a lesson

{% stepper %}
{% step %}

### Lesson details

Press **New lesson**. Name the lesson, then set the **Assign date**, the **Due date**, and whether it is **Visible to students**. A hidden lesson is a draft you can finish later.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FjH2TNrp9Q2dgcVdBJd9w%2Fimage.png?alt=media&amp;token=d25d827d-4931-42ac-af5e-afc8676c93d5" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Add content

Choose the Skillful Simulation(s) that you want your lesson to include. If you want to explore what Skillful Simulations exist go to [platform.siminsights.com/skillful](https://platform.siminsights.com/skillful).

Under **Suggested AI activities**, tick any of **Pre-Assessment**, **Reading**, **Vocabulary** and **Post-Assessment**. These are contextualized and generated from the simulations you picked you can view, adjust the order, and remove any of the activities after you have created the lesson.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FXDOpQ50NJW30laxeDm4U%2Fimage.png?alt=media&amp;token=0b230ee8-9efb-4c93-8aa7-c1baca7ecb5d" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Review

Check the activity list and press **Create lesson**.

{% hint style="warning" %}
Creation of a lesson with AI activities will take roughly 30 seconds. Make sure to leave the tab open as the lesson is being created. The tab does not need to be active, just open.
{% endhint %}
{% endstep %}
{% endstepper %}

{% hint style="info" %}
If your students are unable to view your lesson ensure that the lesson's assign date covers the current date and that the lesson is visible.
{% endhint %}

## Inside a lesson

A lesson has three tabs: **Content**, **Analytics** and **Settings**.

### Content

The activity list in the order learners will see it. Drag activities to reorder them, or use the arrow keys. Select one to preview it. **Add activities** adds more simulations from Skillful. The row menu removes an activity.

{% hint style="danger" %}
Editing a lesson that learners have already started changes what their progress means. Progress is counted against the activities each learner had when they began, so adding or removing activities can show wrong fractions, and a learner who had finished can appear in progress again. Finish the lesson design before students start it. If you must change a live lesson, expect progress to look off for those learners.
{% endhint %}

### Analytics

Who has not started, who is in progress and who has finished, with a row per student. [Learner progress](/teach/learner-lesson-progress) covers opening a student's work activity by activity, down to each simulation run.

### Settings

The name, assign date, due date and visibility. Turning **Visible to students** on is how you publish a draft. **Delete lesson**, at the bottom, removes it from the class; students lose access immediately, and any work they had already done stays in your analytics.


# Group sessions

Run one simulation with your whole class at once. Learners join with a code and need no account.

A group session is a synchronous way to have your class run the same simulation at the same time. You start it, learners join with a five-digit pincode, and you watch their progress from one page.

Group Session Hosting is part of Skillful. See Access and pricing.

## Start a session

Two ways, same result:

* Explore the simulations in [Skillful](https://platform.siminsights.com/skillful), find the simulation of your choice, and press **Assign group session**, then **Start session**.

  <figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F5b2M2YZurmjKLlhYhTMk%2FScreenshot%202026-09-04%20at%2012.06.01%E2%80%AFPM.png?alt=media&#x26;token=75dbf997-831f-43a6-a394-dda169e39821" alt="" width="563"><figcaption></figcaption></figure>
* Or alternatively, if you know the name of the simulation you want, go to [platform.siminsights.com/sessions](https://platform.siminsights.com/sessions), press **Host a session**, search for the simulation by name, and press **Start session**.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FLiiwh8pKPmqBnAce7xuv%2Fimage.png?alt=media&#x26;token=7e046bde-4f78-48c1-ae11-18f892b6bb55" alt="" width="563"><figcaption></figcaption></figure>

After hosting the group session a page will open with the join code.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FzZWYpF2tpfLMRIMcHOwM%2Fimage.png?alt=media&#x26;token=d77f4bab-3d93-4b1c-b1f8-a6f43732ea2a" alt="" width="563"><figcaption></figcaption></figure>

## Learners join

Give students the code. They can join two ways:

* **In a headset**: open HyperSkill, choose **Input pin code**, and enter the code.
* **On the web**: go to [launch.siminsights.com/join](https://launch.siminsights.com/join), enter the code and a name, and press **Launch**. The simulation runs in the browser.

A student who leaves the name blank is given one, such as Student 12.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FCVZQmJPsRoDs8n7ggiLG%2Fimage.png?alt=media&#x26;token=b2758161-b23b-4429-9383-2f67dedb14fc" alt="" width="375"><figcaption></figcaption></figure>

## Watch the session

The session page lists everyone who has joined: name, status, time in the simulation, and the device they are on. It updates on its own. Above the list are the totals: how many started, how many finished, and the average time to finish.

Open a learner's row to see their run in detail, including a comparison of their skills against the group average. Run detail also has the timeline of what they did, the event log and the replay.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fm9IM5DPyY03uWg5IvJ63%2FScreenshot%202026-09-04%20at%2012.08.48%E2%80%AFPM.png?alt=media&#x26;token=e559b2af-0c58-4d9c-b5ac-759db88e8e7e" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
Learners playing in a browser show as in progress even after they finish. Headset players show as finished. Use the finished count as a floor, not an exact figure, for a mixed class.
{% endhint %}

## End the session

Press **End session** when class wraps up. The code stops working for new joins.

## Afterwards

Every session you have hosted stays at [platform.siminsights.com/sessions](https://platform.siminsights.com/sessions), grouped by simulation. Group session analytics covers reading a finished session: how many started and finished, the average time, and the skill mastery for the session as a whole.


# Learner Lesson progress

See who has started and finished a lesson, and open a student's work activity by activity.

Every lesson has an **Analytics** tab showing the progress of your class, how many students have **Not started**, are **In progress**, and have **Completed** it, then one row per student with their status, how many activities they have finished, and when they started.

## Looking closer

Opening a student's row breaks their work down activity by activity. For a simulation, every run they made is listed, and each opens the full [Run detail](/analytics/run-detail): the timeline of what they did, their skill mastery, and the replay.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fkw3ZekSINVR7u5g9oMyL%2Fimage.png?alt=media&amp;token=3a1c0e3b-5c23-45bb-b69f-d62408a972ef" alt=""><figcaption></figcaption></figure>

## Things to know

* A student who retakes a lesson starts a fresh attempt. Their earlier attempt is no longer shown, and they move back to In progress until they finish again.
* Students who have left the class are still counted in the lesson's totals if they had started it.


# Courses you author

How learners are progressing through courses you publish on Skillful.

A course is a collection of [Lessons](/teach/lessons) that can be accessed by anyone, whether they are in a class or not.&#x20;

You can view the different courses in Skillful at <https://platform.siminsights.com/skillful/courses>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FimKA5dgkvqgUwRl9qpCj%2Fimage.png?alt=media&amp;token=01e35d6d-b8f6-4797-90e8-58c2fb22444b" alt="" width="563"><figcaption></figcaption></figure>

You can view data on courses that you author at [platform.siminsights.com/courses](https://platform.siminsights.com/courses). You can view data on how many learners have started your Course, how many have completed, specific details on how learners answers, and their progress within simulations.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FGIvfBo0i7WvkRp2v0hn6%2Fimage.png?alt=media&amp;token=be035bf1-8ed2-4e2b-a6ba-318908e3892a" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
If you are interested in authoring your own Course, please contact [support@siminsights.zendesk.com](/)
{% endhint %}


# Learn

How learners use Hyperskill. What learners see, from their summary to the lesson player.

Two kinds of work land here: what a teacher assigns you, and what you pick up on your own.

Assigned by a teacher:

* [My classes and lessons](/learn/my-classes-and-lessons): finding the work you have been given and starting it.
* [The lesson player](/learn/the-lesson-player): how a lesson works once it opens.

On your own:

* [Courses](/learn/courses): several lessons in a fixed order, from Skillful.
* [Quests](/learn/quests): practice questions on any topic, generated as you go.
* Career Pathway: an assessment that matches you to careers.

Either way, [My summary](/learn/my-summary) is where your results collect.

Set your role to **Learner** under [**Settings > Profile**](https://platform.siminsights.com/settings/profile).


# My summary

A learner's home: recent activity, classes, courses and skill mastery in one place.

The first page you see as a learner, at [platform.siminsights.com/me](https://platform.siminsights.com/me).

* **Simulations started** and **Simulations completed**, for the last week.
* **My courses** and **My classes**: what you are enrolled in.
* **My sessions**: every simulation you have run, most recent first. Open one for the full [Run detail](/analytics/run-detail), with your timeline, skill mastery and replay.
* **My skill mastery**: where you stand in each skill you have practiced. Pick a competency model to see the skills it contains.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FNx3GmLpmGyQDcK1rVCBT%2FScreenshot%202026-09-04%20at%2012.17.29%E2%80%AFPM.png?alt=media&amp;token=f9b13c0e-84ef-41ac-854b-49f3d823a7b0" alt=""><figcaption></figcaption></figure>


# My classes and lessons

Find the classes you are enrolled in and start the lessons your teacher assigned.

Your teacher enrolls you using your email address, so sign in with the same one they used. Every class you are in is listed under [**Classes**](https://platform.siminsights.com/classes).

Open a class to see its lessons. You only see lessons your teacher has opened, so an empty list usually means nothing has been assigned yet. Each lesson shows its due date and whether you have started it.

**Start lesson** opens it, or **Continue lesson** if you have already begun. See [The lesson player](/learn/the-lesson-player).

Back on the lesson page, **Your work** shows what you have completed, and **Activities** lists everything in the lesson.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FeQDTDdkWyCTo7yEngclC%2Fimage.png?alt=media&amp;token=d4afba5c-a8d4-46f1-a712-dff1326109b0" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If a class is missing, check that you signed in with the same email address your teacher used to add you.
{% endhint %}


# The lesson player

The activity types in a lesson, how answers are saved, and what retaking does.

A lesson is a sequence of activities, shown one at a time, with the list down the left so you can see where you are. Activities marked **Optional** can be skipped.

| Activity      | What you do                                                                                                 |
| ------------- | ----------------------------------------------------------------------------------------------------------- |
| Reading       | Read the text and press **Next**.                                                                           |
| Quiz          | Answer one question at a time. **Submit** checks each answer before you move on.                            |
| Open response | Type your answer and press **Submit**.                                                                      |
| Flash cards   | Tap a card to flip it. Work through the set and press **Finish**.                                           |
| Simulation    | The simulation opens inside the lesson. Choose how to play, then complete it.                               |
| Spark         | A conversation with an AI character opens inside the lesson. See [Playing a Spark](/spark/playing-a-spark). |
| Results       | Your score for the lesson.                                                                                  |

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F4HAbdRMvFazxYXNXiO7a%2Fimage.png?alt=media&amp;token=5b77615d-6540-4d32-94cc-f5be54c3cca1" alt=""><figcaption></figcaption></figure>

## Getting through it

The button at the bottom right is always the next step: **Submit**, then **Next**, then **Finish** on the last activity. Your answers are saved as you go, so you can close the lesson and come back; it reopens where you left off.

Some lessons hold you at a scored activity until you reach a minimum score. The player tells you what you got and what you need, and gives you **Try again**. After the allowed number of tries, **Continue** appears as well.

## Simulations

If you are on a simulation activity in the lesson you will be given a couple ways to experience the simulation. You can experience the simulation in VR by clicking (you will receive a pincode that you can put into your VR device), launch the simulation on the web (in your current tab), or alternatlivey if you have the Hyperskill Desktop application installed, you can launch via the Desktop application.

## Finishing and retaking

The results screen shows right answers out of questions asked. Open response and flash cards are not counted, and the screen says so when a lesson mixes them with quizzes.

**Retake lesson** starts the lesson again as a new attempt.

## Feedback

Every activity has a **Feedback** button at the bottom. Tell us what is working or confusing; it reaches the SimInsights team.


# Quests

Endless AI-generated practice questions on any topic you choose.

A Quest is way to drill down on a topic you choose, generated adaptively as you go, with no end. Sign in and go to [activity.siminsights.com/quest](https://activity.siminsights.com/quest).

Type what you want to learn, such as *I want to learn algebra*, and press **Start my Quest!**. Questions arrive a few at a time, multiple choice and short written answers, with your running score at the top.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F8gpG5zm7gojig0WBKSbj%2Fimage.png?alt=media&amp;token=b854a994-fe52-4bf6-84fa-13f22a6212e7" alt="" width="563"><figcaption></figcaption></figure>

Stop whenever you like. Your Quests are listed at [activity.siminsights.com](https://activity.siminsights.com) under **Quests**, where you can pick one up again, copy a link to it, or delete it.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FFgNdckVv40C9kKBhG0Gl%2Fimage.png?alt=media&amp;token=96c7fd37-835e-4663-a600-d39297e6a515" alt="" width="563"><figcaption></figcaption></figure>


# Courses

Work through a Skillful course at your own pace, one lesson to the next.

A course is several lessons in a fixed order, from Skillful. Nobody assigns it to you: you start it yourself and work through at your own pace. Browse them at [platform.siminsights.com/skillful/courses](https://platform.siminsights.com/skillful/courses), and see [Courses](/skillful/courses) for what a course page tells you before you start.

Once you have started one, your progress is at [platform.siminsights.com/courses](https://platform.siminsights.com/courses). **Continue course** picks up where you stopped.

Inside a lesson, the player shows which lesson of the course you are on. **Next lesson** takes you straight to the following one, and finishing the last completes the course.

{% hint style="warning" %}
Screenshot needed: a learner's course page with progress and the Continue course button.
{% endhint %}


# Career Pathways

An image-based assessment that matches learners to careers, salaries and training paths.

Career Pathways is a feature that will give you career recommendations after taking a short 60 image based quiz. It will also recommend simulations related to the careers that most match you. Try it out at [pathway.siminsights.com](https://pathway.siminsights.com/).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FG4uy2KtPnc68JEp3KTWi%2FScreenshot%202026-07-01%20102140.png?alt=media&#x26;token=80e9ce52-a3a7-440f-9914-aa15c557f964" alt=""><figcaption></figcaption></figure>

## How to Use the Career Pathway

To begin using the Career Pathway, click on either the **Start the assessment** button on the home page or the **Assessment** tab at the top of the page.

{% hint style="info" %}
You must be signed into your HyperSkill account in order to use the Career Pathway feature.
{% endhint %}

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fb0LhW617mfU1f3dxfblk%2FPathway2.png?alt=media&#x26;token=cb723df2-d816-40ca-9d3f-69618ca19630" alt=""><figcaption></figcaption></figure>

Next, once you are on the Assessment screen, go through each of the 60 image-based work activities. For each image, if the activity shown in the image is an activity that you find interesting or an activity that you would want to do for work, click on the **Yes** button at the bottom of the screen. Otherwise, if the activity shown in the image does not interest you at all, click on the **No** button. If you are unsure about whether the activity interests you or not, click on the **Skip** button.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FRni2r7hAJrbXoDe5LvVm%2FScreenshot%202026-06-16%20135334.png?alt=media&#x26;token=8b8d21bf-0963-4462-b538-0bd527fe47bd" alt=""><figcaption></figcaption></figure>

Once you have gone through all 60 images, the Career Pathway will show you 10 potential careers based on your answers to the images shown in the Assessment tool. The results will be shown in order of how closely each career matches with your RIASEC profile. A RIASEC profile is a ranking in 6 different categories that the Career Pathway utilizes in order to find careers that suit your interests. Your RIASEC profile will be shown immediately after finishing the assessment and will show you where you rank in each category.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FwUVRjk5Fqoo8qGR5irjZ%2FScreenshot%202026-06-16%20140314.png?alt=media&#x26;token=529e3aa2-f28e-4386-8cd2-a7a19bc44379" alt=""><figcaption><p>Example RIASEC profile shown after completing the image-based assessment</p></figcaption></figure>

After you have completed an assessment, your career results can be viewed at any time in the **My Matches** tab at the top of the screen. Each career result will have information regarding what the career is about, the median salary, annual job openings, the industry the career fits into, and the growth rate of the career. Each career will also contain information regarding why the Career Pathway selected the career as a recommendation for you, the top skills needed for the career, the knowledge areas needed for the career, the take-home pay of the career, and a typical 5-step pathway for securing the career.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FA7qhatgfyxTFXafPZCH4%2FPathway1.png?alt=media&#x26;token=bb1d4b58-555d-47b4-b272-c95b00e6d167" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FMbMvTRAgkvIQrfAeCKhb%2FScreenshot%202026-07-01%20102559.png?alt=media&#x26;token=e3c00c52-578a-4f4b-9be8-8d72d7b85aa3" alt=""><figcaption><p>Example of potential career result and information regarding the career</p></figcaption></figure>


# Analytics

What HyperSkill records about every run, and where to see it.

Every time someone runs a simulation, HyperSkill records what they did: each object they picked up, each step they completed or skipped, what they said to an AI character, how their skills changed, and where they were looking. That record is available from the moment the run ends.

Where you see it depends on where you are standing:

| You are looking at         | Where                                                | Who                 |
| -------------------------- | ---------------------------------------------------- | ------------------- |
| A simulation you author    | **Sims** > the simulation > **Analytics**            | Author              |
| A lesson in a class        | **Classes** > the class > the lesson > **Analytics** | Teacher             |
| A group session you hosted | **Group sessions** > the simulation > the session    | Teacher             |
| Your own runs              | **My summary**                                       | Learner             |
| An organization            | **Organizations** > the organization > **Analytics** | Organization admins |

* [Simulation analytics](/analytics/simulation-analytics): every run of one simulation, by anyone.
* [Run detail](/analytics/run-detail): one person's run, with its timeline, event log and replay.
* [Group session analytics](/analytics/group-session-analytics): how a hosted session went.
* [Data Export](/analytics/data-export): taking a simulation's runs out as a spreadsheet.
* [Data reference](/analytics/data-reference): what is captured, field by field.

Every path ends at the same place: [Run detail](/analytics/run-detail).


# Simulation analytics

Completion, mastery and per-run data across every learner who ran a simulation you author.

Every simulation you author has an **Analytics** tab, covering every run of it by anyone, anywhere.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FSUTr3AANW7ME2WZEf4Pv%2Fimage.png?alt=media&amp;token=864d1fe3-2736-4540-ae9c-d0555abc7e35" alt=""><figcaption></figcaption></figure>

## The cards

* **Started simulation** and **Completed simulation**: how many runs began, and how many reached the end.
* **Average completion time**: for runs that finished.
* **Completion rate**: finished runs as a share of started runs.
* **Average mastery**: the mean overall skill mastery across runs, when the simulation has a competency model.
* **Needs attention**: the skills learners are scoring lowest on.

## Sessions over time

Started and completed runs plotted by day, week or month. The period picker changes the window.

## Average skill mastery

The average score for each skill across every learner who ran the simulation. **View competency model** opens the skill tree behind it. [Competency models in HyperSkill Platform](/scoring-and-mastery/competency-models-in-the-hyperskill-platform) covers reading that tree and where its numbers come from.

## User sessions

One row per run: who, when, their mastery for that run, and the device they used. Each opens the full [Run detail](/analytics/run-detail).

## Group sessions

The group sessions hosted on this simulation, each opening to its session page.

## Export

**Export CSV** at the top of the page downloads every run as a spreadsheet. [Export](/analytics/data-export) covers what the file contains.


# Run detail

One learner's run of one simulation: timeline, skill mastery, event log and replay.

A run is one person playing one simulation once. Every analytics page in HyperSkill leads here: from a simulation's user sessions, from a lesson's learner progress, from a group session's learner list, or from a learner's own summary.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FpHCrflXYZJE2eW4wq5n3%2Fimage.png?alt=media&amp;token=1e075ac2-1d53-496d-b278-764b8af458a7" alt=""><figcaption></figcaption></figure>

## At the top

**Started** (when the simulation was started), **Duration** (how long the simulation lasts), **Device** (what device the user was using and the operating system) and **Total actions** (total number of actions the user performed in the sim). When the simulation has a competency model, **Overall mastery** shows the learner's score for the run.

## Skill mastery

Each skill in the simulation's competency model, with the learner's score for this run and how it changed from where they started. Runs from a group session also show **Skill vs group average**, comparing this learner with everyone else in that session.

## Timeline

The sequence of key moments within the simulation: when it started, quiz questions and response,, each skill that moved and by how much, feedback the learner was shown, and when they finished or left. Hover a marker for the detail.

## Event log

Everything recorded during the run, in order, with the time it happened on the device and the time it reached our servers. Expand a row for its fields. This is the raw material the timeline is built from; see the [Event reference](/analytics/data-reference/event-reference) for what each event means.

## Replay

For any 3D simulation run, a replay is provided of where the learner was and where they were looking, played back inside the simulation. Scrub the timeline to move through the run. Use the W, A, S and D keys to move your own view. Press "V" to toggle your camera view between third person and first person view. Right click + Drag to look around in third person view.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F0E6M4RLL4qnE8JOyEuj7%2Freplay.gif?alt=media&amp;token=81470e18-6bf0-4cfc-a182-a7d0361f0b47" alt=""><figcaption></figcaption></figure>

### Gaze Heatmap (experimental)

In the replay card you will also be able to toggle a gaze heatmap on and off, when enabled you will be able to see the heatmap of where the user is looking and where their focus was during the simulation.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FYChVNE2UWLwSCsTEA0Y3%2Fgaze2x.gif?alt=media&amp;token=bdf7d077-3a4d-4ae7-be37-28f29aeb2519" alt=""><figcaption></figcaption></figure>


# Group session analytics

Results from a hosted group session: who started, who finished, and the skills they showed.

While in platform.siminsights.com, open **Group sessions** in the sidebar. Each skillful simulation you have ever hosted a group session on is listed; open one to see **Group sessions over time** and the list of sessions on it.

Open a session for its page: how many learners started and finished, the average time to finish, the skill mastery for the session as a whole, and the learner list with each person's status, time and device. Open a learner for their [Run detail](/analytics/run-detail), which for group-session runs adds a comparison against the group average.

Status:

* Completed: The Learner has reached the end of the simulation and completed it.
* In Progress: The Learner has joined the simulation, no result yet.
* Incomplete: This means that the learner hit quit or left the simulation.
* Not Reported: Group Session ended before a result arrived. This normally means that the learner did not complete the Group Session before you hit "End Session"

{% hint style="info" %}
Hosting and running a session is covered in [Group sessions](/teach/group-sessions).
{% endhint %}


# Data Export

Export a simulation's runs to CSV for your own analysis.

To take a simulation's data out of HyperSkill, open [**Sims**](https://platform.siminsights.com/simulations), choose the simulation, open the **Analytics** tab and press **Export CSV**. The button reads **Exporting** while the file is prepared, then **Download CSV**. Simulations with more sessions may take longer.

The file holds one row per run, with the run's summary: who, when, how long, which device, whether it finished, and the skill scores.

For the full event stream behind a run, the [Event log](/analytics/run-detail) on the run's page shows every recorded event with its fields.


# Data reference

What HyperSkill records during a simulation, from gaze and object handling to decisions and speech.

Every look, action and decision inside a simulation is recorded, not just the final score.

A learner's session produces a detailed record of what they did, in what order, and how long each step took. That record is available in HyperSkill Platform and can be exported for your own analysis. See [Analytics](/analytics).

This page describes what is captured in plain terms. For field names and formats, see [How logging works](/analytics/data-reference/how-logging-works), the [Event reference](/analytics/data-reference/event-reference) and the [Attribute reference](/analytics/data-reference/attribute-reference).

## Replay: Attention and gaze

Where the headset was pointed throughout the run. Head position and orientation are sampled continuously, alongside both controllers, which lets a session be replayed and shows which parts of the environment a learner spent time facing.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F0E6M4RLL4qnE8JOyEuj7%2Freplay.gif?alt=media&amp;token=81470e18-6bf0-4cfc-a182-a7d0361f0b47" alt=""><figcaption></figcaption></figure>

## Gaze Heatmap (experimental)

When viewing the replay of a simulation you can also view the gaze heatmap over a period of time as the replay unfolds. You can toggle on and off the heatmap by clicking the heatmap button.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FOX1cwk6JrfZ8FTLR4ixg%2Fgaze2x.gif?alt=media&amp;token=9192d63d-4912-4690-997b-1a66516656c7" alt=""><figcaption></figcaption></figure>

## Object interaction

Every item picked up, put down, snapped into place, removed, used and released. Collisions between objects are captured too.

Each interaction names the objects involved, so you can see that a learner grabbed the wrong tool before finding the right one.

## Movement and navigation

Where a learner moved, where they stopped, and how long they stayed. Teleports and continuous position are both recorded, so the path through the space can be reconstructed.

Menu presses, button clicks and keyboard input are captured on the platforms that use them.

## Decisions and progression

Simulations are built as state machines, and every state entered, exited and transitioned is recorded, along with the condition or trigger that caused it.

That means the record shows not just that a learner advanced, but what they did to advance, and which conditions they satisfied or failed on the way.

Skipped steps, repeated attempts and hesitation are all visible in the sequence.

## Speech and dialogue

In conversational simulations, the full transcript is recorded. Each learner utterance is stored verbatim, along with how the system interpreted it, the response given back, and how long that response took to arrive.

Where a simulation uses an AI character, the character's configuration and the conversation history are recorded with the exchange.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fnwn89eNHrExVxlKBn13u%2Fimage.png?alt=media&#x26;token=d70da490-a369-4e76-8d19-dfc38681aafb" alt=""><figcaption></figcaption></figure>

## Assessment

Quiz questions record the question asked, the choices offered, the answer selected and whether it was correct.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FAF9UaEDrHIfbQGWijeq8%2Fimage.png?alt=media&#x26;token=ac12090c-48a1-4dd4-9fbf-63c6d17ceecb" alt=""><figcaption></figcaption></figure>

## Skills and mastery

Simulations can be mapped to a skill ontology. As a learner acts, observed skill values are updated and propagated up that ontology, and each update is recorded with its previous and new value.

This is what produces mastery over time rather than a single score at the end.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FZHtpRilvZ35vSIAueK8b%2Fimage.png?alt=media&#x26;token=ceca736e-e618-4b2f-9424-46d4925a0b6e" alt=""><figcaption></figcaption></figure>

## Feedback and scoring

Feedback shown to the learner is recorded, including the messages given, the timers behind them and how long the run took.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FLT9eGgwRgMDAfQoaxkhX%2Fimage.png?alt=media&#x26;token=5fa4b4c3-14b3-45a1-915b-5ae20ef7b99d" alt=""><figcaption></figcaption></figure>

## Session integrity

Alongside learner behaviour, each session records the technical conditions it ran under: device and platform, framerate, how long assets and scenes took to load, and any errors that occurred.

## Where this applies

Capture is consistent across the platforms HyperSkill runs on, including VR headsets, desktop, web, mobile and mixed reality. Some categories depend on the hardware. Controller interaction and room scale movement apply where the device supports them.


# How logging works

How events, sessions and runs are structured, how learners are identified, and how timestamps work.

When a learner experiences a simulation, their activity is recorded as a stream of timestamped events. This page describes how that stream is organized, so the [Event Reference](/analytics/data-reference/event-reference) and [Attribute Reference](/analytics/data-reference/attribute-reference) make sense.

## Core concepts

**Event.** A single occurrence at a point in time. Events are either learner generated, such as grabbing an object, or system generated, such as a scene finishing loading. Every event has a name and a timestamp.

**Attribute.** A key and value attached to an event. A grab event carries the name of the object grabbed. Attributes differ by event type, on top of a common set that every event carries.

**Session.** Begins when the learner opens the application and ends when they leave it. Identified by `sessionId`. One session can contain several runs.

**Run.** Begins when a simulation is loaded and ends when the learner leaves it. Identified by `runId`. This is the unit most analytics are built around, and the unit a replay covers.

**Lesson attempt.** When a simulation is played inside a lesson, the run is also tied to a lesson attempt through `lessonAttemptId`, which links simulation activity to course and classroom progress.

## Platforms

The `appName` field identifies where a run happened.

| appName                  | Platform                                    |
| ------------------------ | ------------------------------------------- |
| hypermock-vr             | VR headsets, Quest family and Pico          |
| hypermock-desktop        | Desktop application and the web build       |
| hypermock-web            | Spark, the conversational simulation player |
| hyperskill-android       | Android                                     |
| hyperskill-vision        | Apple Vision Pro                            |
| hololens2, hyperskill-hl | Microsoft HoloLens 2                        |
| ios                      | iOS and iPadOS                              |
| career-pathway           | Career Pathway assessment                   |
| activity-viewer          | Lesson and activity player                  |

Not every event appears on every platform. Controller and haptic attributes only appear where the hardware supports them. The Event Reference notes where this matters.

## Identifying the learner

Three fields carry identity, and which are present depends on how the learner reached the simulation.

| Field                        | Meaning                                                                                               |
| ---------------------------- | ----------------------------------------------------------------------------------------------------- |
| `hs_user_id`                 | The HyperSkill account. Present for signed in learners.                                               |
| `user_auth0`                 | The sign in identity, for example `google-oauth2 \| 1234...`. Present when the learner authenticated. |
| `hs_anon_id`                 | A generated identifier for a learner with no account.                                                 |
| `userId`                     | A display name, not a stable identifier                                                               |
| `student_id`, `student_name` | Supplied by an LMS on SCORM launches.                                                                 |

A run is anonymous when it carries neither `hs_user_id` nor a real `user_auth0`

Scores and skill values are recorded per run, so an anonymous run still produces results. They just cannot be attributed to a person.

## Timestamps

Every event carries two times, and they answer different questions.

| Field              | Meaning                                |
| ------------------ | -------------------------------------- |
| `timestamp_client` | When the event happened on the device. |
| `timestamp_server` | When the event arrived at our servers. |

Both are Unix milliseconds in UTC.

Events are uploaded in batches, so several events can share a single `timestamp_server` even though they happened seconds apart. On a headset used offline, an entire session uploads at once when it reconnects, which compresses hours of activity into a single instant of server time.

Use `timestamp_client` to measure how long something took, the gap between two events, or the order they occurred in. Use `timestamp_server` for when a session was received, and as a fallback when a client timestamp is missing.

Client clocks are set by the device and are occasionally wrong. Because a wrong clock is usually wrong by a constant amount, differences between two client timestamps stay accurate even when the absolute time does not.

## Sensor Data

The sensor stream records three entities per run: `headset`, `ctrl_l` and `ctrl_r`. Each sample carries position as `px`, `py`, `pz` and rotation as `rx`, `ry`, `rz`, tied to a `runId`.


# Event reference

Every event HyperSkill records, what triggers it, and which platforms send it.

Every event recorded during a simulation, grouped by what it describes. Key attributes are the ones specific to that event. See the [Attribute Reference](/analytics/data-reference/attribute-reference) for the fields every event carries.

## Simulation lifecycle

| Event                               | Meaning                             | Key attributes                             |
| ----------------------------------- | ----------------------------------- | ------------------------------------------ |
| `simulation_load`                   | Simulation began loading            |                                            |
| `simulation_load_process_completed` | A step of the load process finished |                                            |
| `simulation_started`                | Learner began the simulation        | `simLoadTime`, `simLoaded`, `errorMessage` |
| `simulation_completed`              | Learner reached the end             | `timeToComplete` (seconds)                 |
| `simulation_exited`                 | Learner left the simulation         | `simCompleted`, `simLoaded`                |
| `loaded_scene`                      | Application scene loaded            | `sceneLoaded`                              |
| `logging_started`                   | Logging began for this session      |                                            |
| `session_started`                   | Learner opened the application      |                                            |
| `session_ended`                     | Learner left the application        |                                            |

A run that has `simulation_exited` without `simulation_completed` was abandoned before the end.

## Object interaction

| Event                      | Meaning                              | Key attributes                                 |
| -------------------------- | ------------------------------------ | ---------------------------------------------- |
| `trigger_event_Grab`       | Object was grabbed                   | `grabName`, `grabEntityType`                   |
| `trigger_event_Ungrab`     | Grabbed object was released          | `ungrabName`                                   |
| `trigger_event_Snap`       | Object was snapped into place        | `snapObject`, `snapHitboxName`                 |
| `trigger_event_Unsnap`     | Object was removed from a snap point | `snapObject`, `snapHitboxName`                 |
| `trigger_event_Use`        | Object was used                      | `useHitboxName`                                |
| `trigger_event_UseRelease` | Object stopped being used            | `useReleaseTargetName`, `useReleaseHitBoxName` |
| `trigger_event_Collide`    | Two objects collided                 | `collided1`, `collided2`                       |
| `trigger_event_Proximity`  | Learner reached a target location    | `locationName`, `radius`                       |
| `grab`                     | Object grabbed, legacy form          | `target`, `controller`                         |
| `ungrab`                   | Object released, legacy form         | `target`                                       |

Interaction events on hardware with haptics also carry `hapticFeedbackEnabled`, `hapticAmplitude`, `hapticDuration` and `hapticFrequency`.

`grab` and `trigger_event_Grab` come from different subsystems and can both fire for the same physical action.

## Attention

| Event                 | Meaning                           | Key attributes    |
| --------------------- | --------------------------------- | ----------------- |
| `focused_on_object`   | Learner looked at a marked object | `focusedObject`   |
| `unfocused_on_object` | Learner looked away from it       | `unfocusedObject` |

## Movement and input

| Event            | Meaning              | Key attributes |
| ---------------- | -------------------- | -------------- |
| `teleport_event` | Learner teleported   | `end_position` |
| `key_press`      | Keyboard key pressed | `keycode`      |
| `button_clicked` | Menu button clicked  | `buttonName`   |

## State machine

Simulation logic runs as state machines. These events describe progression through them.

| Event                                               | Meaning                                   | Key attributes                                                  |
| --------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------------- |
| `state_machine_state_enter`                         | A state was entered                       | `state`, `stateId`, `smName`, `smId`, `attributes`              |
| `state_machine_state_exit`                          | A state was exited                        | `state`, `stateId`, `smName`, `smId`, `attributes`              |
| `state_machine_transition_event`                    | Moved between two states                  | `fromState`, `toState`, `transitionName`, `triggeredConditions` |
| `state_machine_always_running_trigger_transition`   | Global state machine fired on a trigger   | `triggerType`, `triggerName`                                    |
| `state_machine_always_running_condition_transition` | Global state machine fired on a condition | `triggeredConditions`, `containerName`                          |

`attributes` on the enter and exit events is a snapshot of every simulation variable at that moment, which is how you reconstruct the world state at any point in a run.

`triggeredConditions` records the condition that was satisfied, in the form `[AttributeName] [Operator] [Value]`, for example `[ Count ] [ >= ] [ 10 ]`.

## Speech and dialogue

| Event                             | Meaning                             | Key attributes                                                                                                                         |
| --------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `user_utterance`                  | Learner spoke or typed              | `utterance`, `utteranceId`, `utteranceConfidence`, `wasUtteranceText`, `nluEngine`, `previousHMState`, `currentHMState`, `nextHMState` |
| `gpt_chit_chat`                   | AI character replied                | `response`, `roundTripTimeInMs`, `character.name`, `character.prompt`, `history`, `utteranceId`                                        |
| `gpt_agent`                       | Scoring agent evaluated the learner | `agentName`, `agentType`, `agentGoal`, `agentSuccess`, `languageModel`, `variables`, `variableValues`                                  |
| `gpt_pdf_qa`                      | Question answered from a document   | `response`, `roundTripTimeInMs`, `pdfIds`                                                                                              |
| `trigger_event_SpeechReceived`    | Speech activated a trigger          | `triggerName`, `triggerType`                                                                                                           |
| `trigger_event_ConversationEvent` | Conversation activated a trigger    | `triggerName`, `triggerType`                                                                                                           |
| `trigger_event_AgentResponded`    | Agent response activated a trigger  | `agentId`                                                                                                                              |
| `trigger_event_RejectedIntent`    | Utterance matched no intent         | `Failed Utterances`                                                                                                                    |
| `user_utterance_wpm`              | Speaking rate for an utterance      | `wpm`, `utterance`                                                                                                                     |
| `user_utterance_total_word_count` | Running word count for the run      | `totalWordCount`, `utterance`                                                                                                          |

`roundTripTimeInMs` is the AI response time as measured on the device, which is the accurate way to report latency.

In Spark, the learner's words appear only on `user_utterance`. In simulations built in the authoring tool, `gpt_chit_chat` also echoes them in an `utterance` field.

## Assessment

| Event                    | Meaning                              | Key attributes                                                |
| ------------------------ | ------------------------------------ | ------------------------------------------------------------- |
| `quiz_multiple_question` | Quiz question answered               | `question`, `questionChoices`, `selectedAnswers`, `isCorrect` |
| `quiz_state_action`      | Quiz answered inside a state machine | `question`, `choices`, `answers`, `isCorrect`                 |

## Skills and mastery

| Event                             | Meaning                         | Key attributes                                                               |
| --------------------------------- | ------------------------------- | ---------------------------------------------------------------------------- |
| `user_attribute_updated`          | An observed skill value changed | `userAttributeName`, `userAttributeValue_n`, `userAttributeValue_previous_n` |
| `user_attribute_updated_response` | A parent skill was recalculated | `userAttributeName`, `userAttributeValue_n`, `userAttributeValue_previous_n` |

The first records what was directly observed. The second records values propagated up the skill ontology from that observation.

## Feedback

| Event                                               | Meaning                               | Key attributes                                                    |
| --------------------------------------------------- | ------------------------------------- | ----------------------------------------------------------------- |
| `feedback_recorded`                                 | Feedback was produced for the learner | `logMessages`, `timers`, `duration`, `finishedTimes`, `startTime` |
| `feedback_item_added`                               | A single feedback item was added      | `timeSinceSimStartedSeconds`                                      |
| `feedback_submitted`                                | Learner submitted feedback            | `comment`, `decision`, `utterance`, `utteranceConfidence`         |
| `feedback_recorded_utterance_scoring`               | An utterance was scored               |                                                                   |
| `feedback_recorded_utterance_scoring_user_feedback` | Learner rated that scoring            |                                                                   |

`logMessages` holds the feedback text shown to the learner, separated by `|`.

## Video

| Event                | Meaning                    | Key attributes |
| -------------------- | -------------------------- | -------------- |
| `video_started`      | Video began                | `url`          |
| `video_paused`       | Video paused               |                |
| `video_ended`        | Video finished             |                |
| `video_step_through` | Learner scrubbed the video | `delta_time`   |

## Group and multiplayer

| Event                     | Meaning                                   | Key attributes                                                                                                                                                                          |
| ------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `multiplayer-session-end` | Group session ended, with network quality | `pingInMs`, `pingVarianceInMs`, `disconnectCount`, `reconnectCount`, `resyncEventCount`, `maxPlayers`, `totalMessagesSent`, `totalMessagesReceived`, `totalSessionTimeInMs`, `roomName` |

## Performance

| Event                 | Meaning                         | Key attributes        |
| --------------------- | ------------------------------- | --------------------- |
| `sensor`              | Position and orientation sample | see the sensor stream |
| `tts_service_changed` | Text to speech provider changed | `ttsService`          |

Framerate is not a separate event. `fps_current`, `fps_average`, `fps_highest` and `fps_lowest` ride along on many simulation events.

## Lesson and activity events

Recorded by the lesson player rather than the simulation itself.

| Event                      | Meaning                                  |
| -------------------------- | ---------------------------------------- |
| `lesson_session_started`   | Learner opened a lesson                  |
| `lesson_session_resumed`   | Learner returned to an unfinished lesson |
| `lesson_session_completed` | Learner finished a lesson                |
| `lesson_session_reset`     | Lesson progress was reset                |
| `activity_viewed`          | Learner opened an activity               |
| `activity_completed`       | Learner finished an activity             |
| `activity_scored`          | An activity produced a score             |
| `activity_abandoned`       | Learner left an activity unfinished      |
| `quiz_response_submitted`  | Quiz answer submitted in a lesson        |
| `question_answered`        | Assessment question answered             |
| `card_viewed`              | Flashcard viewed                         |
| `sim_run`                  | A simulation was launched from a lesson  |

## Diagnostics

Recorded to a separate system log rather than the event stream.

| Event                                | Meaning                      |
| ------------------------------------ | ---------------------------- |
| `system_exception`                   | An error occurred            |
| `experience_load_process_started`    | Simulation load began        |
| `experience_load_process_completed`  | Simulation load finished     |
| `experience_scene_loaded`            | Scene finished loading       |
| `simulation_json_loaded`             | Simulation definition loaded |
| `simulation_spawn_vo_started`        | Object spawning began        |
| `simulation_spawn_vo_ended`          | Object spawning finished     |
| `tts_generation`                     | Speech was synthesised       |
| `clicked`                            | Interface element clicked    |
| `pause_menu_toggled`                 | Pause menu opened or closed  |
| `user_login`                         | Learner signed in            |
| `messages_sent`, `messages_received` | Multiplayer message counts   |
| `ping_state`                         | Network latency sample       |


# Attribute reference

Every attribute carried on a HyperSkill event, with its meaning and format.

Fields carried by logged events. The first section applies to almost every simulation event. Later sections cover fields specific to one event, which are listed against that event in the [Event Reference](/analytics/data-reference/event-reference).

## Common to every event

| Field              | Meaning                                     | Example              |
| ------------------ | ------------------------------------------- | -------------------- |
| `event`            | Name of the event                           | `trigger_event_Grab` |
| `timestamp_client` | When it happened on the device, Unix ms UTC | `1785530105599`      |
| `timestamp_server` | When it reached our servers, Unix ms UTC    | `1785530105682`      |
| `appName`          | Platform that produced it                   | `hypermock-vr`       |
| `applicationType`  | Build or editor                             | `Build`              |
| `version`          | Application version                         | `1.49.68.3`          |
| `server`           | Environment                                 | `Production`         |
| `logType`          | Event or action                             | `event`              |
| `recordType`       | Index the record belongs to                 | `hypermock-event`    |

## Identity

| Field                        | Meaning                                                  | Example                      |
| ---------------------------- | -------------------------------------------------------- | ---------------------------- |
| `hs_user_id`                 | HyperSkill account, present when signed in               | `6346`                       |
| `user_auth0`                 | Sign in identity                                         | `google-oauth2\|11241194...` |
| `hs_anon_id`                 | Generated identifier when there is no account            | `5db50dc9-13bd-490a-...`     |
| `userId`                     | Display name. Not a stable identifier, do not join on it | `Jonathan Mai`               |
| `student_id`, `student_name` | Supplied by an LMS on SCORM launches                     |                              |

## Joining records together

| Field                            | Meaning                                                                     |
| -------------------------------- | --------------------------------------------------------------------------- |
| `runId`                          | One play of one simulation. The main key for run level analysis and replay. |
| `sessionId`                      | One visit to the application. Can contain several runs.                     |
| `simulationId`, `simulationName` | Which simulation was played                                                 |
| `publicId`                       | Public identifier of the simulation                                         |
| `lessonId`, `activityId`         | Lesson and activity the run belongs to                                      |
| `lessonAttemptId`                | Links a run to a learner's attempt at a lesson                              |
| `lessonSessionId`                | One sitting within a lesson attempt                                         |
| `launchSessionId`                | Launch record, used for group sessions and LMS launches                     |
| `groupSessionId`                 | Group session the run was part of                                           |
| `multiplayerSessionId`           | Multiplayer room the run was part of                                        |
| `org_id`                         | Organisation the learner belongs to                                         |

## Device

Device details are nested under `deviceInfo`.

| Field              | Meaning                              | Example                                                  |
| ------------------ | ------------------------------------ | -------------------------------------------------------- |
| `deviceInfo.Type`  | Broad category                       | `Handheld`, `Desktop`, `Web (Hyperskill)`, `Web (Spark)` |
| `deviceInfo.Name`  | Specific device                      | `Quest 3`, `Quest 3S`, `Pico Neo 3`                      |
| `deviceInfo.Model` | Manufacturer model string or browser | `Oculus Quest`, `Chrome 150.0.0.0`                       |
| `deviceInfo.OS`    | Operating system                     | `Android OS 14 / API-34`, `Windows 11`, `macOS`          |
| `deviceInfo.Id`    | Device identifier                    | `c3563b04486eca34...`                                    |

## Performance

Present on many simulation events rather than as a separate event.

| Field                       | Meaning                              |
| --------------------------- | ------------------------------------ |
| `fps_current`               | Framerate at the moment of the event |
| `fps_average`               | Average framerate so far in the run  |
| `fps_highest`, `fps_lowest` | Range so far in the run              |

## How a simulation was opened

| Field              | Meaning                                |
| ------------------ | -------------------------------------- |
| `loadedFrom`       | Where the simulation was launched from |
| `loadedBy`         | Who launched it                        |
| `isSharedSim`      | Whether it was a shared simulation     |
| `publiclyLoaded`   | Whether it was opened publicly         |
| `idUsedForLoading` | Identifier used to load it             |

## Object interaction

| Field                                                                           | Meaning                                     | Appears on                                   |
| ------------------------------------------------------------------------------- | ------------------------------------------- | -------------------------------------------- |
| `grabName`                                                                      | Object grabbed                              | `trigger_event_Grab`                         |
| `ungrabName`                                                                    | Object released                             | `trigger_event_Ungrab`                       |
| `grabEntityType`                                                                | Type of object grabbed                      | `trigger_event_Grab`                         |
| `snapObject`                                                                    | Object snapped or unsnapped                 | `trigger_event_Snap`, `trigger_event_Unsnap` |
| `snapHitboxName`                                                                | Snap point involved                         | `trigger_event_Snap`, `trigger_event_Unsnap` |
| `useHitboxName`                                                                 | Object used                                 | `trigger_event_Use`                          |
| `useReleaseTargetName`                                                          | Object no longer used                       | `trigger_event_UseRelease`                   |
| `collided1`, `collided2`                                                        | The two colliding objects                   | `trigger_event_Collide`                      |
| `locationName`                                                                  | Target location reached                     | `trigger_event_Proximity`                    |
| `radius`                                                                        | Distance from the centre of the target      | `trigger_event_Proximity`                    |
| `target`, `controller`                                                          | Object and controller, legacy grab events   | `grab`, `ungrab`                             |
| `triggerName`, `triggerType`                                                    | The trigger that fired                      | all `trigger_event_*`                        |
| `hapticFeedbackEnabled`, `hapticAmplitude`, `hapticDuration`, `hapticFrequency` | Haptic response, where hardware supports it | interaction events                           |

## State machine

| Field                             | Meaning                                                  |
| --------------------------------- | -------------------------------------------------------- |
| `smName`, `smId`                  | Which state machine                                      |
| `state`, `stateId`                | State entered or exited                                  |
| `fromState`, `fromStateId`        | State transitioned out of                                |
| `toState`, `toStateId`            | State transitioned into                                  |
| `transitionName`, `transitionId`  | The transition itself                                    |
| `triggeredConditions`             | Condition satisfied, as `[Attribute] [Operator] [Value]` |
| `containerName`, `containerIndex` | Condition group in the global state machine              |
| `attributes`                      | Snapshot of every simulation variable at that moment     |

## Speech and dialogue

| Field                                                 | Meaning                                                  |
| ----------------------------------------------------- | -------------------------------------------------------- |
| `utterance`                                           | What the learner said or typed                           |
| `utteranceId`                                         | Identifier linking an utterance to the reply it produced |
| `utteranceConfidence`                                 | Speech recognition confidence, 0 to 1                    |
| `wasUtteranceText`                                    | Whether it was typed rather than spoken                  |
| `nluEngine`                                           | Which language understanding engine handled it           |
| `previousHMState`, `currentHMState`, `nextHMState`    | Dialogue graph position                                  |
| `dialogVersion`, `scriptVersion`                      | Version of the dialogue content                          |
| `response`                                            | The AI character's reply                                 |
| `roundTripTimeInMs`                                   | How long that reply took, measured on the device         |
| `character.name`, `character.prompt`                  | The AI character and its configuration                   |
| `history`                                             | Conversation so far                                      |
| `simKBContext`                                        | Knowledge base context supplied to the model             |
| `languageModel`                                       | Model used                                               |
| `agentName`, `agentType`, `agentGoal`, `agentSuccess` | Scoring agent and its outcome                            |
| `variables`, `variableValues`                         | Variables the agent evaluated                            |
| `wpm`                                                 | Speaking rate for one utterance                          |
| `totalWordCount`                                      | Running word count for the run                           |

## Assessment

| Field                        | Meaning                        |
| ---------------------------- | ------------------------------ |
| `question`                   | Question asked                 |
| `questionChoices`, `choices` | Choices offered                |
| `selectedAnswers`, `answers` | What the learner chose         |
| `isCorrect`                  | Whether the answer was correct |

## Skills

| Field                           | Meaning                             |
| ------------------------------- | ----------------------------------- |
| `userAttributeName`             | Name of the skill or observed value |
| `userAttributeValue_n`          | New value                           |
| `userAttributeValue_previous_n` | Value before this update            |

## Feedback

| Field                        | Meaning                                               |
| ---------------------------- | ----------------------------------------------------- |
| `logMessages`                | Feedback text shown to the learner, separated by `\|` |
| `timers`                     | Named timers and their durations                      |
| `duration`                   | Total time taken                                      |
| `finishedTimes`              | Number of completions                                 |
| `startTime`                  | When the feedback period began                        |
| `comment`                    | Learner's written comment                             |
| `decision`                   | Decision point in the dialogue                        |
| `timeSinceSimStartedSeconds` | When a feedback item was added, relative to the start |

## Simulation lifecycle

| Field                              | Meaning                                     |
| ---------------------------------- | ------------------------------------------- |
| `timeToComplete`                   | Seconds taken to finish                     |
| `simLoadTime`                      | Seconds taken to load                       |
| `simLoaded`, `simCompleted`        | Whether the simulation loaded and completed |
| `errorMessage`                     | Error raised during start                   |
| `sceneLoaded`                      | Scene that was loaded                       |
| `end_position`                     | Destination of a teleport                   |
| `keycode`                          | Key pressed                                 |
| `buttonName`                       | Menu button clicked                         |
| `focusedObject`, `unfocusedObject` | Object looked at or away from               |
| `url`                              | Video played                                |
| `delta_time`                       | Amount a video was scrubbed by              |

## Sensor stream

Recorded separately from events, at a high sample rate, and used for session replay.

| Field              | Meaning                                         |
| ------------------ | ----------------------------------------------- |
| `entity`           | What was sampled: `headset`, `ctrl_l`, `ctrl_r` |
| `px`, `py`, `pz`   | Position                                        |
| `rx`, `ry`, `rz`   | Rotation                                        |
| `runId`            | Run the sample belongs to                       |
| `timestamp_client` | When the sample was taken                       |

## Lesson and activity events

Recorded by the lesson player, with a different envelope from simulation events.

| Field                                             | Meaning                                     |
| ------------------------------------------------- | ------------------------------------------- |
| `lessonId`, `activityId`                          | Lesson and activity                         |
| `sessionId`                                       | Lesson viewing session                      |
| `hs_user_id`, `user_auth0`, `user_name`           | Learner identity                            |
| `mode`                                            | How the activity was opened                 |
| `slideType`                                       | Type of activity content, for example `mcq` |
| `questionText`, `studentAnswer`, `questionNumber` | Assessment content and response             |
| `riasecDimension`                                 | Career Pathway interest dimension           |


# Scoring and mastery

What a score means, and how skill mastery is built up and tracked.

HyperSkill can score learners different ways.

**Quizzes** count answers: a quiz in a lesson shows how many questions were right out of how many asked.

**Simulations** measure skills: as a learner acts inside a simulation, each skill in its competency model moves up or down, and the run ends with a mastery value for every skill and an overall figure.

* [How scores work](/scoring-and-mastery/how-scores-work): both kinds, and the rules that trip people up.
* [Competency models](/scoring-and-mastery/competency-models): the skill trees behind simulation scoring.
* [Competency models in SimGenie](/scoring-and-mastery/competency-models-in-simgenie): making and deploying one.
* [Competency models in HyperSkill](/scoring-and-mastery/competency-models-in-hyperskill): attaching one to a simulation and setting attributes.
* [Competency models in HyperSkill Platform](/scoring-and-mastery/competency-models-in-the-hyperskill-platform): reading the results.


# How scores work

What a quiz score means, what skill mastery means, and why the two are not comparable.

## Quizzes in lessons

A quiz, or a single multiple-choice question, is scored as a count: right answers out of questions asked. The lesson's results screen shows that count, for example 7 / 10. Open-response questions and flashcards are not scored, so a lesson that mixes them with multiple choice says so on its results screen.

## Simulations

A simulation with a competency model scores skills, not questions. If the users skill level has not been observed they start at 50%. Each time the learner does something the simulation was built to observe, that skill's value moves, and the change is carried up to the latent skills above it in the model. At the end of the run each skill has a value from 0 to 100%, and the overall mastery is the average of the model's top-level skills, all weighted equally.

These values are what appears as **Skill mastery** and **Overall mastery** on a run, and what is averaged into a simulation's, a session's or an organization's mastery figures.

A simulation without a competency model records no skill mastery. Its runs still show the timeline, event log, replay, and other data.

## Spark conversations

A Spark simulation scores the conversation with agents the author set up. Each agent judges one thing, such as use of filler words, and can set a skill value the same way a simulation does.


# Competency models

Also known as ontologies

Competency Models, also known as ontologies, are the main tool behind the Scoring Feedback feature. They define the skills (also referred to as a User Attributes), and scoring structure used to evaluate learner performance during a simulation. This allows a simulation to connect user actions to measurable skills and produce consistent performance ratings and skill mastery percentages.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FKdWvNSUPXIizAqXJWBc6%2FScreenshot%202026-06-23%20103604.png?alt=media&#x26;token=a9857c1e-354f-410a-bda9-60500ada5e97" alt=""><figcaption><p>Example of the Sales Excellence Competency Model. Each of the green boxes represent user attributes that can be directly measured and included into HyperSkill.</p></figcaption></figure>

**Access to features regarding Competency Models requires special permission that are only granted upon request**. If you would like to request access to the Competency Models feature or are interested, contact <support@siminsights.zendesk.com>

Competency Models rely on SimGenie, HyperSkill Studio and HyperSkill Platform together to fully function. Models are created and managed in SimGenie, deployed in HyperSkill Studio to power scoring inside simulations, and the resulting scores and session data are reviewed in HyperSkill Platform. See [Competency models in SimGenie](/scoring-and-mastery/competency-models-in-simgenie), [Competency models in HyperSkill](/scoring-and-mastery/competency-models-in-hyperskill), and [Competency models in HyperSkill Platform](/scoring-and-mastery/competency-models-in-the-hyperskill-platform) to learn more about how Competency Models work in the platform.


# Competency models in SimGenie

Creating and deploying a competency model in SimGenie.

In SimGenie, users can create and deploy competency models, edit existing competency models, or view the current list of all available competency models deployed in Hyperskill. In order to utilize this Competency Models feature of SimGenie, you must have internal permissions that are only granted upon request. Once you do have the required permissions, a new generation type for SimGenie prompts will show up, labeled **CM** for Competency Models.&#x20;

{% hint style="info" %}
Note: this feature is only available if specifically requested, please contact support <support@siminsights.zendesk.com> if you are interested or have any questions.
{% endhint %}

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FjGC0u8Xf89GmKVjGLKef%2FScreenshot%202026-06-24%20100805.png?alt=media&amp;token=60f37adf-9399-4d0c-9a9b-fe6e9314889a" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note: Selecting the **Auto** generation type will also function in the same way as selecting the **CM** generation type, as the auto generation type will switch to whatever generation type fits the prompt.
{% endhint %}

There are many potential prompts that a user can ask SimGenie regarding competency models. A few common examples of some prompts and results have been listed below for your convenience.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FwL46ELO67s7amCf2oT4Z%2FScreenshot%202026-06-24%20111215.png?alt=media&amp;token=acfef51b-af9e-49d7-baa9-2b08942a457c" alt=""><figcaption><p>Example prompt to SimGenie to show a list of all currently available competency models in Hyperskill.</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F8T0955Ver1sX4OUhFSWI%2FScreenshot%202026-06-24%20111308.png?alt=media&amp;token=b6bb7266-83e9-48d8-bda1-709f6d7d4e4a" alt=""><figcaption><p>Example prompt to SimGenie to show the details of a specific competency model, the Sales Excellence competency model, in a tree format.</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FVNS7pdyWwqydVbqopYuz%2FScreenshot%202026-06-24%20111435.png?alt=media&amp;token=e590ba60-b384-4e26-9c65-9d23ba41c798" alt=""><figcaption><p>Example prompt to create a draft of an edit of the Sales Excellence competency model where the 'Closing' aspect of the model is removed. To officially create and deploy this new model into hyperskill, click on the <strong>Deploy to Hyperskill</strong> button at the top right corner.</p></figcaption></figure>


# Competency models in HyperSkill

Attaching a competency model to a simulation and setting user attributes from it.

In HyperSkill, users can add any deployed competency models into their own simulations. Once a deployed competency model has been added to a simulation, users will then be able to record information about the performance of all the learners playing the simulation. HyperSkill accomplishes this by recording user performance on specific user attributes, shown in the competency models as leaf nodes, or the green boxes in a competency model diagram (also referred to as observable nodes). Every learner's score in each of these attributes is rated on a scale of 0.0 to 1.0, where 1.0 marks the best performance and 0.0 marks the worst performance. Once a simulation has collected the data and information of a learner session of a simulation, the data is then displayed on the dashboard (See the [Competency models in HyperSkill Platform](/scoring-and-mastery/competency-models-in-the-hyperskill-platform) for more information).

{% hint style="info" %}
Note: The default weighting for all user attributes is equal, meaning every user attribute contributes equally to the final overall performance rating of the learner.
{% endhint %}

To add a competency model to a HyperSkill simulation, first go to the **Settings** tab in the top bar of the simulation, then go the **Data & Platform** tab in settings, then add the desired competency model in the **Competency Models** section.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FbfB55ErYqqNjeXYiB61O%2FScreenshot%202026-06-24%20101852.png?alt=media&#x26;token=de4d7186-5bfe-4e0f-8092-9fe09de83597" alt=""><figcaption></figcaption></figure>

After adding a competency model to the simulation, you can change user attributes through 3 main methods; the Scenario Flow, Rules, and agents. To set user attributes through the Scenario Flow, click on the **Set User Attribute** State Action under the **Actions** tab. To set user attributes through Rules, click on the **Set User Attribute** option under the **then do all of these actions** tab. To set user attributes through agents, add a User Attribute output in the **Output** section of the **AI** tab.

{% hint style="info" %}
Note: Your account must have [Skillful access](/organizations-and-subscription/subscription-and-seats) in order to change user attributes through agents.
{% endhint %}

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FQF23HIROCZ2dsHnS5pBv%2FScreenshot%202026-06-24%20105255.png?alt=media&#x26;token=6e1f1417-a9d7-4b68-b0a9-1707f8ad367f" alt=""><figcaption><p>Example of the Set User Attribute action under the Scenario Flow tab.</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FhFu7hsrqST1eYYtVYx5i%2FScreenshot%202026-06-24%20105352.png?alt=media&#x26;token=bc811827-dcd3-4ee8-965d-1d53d2558316" alt=""><figcaption><p>Example of the Set User Attribute action under the Rules tab.</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FNR7Qh7BhnNkFB5ndZ1FZ%2FScreenshot%202026-06-24%20104957.png?alt=media&#x26;token=f513e244-cda3-43e9-8aa1-a3135339f6bc" alt=""><figcaption><p>Example of the Set User Attribute section of the Output tab for Agents.</p></figcaption></figure>


# Competency models in the HyperSkill Platform

Reading skill mastery and competency model results in HyperSkill Platform.

In the HyperSkill Platform, users can view the performance data of all the learners who played a simulation. Users can decide to either view the total aggregate performance data of all learner sessions in a simulation which will show an average skill mastery of the overall and specific skills assessed in a competency model or they can view the specific details of the skill mastery breakdown of individual learner sessions. Every skill starts a run at 0.5, or 50%.

{% hint style="info" %}
Note: You will not be able to see performance rating information if a competency model has not been attached to the simulation through HyperSkill Studio. See [Competency models in HyperSkill](/scoring-and-mastery/competency-models-in-hyperskill) to learn how to attach a competency model to a simulation.
{% endhint %}

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F8goa48NoSb7EjMl3tA9w%2FScreenshot%202026-06-24%20102355.png?alt=media&#x26;token=c5719ad1-5de1-4023-b17c-ad3b2985f29f" alt=""><figcaption><p>Example of the Average Total Mastery and the aggregate Average Skill Mastery</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FPeTEFB0atgbOtiy8QdUw%2FScreenshot%202026-06-24%20102630.png?alt=media&#x26;token=a0124253-e67e-4a0b-a083-9372e7b0859d" alt=""><figcaption><p>Example of the Overall Mastery and Skill Mastery of an individual learner session.</p></figcaption></figure>

To view more information about the Competency Model used in a simulation, click on the **View Competency Model** button in the **Skill Mastery** or **Average Skill Mastery** section. After clicking on this button, you will be able to view the competency model in a tree format and view more information about the average mastery of individual skills across all users of a simulation.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FKcVCT5nEZhfW7eKc1w0C%2FScreenshot%202026-06-24%20110627.png?alt=media&#x26;token=981b822b-f69c-42be-acc0-2f6dc495a879" alt=""><figcaption></figcaption></figure>


# HyperSkill Studio (authoring)

Building simulations in the HyperSkill authoring tool.

HyperSkill Studio is where 3D simulations are built, in a browser or on Windows. The same app plays them.

* [Virtual entities](/hyperskill-studio-authoring/virtual-entities): the objects, people and spaces you build with, and how to bring your own in.
* [Authoring a simulation](/hyperskill-studio-authoring/authoring-a-simulation): making your first one, then the scene, inspector and settings.
* [State machine reference](/hyperskill-studio-authoring/state-machine-reference): making the simulation react, with triggers, transitions, conditions and actions.
* [AI features](/hyperskill-studio-authoring/ai-features): conversations, AI chat, agents and PDF question answering.
* [Mixed reality](/hyperskill-studio-authoring/mixed-reality): building for passthrough, and spatial anchors.
* [Media](/hyperskill-studio-authoring/media): images, audio and documents.
* [Publish](/hyperskill-studio-authoring/publish): getting a finished simulation to people.
* [Multiplayer](/hyperskill-studio-authoring/multiplayer): running a simulation with several people in it at once.
* [Your sims and assets](/hyperskill-studio-authoring/your-sims-and-assets): managing them afterwards in HyperSkill Platform.


# Virtual entities

The virtual objects, people and spaces simulations are built from, and how to bring your own in.

## What is a virtual entity (VX)?

A virtual entity (VX) can be one of the following:

* virtual object (VO)
* virtual person (VP)&#x20;
* virtual space (VS)

These virtual entities contain model(s) and other metadata, and can be brought into the simulation. HyperSkill has a variety of public virtual entities as well as a workflow for bringing in your own models and turn them into virtual entities.&#x20;


# Import Virtual Object (VO) from HyperSkill Desktop

1. &#x20;Launch “HyperSkillDesktop.exe”

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FSnwDSrTyHwibiijcxJU4%2F15.png?alt=media&amp;token=f1a68cc4-07cb-427f-b998-870a72a044f2" alt=""><figcaption></figcaption></figure>

2. Log in with your credentials

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FKnqhIwxp5ADqRg1K8MpP%2F16_61.png?alt=media&amp;token=68010cee-aa61-48cb-b1f8-dfc6064d997b" alt=""><figcaption></figcaption></figure>

3. Select VIRTUAL OBJECTS

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FA1WAcG5COokCIww7zeDl%2F17_62_84.png?alt=media&amp;token=e5cd3671-c8b5-4f38-b5fd-d12135e54736" alt=""><figcaption></figcaption></figure>

4. &#x20;Click the ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FdShqrmBuQnAoLIfR4HFA%2Fimage144.png?alt=media\&token=633707b3-3a98-41d7-adcb-fb24deeda969)( + NEW ) button

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FG3lQBrC7eAoXZOa9hALq%2F18_42_57.png?alt=media&amp;token=a76dd4e8-2930-49bd-a020-53cbf17d174f" alt=""><figcaption></figcaption></figure>

5. &#x20;Click the ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FPpr860BAFNPGN7ke1aGK%2Fimage55.png?alt=media\&token=0414d130-8051-4f41-905e-43e3b7e3ac64)  ( Choose file ) button to open up your folders

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FJTDiYWkUWFILz9jV3F7v%2F19.png?alt=media&amp;token=c0dc0292-d3db-4a41-8939-0e9ea99433ac" alt=""><figcaption></figcaption></figure>

6. &#x20;Select your model with the .glb, .gltf, .fbx, .stl, or .obj extension

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FGhv3FCQ7CqGBxeFgQzko%2F20.png?alt=media&amp;token=d7d8474a-9ac1-457d-8548-adefc95087a4" alt=""><figcaption></figcaption></figure>

7. &#x20;Click the ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F60BZA1LJARMBoLyBOHgO%2Fimage31.png?alt=media\&token=1b43ee7a-95d3-49ce-b1ae-e0f322464303) ( Select ) button
8. &#x20;Type in a name for your VO

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fjw67K0YQErICR44T6JNy%2F21.png?alt=media&amp;token=9538739a-b481-430c-bab2-ae6aea64c8a6" alt=""><figcaption></figcaption></figure>

9. Click the  ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FFkQtQJUmTPJoWfe7ygEa%2Fimage27.png?alt=media\&token=171aeb3a-6583-494b-a819-1c3457496225) ( UPLOAD )  button

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F9BfD87kQZGqha1FyWgp0%2F19.png?alt=media&amp;token=83b0557b-f0e9-45bd-91c7-f3d985aa8422" alt=""><figcaption></figcaption></figure>

10. &#x20;Your new VO will be added to the VIRTUAL OBJECTS manager page.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2ForkbSj2DLHcQSMS2cuQR%2F18_42_57.png?alt=media&amp;token=53bd7c83-5c90-4edd-b73e-2aaa5815cb69" alt=""><figcaption></figcaption></figure>


# Edit Virtual Objects

### Add a Hitbox

1. &#x20;Launch “HyperSkillDesktop.exe” and log in with your credentials.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FrQBgQiYyNXFco1lnEWmz%2F16_61.png?alt=media&amp;token=2cde3d12-e1d7-4f7e-a3d4-b41a1f313be6" alt=""><figcaption></figcaption></figure>

2. &#x20; Select VIRTUAL OBJECTS

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FJlDLGffe7DRXtm8FY9i2%2F17_62_84.png?alt=media&amp;token=b0733e63-c98d-4299-b1b9-fbf55ae9fa24" alt=""><figcaption></figcaption></figure>

3. &#x20;Hover over the desired virtual object and press the edit button (pencil icon).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FlZQs4b5vEiKCOOYErb3N%2F23_63.png?alt=media&amp;token=335d2941-77fa-42ca-84ba-f21043f291cf" alt=""><figcaption></figcaption></figure>

4. &#x20;Hover over the desired virtual object and press the edit button (pencil icon). The virtual object will load and the basic panel will be open.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FDQv3Jz3khRHkIfcKeCxm%2F64.png?alt=media&amp;token=6efd388d-a337-452a-a449-eddbb83961ac" alt=""><figcaption></figcaption></figure>

5. &#x20;Navigate to the “Hitbox Zones” section of the basic panel and type in your desired hitbox name next to the “Add” header.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F4CkvnzT3FsRl24xydqeF%2F65.png?alt=media&amp;token=02ae465d-c596-4e50-ae31-83f1b2fa77dc" alt=""><figcaption></figcaption></figure>

6. &#x20;Press the “+” button to create a new hitbox. The “Hitbox” dropdown will update and include your newly created hitbox. A red circle will appear, visually indicating the size and position of your hitbox. Depending on the size of your virtual object, the red circle may be inside the 3D model. You can change the size and position of the hitbox using the UI.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FwazCzgK6NO1aBiTVRvJ8%2F66.png?alt=media&amp;token=c8ace589-0eda-4dc5-a103-8cea4ba6b711" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F32VxlUvlnSaHFmFBfWWj%2F67.png?alt=media&amp;token=4b7ff652-77fb-49e7-aac1-83cd7f8e6d30" alt=""><figcaption><p>In the above example, the hitbox has been scaled and positioned to approximate the red button.</p></figcaption></figure>

7. &#x20;Use the dropdown to select virtual object hitboxes to edit or delete them.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F8z7Jo29MfaMMEJ0cIiQs%2F68.png?alt=media&amp;token=ee45d7a0-626a-4988-aeb4-3410e95622c8" alt=""><figcaption></figcaption></figure>


# VX Publisher

## Overview

The VX publisher is a Unity plugin that allows you to upload virtual objects directly into HyperSkill. This allows for better customization of virtual spaces and objects. Download the **Unity VX Packager** from the dashboard under **Settings > Downloads > Developer Tools**. See [Get HyperSkill on your devices](/start-here/get-hyperskill-on-your-devices).


# Import Model as Virtual Object (VO)

1. &#x20;Open project “unity-vo-publishing”, for best results do so through Unity Hub and make certain you have the appropriate Unity Version installed.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fzm4kSDheCFvii6Ox8RcG%2F24_33.png?alt=media&amp;token=a1940e82-8304-4841-80ea-fe3cbd46c1d7" alt=""><figcaption></figcaption></figure>

2. &#x20;Bring whatever files you need into your project at this point underneath the appropriate folder. Please be certain that you have all of the textures and materials needed for your object.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FgXe0Uq6ek5NnxmCfa20w%2F25.png?alt=media&amp;token=028b4a99-a38b-4c9f-aeb0-73c2f64b2b24" alt=""><figcaption></figcaption></figure>

3. &#x20;Drag the model into the VOPackageScene. There is a Human Scale model in the scene as well to assist you in the steps of resizing your objects.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FaNBzJSV9utUsBYTFHOeP%2F26.png?alt=media&amp;token=aa925b5d-67a7-4463-96a0-3480a39718c4" alt=""><figcaption></figcaption></figure>

4. &#x20;Size your objects appropriately and apply any materials and textures to the model at this point.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F2kZgLfvNuzN5avRRw3Li%2F27.png?alt=media&amp;token=9f8f69b8-7ea5-4255-a007-98312b8fe9e3" alt=""><figcaption></figcaption></figure>

5. &#x20; Make certain that the parent object highest in the hierarchy is named the same as the folder you will be exported from, and has a normalized rotation and scale value of 0,0,0 as the HyperSkill application will initially spawn any objects with these parameters as their default values. Add any colliders on the object your object needs and then create a prefab of the object.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FzrZhc90eIhvkssOPG1OA%2F28.png?alt=media&amp;token=241592b2-f063-4130-ba0f-24c82f1d52db" alt=""><figcaption></figcaption></figure>

6. &#x20; Right-click on the folder in question that contains your object, the prefab that matches the name of the folder, and any materials or textures on the object. Be certain that your prefab is in the immediate directory of your folder. Then select the Build and Package option for your desired supported platform.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FFQatRi8Vz2eoHOwQdOL3%2F29.png?alt=media&amp;token=79a852c0-63f4-4fcc-ad74-1f1b59dde54d" alt=""><figcaption></figcaption></figure>

7. &#x20;Navigate to the VO Upload tab. Under “Connection Settings” type in your App Key that is related to the account you want to upload the VO to. Under “Asset bundle Upload” press ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FXAWcrVSJlFjptKHGgI2m%2F30_39.png?alt=media\&token=80fd556c-400e-4e97-8f31-e4267c9bab65) your uploaded VO and any others that have been uploaded from this account should appear in the drop-down menu. Select your object. Then, underneath the object selection dropdown select which type of object this is; object for VO, person for VP, and space for VS. A list of which platforms the object has been packaged for will then populate. With that complete, press ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FOD3Bxd7Hjmzw689ctQ1i%2F31_40.png?alt=media\&token=ddfcf995-4cf2-40da-91c1-5803fbca85c6)With that, your VO will be in your private repository and available the next time you launch the HyperSkill application on your supported platforms.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FnrCJSn0xD9Fud8LLx20N%2F32_41.png?alt=media&amp;token=2adc7c79-8b25-47f0-9d53-8cbda50171b7" alt=""><figcaption></figcaption></figure>


# Import Model as Virtual Person (VP)

TODO


# Import Model as Virtual Space (VS)

1. Open project “unity-vo-publishing”, for best results do so through Unity Hub and make certain you have the appropriate Unity Version installed.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F5FCCB41zZ1w3Mv72JAUt%2F24_33.png?alt=media&amp;token=ec8a34a9-557b-459a-87ec-137299250c5e" alt=""><figcaption></figcaption></figure>

2. &#x20;Bring whatever files you need into your project at this point underneath the appropriate folder. Please be certain that you have all of the textures and materials needed for your object.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FOwHumpMNao0X7WyPWrTQ%2F34.png?alt=media&amp;token=3642c700-e833-4ef8-8013-8473b21fef99" alt=""><figcaption></figcaption></figure>

3. &#x20;Drag the model into the VOSpacePackagingScene. There is a Human Scale model in the scene as well to assist you in the steps of resizing your objects. The scene will be darker than the VOPackageScene. This is intentional. Lights do need to be included with the space when you export it.&#x20;

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FzBGFPZcKzNNobExjqn9E%2F35.png?alt=media&amp;token=ac41bb5b-d1fe-4998-b4f9-b6f65cd34a74" alt=""><figcaption></figcaption></figure>

4. &#x20;Set your space up appropriately, including lights, floors, and walls. Make certain that other elements like cameras are not included in your final space prefab. We recommend that spaces are kept relatively sparse, resembling that of an empty room, and assets to populate the space are added in as VOs when the simulation is built.&#x20;

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F5kaLgvNjkTni8t5zW5Z7%2F36.png?alt=media&amp;token=7da39f70-3c5a-405c-9b89-93cdd8da2f95" alt=""><figcaption></figcaption></figure>

5. Make certain that the parent object highest in the hierarchy is named the same as the folder you will be exporting from, and has a normalized rotation and scale value of 0,0,0 as the HyperSkill application will initially spawn any objects with these parameters as their default values. The floor should be at the feet of the human-scaled model. Add any colliders in the space to suit your needs and then create a prefab of the object.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FHHMv7zv7Aru3BgUMVWZv%2F37.png?alt=media&amp;token=5d75624a-6f52-40e0-9072-fa6f6e5a6ecc" alt=""><figcaption></figcaption></figure>

6. &#x20;Right-click on the folder in question that contains your space, the prefab that matches the name of the folder, and any materials or textures on the space. Be certain that your prefab is in the immediate directory of your folder. Then select the Build and Package option for your desired supported platform.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FHann2sh0Oj8ZNWlrMlXV%2F38.png?alt=media&amp;token=2fcd5582-d0de-47b9-a4e8-089a52630fec" alt=""><figcaption></figcaption></figure>

7. &#x20;Navigate to the VO Upload tab. Under “Connection Settings” type in your App Key that is related to the account you want to upload the VO to. Under “Assetbundle Upload” press ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FXAWcrVSJlFjptKHGgI2m%2F30_39.png?alt=media\&token=80fd556c-400e-4e97-8f31-e4267c9bab65)your uploaded VO and any others that have been uploaded from this account should appear in a drop-down menu. Select your object. Then, underneath the object selection dropdown select which type of object this is; object for VO, person for VP, and space for VS. A list of which platforms the object has been packaged for will then populate. With that complete, press ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FOD3Bxd7Hjmzw689ctQ1i%2F31_40.png?alt=media\&token=ddfcf995-4cf2-40da-91c1-5803fbca85c6)With that your VS will be in your private repository and available the next time you launch the HyperSkill application on your supported platforms.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F41QvDvNUy8mxnUpabsPF%2F32_41.png?alt=media&amp;token=c2b8b593-a991-4491-bcc9-fe404ebd3d52" alt=""><figcaption></figcaption></figure>


# Special Considerations

**Limitations and Constraints**

Some platforms require additional care when packaging assets. Platforms such as the Meta Quest or WebGL require assets to be optimized for speed and size. Failing to keep these considerations in mind can lead to poor experiences caused by inconsistent framerate and slow loading times.

In addition to optimizing assets, the following platforms require additional care and attention:

* VisionOS
  * For all mesh assets, the asset must have Read/Write enabled in the model settings. The [model import settings](https://docs.unity3d.com/Manual/class-FBXImporter.html) can be found by clicking on the model asset file (FBX/OBJ/ETC) in the Unity Project Folder. Failure to mark the asset as Read/Write will cause HyperSkill to close automatically when trying to load the asset in experience mode.


# Export Model from SolidWorks

1. &#x20;Ensure that the model contains an Exploded View. The exploded view should step through the desired assembly steps.&#x20;

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FaXV4Cy9dxSAxwZhd8XUE%2F9.png?alt=media&amp;token=dda539f8-bdc7-4eb8-82ab-d14a1ce210e0" alt=""><figcaption></figcaption></figure>

2. &#x20;Click on the Gear  ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FG07w7ttufLgAi9sa6ls0%2Fimage100.png?alt=media\&token=096d8944-dc84-4f2e-9f0a-6c444f393923) icon in the top toolbar and select Add-Ins...

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FZLcgTvjKl42lImf3s4bX%2F1.1.png?alt=media&amp;token=42e66a24-b8a7-41bc-b10e-5df194de1011" alt=""><figcaption></figcaption></figure>

3. &#x20;Make sure SOLIDWORKS XR Exporter is checked

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FD7rQWexspN0xW9ZeA5GR%2F1.2.png?alt=media&amp;token=1bcb04f3-1f06-44a6-9fab-c9935cf5a710" alt=""><figcaption></figcaption></figure>

4. &#x20;Save the model and set “Save as type” to Extended Reality Binary (\*.glb)

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FUpHx2mIxAH4oeTwp2bXp%2F12.png?alt=media&amp;token=b45318fc-af24-4c62-ac7a-ff0501216576" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F9sYLUimms7k7zvApH7lP%2F13.png?alt=media&amp;token=565a8dfc-ea90-419c-bd70-ae2377539152" alt=""><figcaption></figcaption></figure>

5. &#x20;Click on Options and make sure Export Exploded View is selected.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FECpqyDUPDAGNwEKAB2Hv%2F14.png?alt=media&amp;token=2f248adb-b316-4c31-a595-a4a3ff263c83" alt=""><figcaption></figcaption></figure>


# Export your Virtual Object to a QR Code (Hololens)

1. &#x20;Launch “HyperSkillDesktop.exe”
2. &#x20;Select a VO from the manager page and click the share button

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fmy6pnpNLtnUOTy5HdweF%2F18_42_57.png?alt=media&amp;token=670045bc-d787-4068-9df4-6935ca09132f" alt=""><figcaption></figcaption></figure>

3. &#x20;From the share panel, click on the “QR Code” button.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FjKJbaubiGmR97x8ik59A%2F58.png?alt=media&amp;token=c8e18c2e-ec8e-4de4-baa6-e37b7c95a0f4" alt=""><figcaption></figcaption></figure>

4. A new QR Code will automatically generate. The previously generated QR code will be overwritten.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FZghL7rfR22sld1WGCbi3%2F59.png?alt=media&amp;token=253acf1e-f31b-4392-8b3a-f2827db5ede1" alt=""><figcaption></figcaption></figure>

5. &#x20;You can click on “Download” to select a folder to save the QR code. The file will be saved as “qr-code.png”.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fwr5FhyXnAmfLtD727ZNf%2F60.png?alt=media&amp;token=4897bd49-36fa-44cb-b9eb-3c9bfd29e338" alt=""><figcaption></figcaption></figure>


# Special Virtual Objects

Special Virtual Objects are public Virtual Objects that exist in the HyperSkill public repository. These Virtual Objects have built-in special interactions that must be set up.


# Train

The Train VO is a special vehicle object that players can enter. While inside, players are unable to move but can freely look around.

To control player entry and exit:

* Use the *InVehicle* attribute:
  * Set *InVehicle* to `True` to move the player into the vehicle.
  * Set *InVehicle* to `False` to eject the player from the vehicle.

Entry and exit can be customized by the author, who may add buttons around or within the train to allow players to control when they enter or leave the vehicle.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FHrwXH8HVR5hyfow0f5Xk%2Fimage.png?alt=media&amp;token=5a68122a-1927-4359-90f6-0643a3e20574" alt=""><figcaption><p>Moving the player into the Train</p></figcaption></figure>


# Digital Caliper

The digital caliper allows users in VR to measure objects in their virtual space. This feature is VR exclusive. To add a digital caliper to your experience, you can simply drag and drop the 'Digital Caliper' virtual object into the experience.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FTUDONI2NXTk9hRNtU1Fm%2Fimage.png?alt=media&amp;token=d39a0318-ac0a-43f8-934d-98e966905671" alt=""><figcaption></figcaption></figure>

While the user is holding the caliper in VR, they can use the joystick to move the caliper jaw up or down. The jaw will stop moving if it is touching something. The holder can switch between 'Millimeters' and 'Inches' by pressing the trigger button while holding the caliper.


# Blur

Blur Effect allows a user to place in a blur object that will blur anything seen on the other side.

\
"Blur Effect" can be placed into a simulation to achieve a censoring effect. The blur effect will only be shown in experience mode. An author can manipulate the size of the blur effect by changing the scale of the Blur Effect VO.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F9OO8MuJNczFUOgcR9dXk%2FliPUNYs_d.webp?alt=media&amp;token=ed7a1227-93d1-42ab-8611-9dc76ff726c4" alt=""><figcaption><p>Example of a blur effect on the left half of a blue cube. </p></figcaption></figure>


# Crossbow

Crossbow allows a user to shoot another Virtual Object out of it.

"Crossbow" is a Special Virtual Object that allows a user to shoot a Virtual Object from its "shootingObjectSnapHitbox" hitbox. Once a Virtual Object is snapped to that hitbox, press on the "Use" interaction while the Crossbow is grabbed to shot the Virtual Object.\
\
An author can adjust the velocity of the shot by creating these customizable attribute within the Crossbow Virtual Object. The name of the attribute must exactly match.\
\
Customizable Attributes:\
xVelocity: float number, default (0)\
yVelocity: float number, default (25)\
zVelocity: float number , default (400)\ <br>


# Picture Frame

Picture Frame allows a user to place a 2d image into their 3d environment.

"Picture Frame" allows the user to display any uploaded image on their account to the Virtual Object. Create a customizable attribute on the Picture Frame VO and set the Attribute Type to "Monitor Display". Change the Display Area dropdown to "Plane". The dropdown Target Image will contain a list of all the images uploaded with your account.\
\
Scale the Picture Frame VO to accommodate the image used.


# Drone

Drone allows a user to maneuver a drone in their simulation.

Drone can be used to fly a drone around. To do this, create a customizable attribute on the drone VO "Enabled" with the Attribute Type bool. Set this attribute to true and the drone will be able to be used to fly around. There are 5 different available drones. \
\
Controls:\
Desktop/Web: WASD, IJKL \
VR: Touchpad on both controllers\
\
Drones:\
DroneRacer\
DronePhantom\
DroneSplinter\
DroneParrot\
DroneBuzzer\
\
Customizable Attributes:\
Enabled: bool, true will allow the drone to be manipulated with the above controls\
Yaw: float, rotational speed\
Roll: float, sideways speed\
Throttle: float, up and downward speed\
Pitch: float, forward speed


# Painting

### Getting Started with HyperSkill's Painting Feature

#### Overview

Explore HyperSkill's immersive painting feature designed to provide a versatile and user-friendly experience across Virtual Reality (VR), Desktop, and Web platforms. This documentation aims to guide users through the various functionalities offered, enhancing their creative expression.

#### Functionality

Enable the spray painting feature, allowing users to apply paint onto virtual objects with ease. Key elements include:

* **Color variety:** Choose from a range of supported colors or specify a specific hex color code for any specific color of paint
* **Nozzle types:** Personalize your painting style by adjusting the spray paint nozzle.
* **Opacity:** Control the opacity of your paint
* **Sounds:** Control what sounds play when using mechanized painting tools, such as a spray painting machine
* **Models:** Use custom 3D models to use as your painting tools

**Authoring Capabilities**

As an author, You can control your painting experience by:

* **Tagging Objects as Paintable:** Define specific objects as paintable, allowing targeted experiences
* **Adjustable Paint Functionality:**
  * Paint Coverage: Track paint coverage on objects in real-time (0-100%) and use custom rules to control the execution of the experience
  * Paint controls: Control the color, opacity, and nozzle type of the painting tool(s)
  * Clear/Reset paint: Easily reset the objects to start anew

**Supported Platforms**

HyperSkill ensures flexibility and accessibility across platforms, offering:

* **Desktop:** Paint in a traditional yet immersive environment on desktop systems
* **WebGL:** Access a web browser for a seamless painting experience without installations
* **Oculus Quest:** Immerse yourself in Virtual Reality on Oculus Quest, bringing your creations to life in a 3D environment (VR only)


# Setup

**Introduction**

To enable the painting feature, you will need to mark your virtual objects as paintable. A virtual object can be made paintable by doing the following in authoring mode:

1. Add a custom attribute named "Paintable" of type "bool". Make the value "True" if you want the object to be paintable. The object will no longer be paintable if you make this value "False".
2. \[Optional] Add a custom attribute named "Coverage" of type "float" to track how much of the object is painted. The value starts at 0.00 and goes up to 100.00

With that, you've made your virtual object paintable!

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FMnglwLhc1imS3dy57oCE%2Fimage.png?alt=media&amp;token=d42f5f57-cea6-447d-9593-1f59d9bda8a2" alt=""><figcaption><p>Sample screenshot of a cube setup to be paintable</p></figcaption></figure>

**Requirements**

To make sure your virtual object is fully paintable without any issues, there are some conditions to be met. The individual(s) in charge of creating and uploading the assets should make sure the requirements are met:

* When the object is uploaded, read/write must be enabled on the mesh
* The mesh must be a singular mesh (Mesh or skinned mesh)
* The mesh should be stitched correctly
* The mesh should be properly UV wrapped

**Potential Issues and Considerations**

Not all virtual objects are made the same. You may find some objects do not paint correctly or at all. Such issues may be caused by any of the following:

* The object was uploaded with a model that did not have read/write enabled. Contact the uploader of the asset and let them know they should upload the asset with read/write enabled for the mesh.&#x20;
* If you find some parts of the object are paintable but others aren't, then the collider(s) you are using may be blocking the paint from reaching the object. Adjust the colliders on the object to make sure the painting tool can apply the paint.
* If the object is being painted but the paint is showing up in random spots, please double check the virtual object has satisfied the requirements


# Spray Painting

### Getting Started with HyperSkill's Spray Painting Feature

#### Overview

HyperSkill supports spray painting, enabling authors to create object painting experiences. Such experiences can include some of the following:&#x20;

1. **Architectural Visualization:** Virtual spray painting for real-time color visualization on 3D architectural models.
2. **Automotive Customization:** Virtual platform for customizing vehicles and simulating spray painting for repairs.
3. **Construction Site Planning:** VR tool for project managers to mark construction phases and safety zones during planning.
4. **Emergency Response Training:** Virtual scenarios for emergency responders to mark hazard zones and evacuation routes with spray painting.

**Getting Started**

To get started, you will need to procure a 3D model of the spray painting tool. This can be any 3D model you want, so long as it conforms to the following requirements:

* The collider of the object must not cover the spray painting nozzle
* There must be a child transform on the object named "SprayLocation"
  * \[**Optional]** You may add a particle system on the SprayLocation to directly control the visualization of the nozzle. The particles will be used to apply the paint
  * \[**Optional]** You may add an AudioSource to your model to control which sound effect is used when spray painting

Once you have uploaded the 3D model as a virtual object to your account, you may now add the spray painting tool to your experience.&#x20;

&#x20;**Setup**

In authoring mode, you need to add some custom attributes to your spray painting virtual object. Add the following attributes to enable painting using the spray painting feature:

* Add a custom attribute named "Painter" of type "bool". The value should be set to true. If the value is true, the spray painting feature will be enabled. If the value is false, the tool cannot be used. This setting is per object, so you may have some spray painting tools that are enabled and some that are not.
* Add a custom attribute named "Color" of type "string". The value can be a named color or a hex color code.
  * The named colors support the following:
    * black
      * blue
      * clear
      * &#x20;cyan
      * gray&#x20;
      * green&#x20;
      * grey&#x20;
      * magenta
      * red
      * white&#x20;
      * yellow
  * You can use any hex color code you want
  * The "white" color is interpreted as color removal and will remove any applied paint
* &#x20;**\[Optional]** Add a custom attribute named "Nozzle" of type "string". The nozzle controls how the spray painting tool applies the paint. You can specify any of the following nozzle types or use a custom nozzle if the spray painting object was uploaded with a custom particle effect. The default value is "Custom".
  * Horizontal
  * Vertical
  * Cone
* **\[Optional]** Add a custom attribute named "Opacity" of type "float". The attribute controls the opacity of the paint. The default value is 1.0. You may put any value between 0.0-1.0.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FEr5ISZOGeM2uDvZcv29c%2Fimage.png?alt=media&amp;token=f798f258-3031-4b11-99be-b89bae3da56e" alt=""><figcaption><p>Sample attribute setup for a spray painting tool</p></figcaption></figure>


# Pen

### Getting Started with HyperSkill's Pen Feature

#### Overview

In addition to spray painting, HyperSkill also supports painting and marking using pens. Pens enable finer control over painting, allowing users to add fine details or write.

**Getting Started**

To get started, you will need to procure a 3D model of the pen tool. This can be any 3D model you want, so long as it conforms to the following requirements:

* The collider of the object must not cover the tip of the writing tool
  * \[Recommended] Adjust the collider such that there is plenty of space for the tool tip. This will enable a smoother experience when writing/painting in VR
* There must be a child transform on the object named "Paint"
* The "Paint" transform must be scaled to be the size of the tip of the pen
  * \[Recommended] Add a 3D sphere as a child of the "Paint" transform and adjust the "Paint" scale. Keep adjusting until the sphere correctly covers the tip of the pen. The sphere visualizes the collider that is used to apply the paint. Don't forget to remove the sphere once you are done adjusting.
* Two additional transforms must be added to the pen object. These transforms must be named "PointA" and "PointB" respectively &#x20;
  * "PointA" should be positioned at the end **opposite** of the tip of the pen
  * "PointB" should be positioned at the tip of the pen

Once you have uploaded the 3D model as a virtual object to your account, you may now add the pen tool to your experience.&#x20;

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FIvhoAGGLQqZpcTbfUJGJ%2Fimage.png?alt=media&amp;token=3856582b-98e0-4b5f-b9fd-a09aeb5d1ea9" alt=""><figcaption><p>Sample setup of a Pen in Unity</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F7X9ikra5eUXI8eqwWZqd%2Fimage.png?alt=media&amp;token=8fbb41cf-83f5-4a98-89a6-0510b2336398" alt=""><figcaption><p>The position of Point B, at the tip of the pen</p></figcaption></figure>

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FwLRU9chKoJoA1wJD3a4g%2Fimage.png?alt=media&amp;token=12d82177-8998-46a8-be2e-c5b27ceea9bc" alt=""><figcaption><p>The configuration of the Paint transform, including the scale and a visualization of the painting collider</p></figcaption></figure>

&#x20;**Setup**

In authoring mode, you need to add some custom attributes to your pen virtual object. Add the following attributes to enable painting using the pen feature:

* Add a custom attribute named "Pen" of type "bool". The value should be set to true. If the value is true, the feature will be enabled. If the value is false, the tool cannot be used. This setting is per object, so you may have some pens that are enabled and some that are not.
* Add a custom attribute named "Color" of type "string". The value can be a named color or a hex color code.
  * The named colors support the following:
    * black
      * blue
      * clear
      * &#x20;cyan
      * gray&#x20;
      * green&#x20;
      * grey&#x20;
      * magenta
      * red
      * white&#x20;
      * yellow
  * You can use any hex color code you want
  * The "white" color is interpreted as color removal and will remove any applied paint

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fle5gzEB1Cv59XqEMsIG4%2Fimage.png?alt=media&amp;token=e0a24ab8-3bd9-4062-8310-761714ae17ca" alt=""><figcaption><p>Sample attribute setup for a pen tool</p></figcaption></figure>


# Timer Display

Timer Display allows a user to display a Timer in their simulation.

"Timer Display" is a Special Virtual Object that allows a user to be able to display a Timer on the virtual object. \
\
To learn about how to create a timer, please visit the Action section for Add Timer.\
To display a Timer on the Timer Display VO, create a customizable attribute "Display" on the Timer Display VO. The value of the customizable attribute must match the name of the Timer created with Add Timer exactly.<br>

Customizable Attributes:\
Display: string\ <br>


# Text Display

A special VO that display any text the user wants

"Text Display" is a Special Virtual Object that allows a user to be able to display a Text in the simulation.&#x20;

To add a custom text display, search for “TextDisplay” in the virtual object search panel. Add these customizable attributes and change to according to what you need

Customizable Attributes:

“Text”: (String) value of the display text&#x20;

“Color”: (Integer) pick a number correspond to the text color you want

* 0: white
* 1: black
* 2: red
* 3: green
* 4: blue
* 5: yellow
* 6: cyan
* 7: magenta

“BackgroundColor”: (Integer) pick a number correspond to the background color you want

* 0: white
* 1: black
* 2: red
* 3: green
* 4: blue
* 5: yellow
* 6: cyan
* 7: magenta

"FontSize": (Integer) if attribute doesn't exists or less than 0, it will defaults to auto size

"Justification": (Integer) select a justification type, default is 1, center

* 0: Left
* 1: Center
* 2: Right
* 3: Justified
* 4: Flush

"Visibility": (Bool)

"Transparency": (Integer) 0-255, set the alpha value of the text


# Graph

A special VO that displays a graph

"Graph" is a Special Virtual Object that displays a scatter plot. To add a custom text display, search for “TextDisplay” in the virtual object search panel. Add these customizable attributes.

Customizable Attributes:

“Data”: (String) points to draw. The format must be as follows:

* (x1, y1); (x2, y2); (x3, y3); ...

“xMin”: (Float) minimum range of x-axis

"xMax": (Float) maximum range of x-axis

“yMin”: (Float) minimum range of y-axis

"yMax": (Float) maximum range of y-axis

“xTick”: (Float)  number of units between each tick on the x-axis

"yTick": (Float)  number of units between each tick on the y-axis

"AnimationTime": (Float) total time of the graph animation showing dots left to right

“Color”: (Integer) pick a number correspond to the text color you want

* 0: white
* 1: black
* 2: red
* 3: green
* 4: blue
* 5: yellow
* 6: cyan
* 7: magenta
* default: orange


# Authoring a simulation

Build your first simulation in HyperSkill Studio: the scene, the tasks, and playing it back.

## Overview

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FyTbhDVAKPwZj4Sa4khrW%2Fimage.png?alt=media&#x26;token=53910a2a-bb2e-44f7-8ce3-663d50671b33" alt=""><figcaption></figcaption></figure>

## Building your first simulation

{% stepper %}
{% step %}

### Create the simulation

Select **Create New Sim** in the top right corner of the My Sims page, which opens by default when you launch the app. Name the simulation, choose a virtual space from the list, and press **Create**.
{% endstep %}

{% step %}

### Learn to move around

The camera controls are the same ones a learner uses. See [Controls](/start-here/controls).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FFoEDYvx5v7H0tzAArbQV%2F86.png?alt=media&#x26;token=0e8e047f-b873-497b-964b-d74e27d3690b" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Choose a task type

Click the dropdown to select the task you want.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FygFRa0tDi6cOWgcufAqe%2F87.png?alt=media&#x26;token=b884bc96-c12a-457c-8da8-9b31aba91203" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Add your steps

Click the Plus button ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FW7X9Tc7AXgkqkwb2Kzoz%2F88.png?alt=media\&token=4c89861d-cea2-4d31-ba6e-8391e767b7ea) to add the first step of your instructions, then fill out the fields of the task. Repeat for every step.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FtlR5JZZ4UNgcDv8HMEsj%2F89.jpg?alt=media&#x26;token=5adec4af-faad-4476-a989-c86543a52a8a" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Save and play

Click the save icon ![](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FmuG1Uoa9ki1d2LxUyXsY%2F90.png?alt=media\&token=2b884ce5-c64a-4c01-9582-1ec8894edb8f) to save your changes, then press **Play** to enter experience mode and try it as a learner would.
{% endstep %}
{% endstepper %}

Your simulation appears under [**Sims**](https://platform.siminsights.com/simulations) in HyperSkill Platform, where you can share it, duplicate it, and see analytics for every run. See [Your sims and assets](/hyperskill-studio-authoring/your-sims-and-assets).

## Going further

* Placing and adjusting objects: [Scene Layout](/hyperskill-studio-authoring/authoring-a-simulation/scene-layout) and [Inspector](/hyperskill-studio-authoring/authoring-a-simulation/inspector).
* Making the simulation react to what a learner does: [State machine reference](/hyperskill-studio-authoring/state-machine-reference).
* Scoring what they did: [Scoring and mastery](/scoring-and-mastery).


# Inspector

The common fields that pertain to a Virtual Object's attributes.

Name: The displayed name of the Virtual Object.


# General

The attributes shared amongst all Virtual Objects. Used for manipulating the Virtual Object.

Position: The starting position of the Virtual Object.\
Rotation: The starting rotation of the Virtual Object.\
Scale: The starting scale of the Virtual Object.\
Mass: The mass of the Virtual Object.\
Is Visible: Whether the Virtual Object is visible or not.\
Is Static: Whether the Virtual Object has physics applied to it.\
Is Grabbable: Whether the Virtual Object can be picked up by the user or not.\
Grab Type: Type of grab mechanic done when a user grabs an object (see [Grab Mechanics](/hyperskill-studio-authoring/authoring-a-simulation/inspector/grab-mechanics)).\
Grabbed Position Offset: The local position offset of the object when grabbed.\
Grabbed Rotation Offset: The local rotation offset of the object when grabbed.\
Is Snapped To: Designates if this Virtual Object is snapped to another Virtual Object's Hitbox.\
Snapped Position Offset: The local position offset of the object when snapped.\
Snapped Rotation Offset: The local rotation offset of the object when snapped.\
Move to Hitbox: Previews the snap position and rotation of the snapped object.

<div><figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FBSWKcPdMxxok2qlAIDsD%2FScreenshot%202026-06-08%20103849.png?alt=media&amp;token=69c1c638-09d6-4808-8d8e-74f902bfb162" alt=""><figcaption></figcaption></figure> <figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F1tMgjLrOpxgQ7hCjXBrG%2FScreenshot%202026-06-08%20104004.png?alt=media&amp;token=632fa059-8085-4a89-8148-4666938bfa89" alt=""><figcaption></figcaption></figure></div>

<br>


# Description

Section where a description can be populated to appear during an experience.

Description: The description that will be shown.\
Show Description: Determines if the description will be shown or not.\
Placement Type: Local or Global, determines if the panel will be positioned relative to the world or to the VO.\
Position: Positional offset of the panel.


# Grab Mechanics

What happens to the selected Virtual Object when grabbed.


# Basic

The default grab of a Virtual Object. When grabbing a VO, the object will go to the hand that had grabbed it. In Desktop, only one object  can be grabbed at a time.

Position Offset: Vector 3, designates the positional offset from the hand\
Rotation Offset: Vector 3, designates the rotational offset from the hand


# Slider

When grabbed, the VO will slide on one of its axis when moved.

In desktop, the controls to move a slider grab type is using K and L.\
Axis: X, Y, or Z. The axis on which the slider will move.\
Max Length: The positional length of how far a slider can be fully extended to.\
Initial Position (0-1): The normalized position that the slider will start in. .5 means the half-way point.


# Rotator

When grabbed, a VO will be able to be rotated in a specified axis.

Hinge Point: The hitbox that is used as the hinge upon which the VO will rotate.\
Axis: The axis on which the rotation occurs.\
Min Angle: The minimum angle of the rotator.\
Max Angle: The maximum angle of the rotator.\
Initial Angle (Between Min and Max Angle): The specified angle that the rotator will start off in. Ex: Min 0 Max 720 Initial Angle 360 will cause the rotator to be able to be rotated 360 degrees in both positive and negative directions. If the initial angle was 0, the rotator would only be able to start rotating in the positive direction.&#x20;


# Dragger

When grabbed, this VO will be dragged by the hand or controller that grabbed.

Position Offset: Positional Offset when grabbed. If value is empty, no offset would be used and axis will not be frozen.\
Rotation Offset: Rotation Offset when grabbed.


# Grabber

When grabbed, the VO will be grabbed similar to the basic grab, but will be able to grab again.

Grab Point: The hitbox used as the location where the grabbed object will go.\
Position Offset: The positional offset from the grab point.\
Rotation Offset: The rotational offset from the grab point.


# Climbable

When grabbed, will be able to be used to climb. VR only.


# Customizable

Custom Attribute are attributes that a user can create to hold and manipulate data to be used throughout HyperSkill. These reside on a Virtual Object.

Creating a custom attribute allows a user to use this attribute as a way to store data to be displayed, used, or manipulated throughout the simulation.&#x20;

Attribute Name: Name of the attribute, some names are specific and be used for built-in interactions for Special Virtual Objects.

Attribute Type: Integer, Float, String, True/False, SMEntity, Monitor Display\
Integer: Integer Number (...-3,-2,-1,0 1,2,3...)\
Float: Decimal Number\
String: Text\
True/False: On or Off\
SMEntity:\
Monitor Display:  Allows for a Target Image to be used at the located Display Area.&#x20;


# Player

Player Attributes are attributes that are associated with each player. In Multiplayer, each player will have their own set of player attributes. Ex: Used to keep individual player scores.

VR Controller: The controller used in a VR simulation.

WordsPerMinute: Average words per minute through out the session of that simulation.


# Scene Layout

The tab used for simulation population of Virtual Objects.

The scene layout displays all objects, spaces, and agents that can be found within any simulation.&#x20;


# Asset Movement Tools

The tools used for manipulation of a selected Virtual Object.

Select: Select a Virtual Object.\
MoveXZ: Moves the Virtual Object in the X and Z plane.\
MoveY: Moves the Virtual Object in the Y plane.\
Rotate: Rotates the Virtual Object.\
Scale: Scales the Virtual Object.\
Delete: Deletes the Virtual Object.\
\
Authors can use the Inspector to have more premise control of the selected Virtual Object.


# Skybox

Skyboxes are the environment that makes up a simulation. Skyboxes can be modified to include weather or affect the lighting of a simulation.


# Set Spawn Position

Changes the starting position of an experience user upon entering a simulation.


# Show Axis

A selected Virtual Object will show its three planar axis. This can be used in conjunction with the inspector to have more precise control of a Virtual Object's placement in a simulation.

X: Red\
Y: Green\
Z: Blue


# Assets

HyperSkill's library of Virtual Objects.

In every simulation Hyperskill includes an assets library that can be found on the right side of the scene layout. Authors can click on one of these assets to place a Virtual Object into their simulation. The assets library section includes two dropdown menus; one to select the type of asset (Virtual Object or Virtual Person) and one to filter the visibility status of the objects included in the search (public objects, private objects, and shared objects).

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2F3gwxewyp2gjGindaCiA1%2FScreenshot%202026-06-05%20142639.png?alt=media&amp;token=49d98673-4c62-4390-8a4a-77ade4c246cd" alt=""><figcaption></figcaption></figure>


# Object Browser

A browser that contains all of the current Virtual Objects that exist in a simulation.

The object browser can be found in the top left corner of the scene layout page in any simulation. After selecting an item in the object browser, it will be highlighted in the scene layout. A user can select an item by either clicking on it in the object browser or by clicking 'Select Object' in the scene layout after right-clicking the desired object. Virtual Objects can be deleted from the object browser. The browser is sorted in alphabetical order.


# Object Groups

Virtual Object (VO) Groups can be used across other systems to create more powerful interactions.

Virtual Object groups share the following characteristics:

* Multiple VO groups can be created, and a Virtual Object can belong to more than one group.
* If a Hitbox is added to the VO Group, all members of the VO Group must have a Hitbox with the same name.
* Adding an attribute to the VO Group will create that attribute on all members of the VO Group during experience time with the same initial value. A customizable attribute with the same Attribute Type and name as a VO Group will override the VO Group's attribute value if the VO is a part of the VO Group.<br>


# Paths

The "Paths" feature can be used to create predetermined paths for objects to traverse. Special objects, such as the train, can allow the player to enter and then begin traversing the path

#### Creating Paths

In Edit Mode, go to the *Paths* tab.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FOhsMFy7Q31SrEfvHGetP%2Fimage.png?alt=media&amp;token=191b654e-92e3-46fa-a4ba-3c0181dc76b9" alt=""><figcaption></figcaption></figure>

Type the name for your new path and click the "+" icon to start editing.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FIt0at3tm7HWUHKD8hMPD%2Fimage.png?alt=media&amp;token=46ae0b79-c833-4da3-b307-f72236b0c570" alt=""><figcaption></figcaption></figure>

To create the path, click or drag along surfaces in the scene. Blue markers will appear at each checkpoint.

* To finalize, press ENTER or click the confirm button. To cancel, press ESC or click cancel.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FGqMhv7X21ZMEzMNiVTU8%2Fimage.png?alt=media&amp;token=b10aacc0-535e-41cd-ba00-020e377070f4" alt=""><figcaption></figcaption></figure>

Adjusting Paths

Once created, select your path from the dropdown menu to adjust its settings. A green line will indicate your path.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FlnfRomGBd5oeRbv6z8PV%2Fimage.png?alt=media&amp;token=dd191f94-7247-4a84-b433-7294dedc9921" alt=""><figcaption></figcaption></figure>

#### Moving Objects Along Paths

1. Under *Object to Move*, select the object from the dropdown and click "To Start" to place it at the start of the path.
2. Use *Preview* to see the object in motion.
3. Adjust the traversal time (in seconds) for the object to complete the path.
4. Use *Offset* to reposition the object if it clips through surfaces.

#### Moving Object at Experience Time

To control an object's movement along a path during experience time, use the Paths state action.

1. In the rules or scenario flow, add a *Paths* state action.
2. Use the *Run* action to start moving the object along the selected path or *Stop* to halt its movement.
3. Choose the specific path to manipulate from the dropdown menu.

This allows objects to dynamically start or stop moving on their paths based on in-experience conditions.

<figure><img src="https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fd59Bvc0LxNdqJiebZm5H%2Fimage.png?alt=media&amp;token=9189c17f-dad6-4ea2-a806-bb9611be1d40" alt=""><figcaption></figcaption></figure>


# Simulation Settings


# Experience Settings


# Microphone

Enable Microphone Input: Allows a user to use a microphone or type text for interactions. This must be enabled to use Trigger Voice Intent, even if only using the text box for input.\
\
Microphone Always Listening: The microphone will always be on, but a user can toggle it on or off. If set to off, the simulation will handle the microphone mute state.


# Player

Restrict Player Movement: Restrict whether the player can move, jump, or crouch. In VR this disables teleporting, but does not disable player movement.


# Documents


# Virtual Assistant

Virtual Assistant Avatar: Designates a Virtual Person in the simulation to be the one who will provide responses from other systems such as Conversational AI.

Virtual Assistant Voice: The voice used for the text-to-speech output of the response.


# Conversational AI

NLU Engine:  The engine used for the Conversational AI system. Recommended to try the different options out to see what fits best for the simulation.

\
TTS Engine: The engine used for the text-to-speech system.

\
Virtual Person Language: The primary language for the text-to-speech output. For example, if the output response is expected to be Spanish, select the Spanish option to get a better pronunciation.




---

[Next Page](/llms-full.txt/1)

