FORGE WORLD TERMINAL v1.0 [ONLINE]

// For your model

Plain Markdown of this page: https://forgeworld.app/contract.md. Index for LLM tools: https://forgeworld.app/llms.txt.

Forge World YAML contract

This is the complete format Forge World accepts. It is written so a person or a language model can produce a bundle that validates on the first try. Give this page to your model (paste it, or point it at https://forgeworld.app/contract.md) and ask it to write a bundle for your idea. Then paste or upload the result at https://forgeworld.app/validate or https://forgeworld.app/render.

Forge World is deterministic. The validator below is the same code that renders the mod: if a bundle validates, it renders, and the same YAML always produces the same mod. Errors block a render; warnings do not. Targets Stellaris 4.5.

Bundle

A bundle is one release.yaml plus one or more event files:

release.yaml
events/
  first_event.yaml
  second_event.yaml

release.yaml

All five fields are required and must be non-empty.

Field Meaning
code Mod identifier. Lowercase letters, digits and underscores only, e.g. drifting_museum.
name Mod name shown in the launcher.
month Release month, e.g. '2026-10' (quote it).
status Free text, e.g. draft.
notes Free text, one line is fine.

Event files

Each event file is one event: a mapping with these fields.

Field Required Meaning
slug yes Unique id within the bundle, lowercase with underscores. Other events refer to it.
kind yes standalone, anomaly or site (see below).
name yes Event name.
interaction_events yes List of interactions (the popups). At least one.
default_trigger_type no gatekeeper_pool (fires on its own over time; the default) or triggered_only (fires only from another event's trigger_event).
notes no Free text for yourself.
site_difficulty no Sites only: 1 to 10, default 3. Each chapter is one step harder.

Kinds

Interactions

Each item in interaction_events:

Field Required Meaning
role yes A name for this interaction. trigger_event links use it (slug/role). Anomalies use anomaly_success and anomaly_fail; sites conventionally use site_chapter.
title yes Popup title.
description yes Popup body. Plain text; use >- for long text.
options yes Non-empty list of buttons. A popup with no options can't be closed, so it's an error.
chapter_index sites Chapter number, starting at 1.
picture_hint no An event picture such as GFX_evt_derelict_interior, GFX_evt_archaeological_dig, GFX_evt_alien_ruins, GFX_evt_star_chart, GFX_evt_ancient_databank. Unknown names fall back to a default picture.

Options

Field Required Meaning
opt_key yes Short id, e.g. A, B.
text yes Button label.
effects no List of effects (below). An option with no effects just closes the popup.

Effects

Every effect has a category and that category's required fields. Any other category is an error. Amounts are what the player gets: negative numbers are costs.

resource_gain

Add or remove a flat amount.

resource_gain_scaled

Add or remove a share of the empire's current stockpile, so the cost or reward matters at any stage of the game.

research_progress

Research boost in one field, sized to the empire's research income.

add_tech_progress

give_technology / add_research_option

modifier_add

A timed empire modifier.

planet_modifier_add

A timed modifier on the empire's capital planet.

add_artifacts

add_deposit

trigger_event

Fire another interaction from this bundle, now or later. This is how follow-ups work.

The target event should be triggered_only. Follow-up events are conventionally named <parent_slug>_followup (or _followup_b and so on), and an event whose slug ends that way must be triggered_only. A triggered_only event must be kind: standalone.

event_key: PLACEHOLDER also works: it links to the parent's next <parent_slug>_followup* event, in order.

ethic_shift

trait_leader_add

spawn_anomaly

opinion_change

Every empire you have met changes its opinion of you. The change fades over about ten years.

create_project

A research project at your capital. When it completes, it fires an interaction from the bundle.

spawn_fleet

New ships of one class join the empire at its capital, built from one of its own designs.

Warnings

These don't block a render, but you should read them:

Complete example

A two-event bundle: a standalone event whose first option schedules a follow-up. It validates and renders as is.

File release.yaml:

code: drifting_museum
name: The Drifting Museum
month: '2026-10'
status: draft
notes: Example bundle from the Forge World contract

File events/accession_notice.yaml:

slug: accession_notice
kind: standalone
name: Accession Notice
interaction_events:
  - role: main
    title: Accession Notice
    description: >-
      A courier drone delivers a museum receipt for our capital's central plaza,
      "donated" twelve years from now. The signature is the current governor's.
    picture_hint: GFX_evt_ancient_databank
    options:
      - opt_key: A
        text: Investigate the receipt.
        effects:
          - category: resource_gain_scaled
            resource: energy
            percent_of_stockpile: -0.05
            min_amount: -300
            max_amount: -25
          - category: trigger_event
            event_key: accession_notice_followup/main
            days_delay: 90
      - opt_key: B
        text: File it with the other impossible paperwork.
        effects:
          - category: modifier_add
            modifier_name: filed_and_forgotten
            modifier_description: An unexplained receipt sits in the archive, unread.
            modifier_stat: country_unity_produces_mult
            modifier_value: 0.05
            duration_days: 360

File events/accession_notice_followup.yaml:

slug: accession_notice_followup
kind: standalone
name: Provenance
default_trigger_type: triggered_only
interaction_events:
  - role: main
    title: Provenance
    description: >-
      The courier's flight log leads to a museum station adrift at the edge of our
      space. Its curators have already prepared a plaque with our name on it.
    options:
      - opt_key: A
        text: Accept the plaque.
        effects:
          - category: add_artifacts
            amount: 2
          - category: research_progress
            tech_area: society
            progress: 0.10