What is e# (esharp)?

e# is a Rust-inspired programming language built on top of API Board. It lets you combine your installed Steam games, Roblox, Minecraft, and Epic Games titles into a single playable experience — two scenes + the + operator = one composed game.

The 30-second pitch

Modern games are not built from scratch — they are compositions of pre-existing systems (physics, rendering, audio, networking, AI). e# treats composition as the language's primary feature. Every game! block is a list of Scene values drawn from any source, including API Board responses and your locally-installed games.

A first program

Every e# program has a main() function that returns a Game. The game! macro builds the Game struct from a list of scenes.

use api_board::{Movie, Weather};

game! MovieNight {
    title: "Movie night in Berlin",
    scenes: [
        Scene::from(Movie::search("inception")),
        Scene::from(Weather::current("Berlin")),
    ],
}

fn main() -> Game {
    let mut game = MovieNight::new();
    game.play()
}

Combining Steam games together

The Steam::library() adapter wraps your installed Steam library as a stream of renderable scenes. Pick a game with .pick(title) and compose multiple games into one playable experience — overlays, side-by-side, or stitched maps.

use api_board::Steam;

game! SteamMashup {
    title: "Open-world crossover",
    scenes: [
        Scene::from(Steam::library().pick("Portal 2")),
        Scene::from(Steam::library().pick("Stardew Valley")),
        Scene::from(Steam::library().pick("Hollow Knight"))
            .overlay(position: TopRight, alpha: 0.6),
    ],
    on_exit: |state| {
        state.save();
    }
}

fn main() -> Game {
    let mut game = SteamMashup::new();
    game.play()
}

How to run an e# program

Once you have installed the e# toolchain (run install-esharp.bat as administrator), open a command prompt and:

# Build the .esharp file into a .game bundle
esharp build hello.esharp

# Run the bundle
esharp run hello.game

# Or build + run in one step
esharp run hello.esharp

The runtime packs scenes into a single .game bundle that runs on Windows, macOS, Linux, and the browser via WebAssembly. Ship the same binary everywhere.

Detecting your installed games

Run game-launcher-detector.bat on Windows. It detects Steam games, Roblox, Minecraft, and Epic Games titles, prints a list to the terminal, and writes a games.json file you can pass to Steam::library().

Language features

  • Ownership & borrowing — inherits Rust's model. Data races are impossible at compile time.
  • Zero-cost abstractions — game! expands to plain structs. No virtual calls on the hot path.
  • Scene composition — + operator stacks scenes; overlays, side-by-side, and stitched maps supported.
  • Cross-platform — single .game bundle runs on Windows, macOS, Linux, and the browser.
  • Visual Studio support — IntelliSense, syntax highlighting, the e# Game project template, built-in playground.
  • API Board bindings — Movie, Weather, Tracking, Steam, Roblox, Minecraft, Epic all return renderable scenes.

Download

install-esharp.bat hello.esharp