# Core concepts

Source: https://docs.arcweave.com/introduction/core-concepts
Section: Introduction
Description: A beginner's map of Arcweave's building blocks—boards, elements, connections, branches, jumpers, components, attributes, variables, and Arcscript—and how they fit together

Arcweave uses a small set of building blocks to describe an interactive story. This page explains each one in plain terms and shows how they fit together, so the rest of the documentation makes sense. Each term links to its full reference page.

## The big picture

Context: Arcweave docs > Introduction > Core concepts > The big picture

Your work in Arcweave is organized like this:

- A **[workspace](https://docs.arcweave.com/workspaces/overview)** is your team's space. It holds your projects and the people who work on them.
  - A **[project](https://docs.arcweave.com/workspaces/projects)** is one story or game. Inside a project you'll find:
    - **[Boards](https://docs.arcweave.com/project-items/boards)**: the canvases where you draw your story as a flowchart: boxes for the story's moments, joined by arrows that show what can happen next. A board holds:
      - **[Elements](https://docs.arcweave.com/project-items/elements)**: the story's moments, such as a scene, a location, or a line of dialogue.
      - **[Connections](https://docs.arcweave.com/project-items/connections)**: the arrows between items. Their **[labels](https://docs.arcweave.com/project-items/labels)** become the choices the player clicks.
      - **[Branches](https://docs.arcweave.com/project-items/branches)**: decision points that pick a path based on conditions.
      - **[Jumpers](https://docs.arcweave.com/project-items/jumpers)**: shortcuts that continue the story at an element somewhere else.
      - **[Notes](https://docs.arcweave.com/project-items/notes)**: annotations for you and your team. They aren't part of the story.
    - **[Components](https://docs.arcweave.com/project-items/components)**: your story objects, such as characters, locations, and items. Each one stores its details in **[attributes](https://docs.arcweave.com/project-items/attributes)**.
    - **[Variables](https://docs.arcweave.com/project-items/variables/overview)**: the story's memory, such as whether the player has found a key.
    - **[Assets](https://docs.arcweave.com/project-items/assets/overview)**: images, audio, and video files.

Boards hold the **story flow**: what happens and in which order. Components, variables, and assets belong to the whole project, so you can use them on any board.

## Story flow

Context: Arcweave docs > Introduction > Core concepts > Story flow

You build the flow on a board by placing items and linking them with connections.

- **Elements** carry the story. An element has a title and content: the text the player reads. You can also attach images, audio, video, or components to it.
- **Connections** link one item to the next and set the order of events. An element's outgoing connections lead to the player's options, and a connection's label is the option's text.
- **Branches** let the story react. A branch checks conditions written as `if`, `elseif`, and `else`, and sends the flow down the first path whose condition is true.
- **Jumpers** keep large stories tidy. Instead of drawing a long arrow across a board—or to another board—you connect to a jumper, and the story continues at its target element.

Split a large story into several boards, for example one per chapter, scene, or conversation, and use jumpers to move between them.

## Story objects

Context: Arcweave docs > Introduction > Core concepts > Story objects

**Components** describe the things your story is about. A component for a character might hold their name, a portrait, and attributes such as their age or backstory.

**Attributes** are labeled values, such as text, numbers, true/false values, or lists of other components or assets. Components, elements, and boards can all have attributes. Game engines can read them when you [export](https://docs.arcweave.com/integrations/overview) your project.

## Story logic

Context: Arcweave docs > Introduction > Core concepts > Story logic

**Variables** let the story remember what happened. For example, a `has_key` variable can start as `false` and become `true` when the player finds the key. Variables can belong to the whole project ([global](https://docs.arcweave.com/project-items/variables/global)), to a [board](https://docs.arcweave.com/project-items/variables/board), or to a [component](https://docs.arcweave.com/project-items/variables/component).

**[Arcscript](https://docs.arcweave.com/project-items/arcscript)** is Arcweave's simple scripting language. You use it to change and read variables:

- In an element's content or a connection's label, a line of Arcscript can change a variable when the player reaches it:

  ```arcscript
  ${ has_key = true }
  ```

- In a branch, an Arcscript condition reads variables to choose a path, for example `has_key`, which is true once the player has the key.

## How a story plays

Context: Arcweave docs > Introduction > Core concepts > How a story plays

[Play Mode](https://docs.arcweave.com/project-tools/play-mode/overview) lets you play your project as a choice-based game. It follows your flowchart like this:

1. The story begins at the **starting element** you choose.
1. Play Mode shows the current element's content, cover, and attached components.
1. Play Mode follows the element's outgoing connections to work out the player's **options**:
   - A connection's label becomes the option's text.
   - When a path goes through a **branch**, only the path of the first true condition counts, so branches decide which options the player sees.
   - A path that ends at a **jumper** continues at the jumper's target element, even on another board.
1. When the player picks an option, the element at the end of that path becomes the current one.
1. Along the way, Arcscript in elements and labels updates variables, so later branches can react to the player's choices.

For example, the player reaches a locked door. Earlier, an element where they searched the room set `has_key = true`. Now a branch after the door checks `has_key`: if it's true, the player sees the option "Unlock the door"; otherwise, they see "Walk away."

## Where to go next

Context: Arcweave docs > Introduction > Core concepts > Where to go next

- See these concepts in a real project in the quick tour's [Flowchart analysis](https://docs.arcweave.com/introduction/quick-tour/flowchart), which uses the sample project _The Castle._
- Build your first project step by step in the [Basic Arcweave tutorial](https://docs.arcweave.com/tutorials/basic/overview).
- Look up any Arcweave term in the [Glossary](https://docs.arcweave.com/introduction/glossary).
- For a detailed table of every item, where it lives, and what it connects to, see [Project items](https://docs.arcweave.com/project-items/overview#how-project-items-relate).
