Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Stationeers ic10New to Visual Studio Code? Get it now.
Stationeers ic10

Stationeers ic10

Traineratwot

|
6,272 installs
| (6) | Free
Syntax highlighting, linting, debugging and snippets for Stationeers IC10
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

IC10 Language Support for VS Code

Version Installs License

Full IDE support for the IC10 programming language used in Stationeers. Write, lint, debug, and visually design your IC10 programs directly in VS Code.


Quick Start

  1. Create a file — create a file with .ic10 or .ic extension in your project
  2. Write code — the extension automatically highlights syntax and shows errors
alias Sensor d0
alias Light d1

main:
    l r0 Sensor Temperature
    s Light Setting r0
    yield
    j main
  1. Generate environment — use the IC10: Generate Environment command from the context menu or command palette (Ctrl+Shift+P). This creates a .ic.json file with device configuration
  2. Debug — press F5 and select IC10: Launch

Features

Syntax Highlighting

Instructions, registers, devices, constants, aliases, labels — all highlighted with distinct colors.

Semantic Highlighting

Language-server-driven token colors for instructions, registers, devices, aliases, labels, properties, and constants.

Linting

Errors and warnings appear in real time. Checks argument counts, types, undefined symbols. Powered by @stationeers-ic/ic10 sandbox validation with i18n support.

Autocompletion

Context-aware argument hints. After s — devices, after s d0 — properties (Setting, On...). Completions for instructions, registers (r0-r17, sp, ra), devices (d0-d5, db), and all game constants.

Hover Documentation

Hover over any element to see detailed information:

Element Shows
Instructions (add, l, s...) Description, arguments, example
Aliases (Sensor) Definition (e.g. alias Sensor d0), type (device/register)
Properties (Temperature) Type, description, value range
Constants (HASH("...")) Numeric value (decimal + hex)
Registers (r0..r17) Associated alias if defined, otherwise "Register N"
Defines (MAX_TEMP) Defined value (e.g. define MAX_TEMP 100)
Labels (main) Line number where the label is defined

Debugger

Full Debug Adapter Protocol (DAP) implementation with breakpoints, step-through execution, and variable inspection using real context.

Feature Description
Breakpoints Click on line number. Conditional: right-click → "Edit Condition"
Scopes Registers (r0-r17), Devices (d0-d5, db), Aliases
Debug Console Type r0, d0, Sensor to inspect values
Step/Continue F10 (step over), F11 (step into), F5 (continue)

Navigation & Refactoring

Feature Shortcut Description
Go to Definition Ctrl+Click Jump to alias or label definition
Find All References Shift+F12 Show all usages of alias/label
Rename Symbol F2 Rename alias/label across the entire file
Document Symbols Outline panel Shows all aliases, defines, and labels
Formatting Shift+Alt+F Normalizes indentation, removes trailing whitespace
Code Actions Ctrl+. Light bulb suggests fixes: "Did you mean?", "Create alias"

Visual Environment Editor

Visual node-based editor for .ic.json environment files. Drag-and-drop devices, connect ports, configure networks.

  • Node Canvas — drag devices on the canvas. MiniMap for navigation, zoom controls, snap-to-grid positioning
  • Port Connections — drag from one port to another to create network connections. Incompatible ports are greyed out during drag
  • Device Catalog — browse all Stationeers devices with images, search by name, filter by tags (Logic, Power, Pipe, etc.)
  • Property Editor — select a device to edit its Ports (network mapping), Properties (logic values), and Slots (equipment)
  • Auto-Save — changes are saved automatically to the .ic.json file with a short delay

Side Panel Tabs:

Tab Description
Chips Manage chips linked to .ic10 code files
Devices Add devices from the catalog, view and edit device properties
Networks View and manage networks (Data, Power, Pipe, Chute, Landing)

Network Types:

Type Color Purpose
data Green Data transfer
power Red Power supply
pipe Yellow Pipes (gas)
chute White Conveyor belts
landing Pink Landing pads

Switch between visual editor and raw JSON: right-click tab → Open Visual Editor or Open as JSON.

Status Bar

When an IC10 file is active, the status bar shows $(code) IC10 with real-time error and warning counts.

IC10 Warnings Output Channel

Errors without a precise code location (e.g. environment or runtime errors) are shown in a dedicated IC10 Warnings output channel instead of highlighting code. Open it via View → Output and select IC10 Warnings from the dropdown.


Environment Configuration (.ic.json)

The .ic.json file describes the physical connection of the chip to devices:

{
  "version": 1,
  "chips": [{ "id": 1, "file": "main.ic10" }],
  "devices": [
    {
      "id": 1,
      "PrefabName": "StructureCircuitHousingCompact",
      "chip": 1,
      "ports": [{ "port": "default", "network": "base" }]
    }
  ],
  "networks": [{ "id": "base", "type": "data" }]
}

Generate: right-click on .ic10 file → Generate IC10 Environment.


Debugging

  1. Create a .ic.json environment (see above)
  2. Open the .ic10 file
  3. Press F5 → IC10: Launch
  4. Use F10 (step over) and F11 (step into) for step-by-step execution

Launch Configuration

Add to .vscode/launch.json:

{
  "type": "ic10",
  "request": "launch",
  "program": "${file}",
  "environment": "${fileDirname}/${fileBasenameNoExtension}.ic.json",
  "name": "Debug IC10"
}

Settings

Open Ctrl+, and search for "IC10":

Setting Default Description
ic10.linting.enabled true Enable linting
ic10.linting.severity warning Diagnostic severity level
ic10.formatting.indentStyle tab Indent style (tab/space)
ic10.formatting.indentSize 4 Indent size
ic10.completion.contextAware true Context-aware hints
ic10.debug.stopOnEntry true Stop on first line
ic10.editor.autoOpen false Auto-open visual editor for .ic.json files

Commands

Open the command palette with Ctrl+Shift+P:

Command Description
IC10: Generate Environment Create .ic.json from .ic10 file
IC10: Validate File Validate the current IC10 file
IC10: Validate All Files Validate every IC10 file in the workspace
IC10: Toggle Linting Quickly enable or disable linting
IC10: Show Guide Open the built-in guide
IC10: Open Visual Editor Open .ic.json in the visual editor
IC10: Save Environment Save from the visual editor
IC10: Open With Built-In Editor Switch to raw JSON editor

Snippets

Type the prefix and press Tab:

Prefix Description
loop Main loop with yield
ifeq Conditional branch if equal
ifne Conditional branch if not equal
device Load device property
set Set device property
math Math operation (add, sub, mul, div)
compare Compare and store result
hash Hash a string value
const Define a constant
alias Create register alias
sleep Sleep for N seconds
batch Batch load by device hash

Development

# Install dependencies
bun install

# Compile TypeScript
npm run compile

# Watch mode (recompile on save)
npm run watch

# Run tests
bun test

# Lint
bun run lint

# Format check
bun run format:check

# Fix lint + format issues
bun run fix

# Regenerate TextMate grammar
npm run generate:grammar

# Regenerate JSON schema
npm run generate:schema

# Package extension (.vsix)
npm run package

# Launch extension host for testing
npm run open

Requirements

  • VS Code ^1.125.0 or newer
  • Bun (for development and testing)
  • Node.js 18+ (for compilation)

Related

  • @stationeers-ic/ic10 — IC10 emulator and game data library powering this extension

License

GNU General Public License v3.0 — commercial use allowed, modifications must be published under the same license.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft