Welcome

Welcome to the Nexvane documentation. Whether you are building your first project or migrating an existing one, these docs cover everything from installation to deployment.

These docs cover Nexvane 2.0. For Nexvane 1.x documentation, visit v1.docs.nexvane.dev.

What is Nexvane?

Nexvane is an open-source, cross-platform game engine written in C++. It renders through its own pipeline, so your project behaves the same on every platform. Script your gameplay in native C++ or Neptune, Nexvane's own DSL, and deploy to:

  • Windows (10, 11)
  • macOS (Apple Silicon and Intel)
  • Linux (X11 and Wayland)
  • iOS and Android

For exact version and architecture details, see System Requirements.

Use the Hub to install and switch between multiple Nexvane versions side by side.

Choose your path

New to Nexvane?

Start with Installation, then follow the Quick Start guide to get a project running end to end.

Coming from Unity?

Entities map closely to GameObjects, and Components map to Nexvane's own Components — see Entities to get oriented.

Nexvane uses a right-handed, Z-up coordinate system by default — double check transform math when porting from a Y-up engine.

Looking for API details?

The API Reference documents every native and Neptune symbol Nexvane exposes.

Key capabilities

Calling native C++ APIs directly from a Neptune coroutine without awaiting the interop boundary will crash at runtime, not just fail to compile — always await interop calls.
Capability Description
Cross-platform rendering Nexvane's own rendering engine produces consistent output on every platform. No native control wrappers, no platform-specific quirks.
Native and Neptune scripting Write gameplay in native C++ for full control, or Neptune for faster iteration.
Entity Component System Nexvane's ECS keeps gameplay logic and data separate for predictable performance at scale.

Try it: tabs

A quick look at the <doc-tabs> component used throughout these docs: switch scripting language below, then try either platform block further down — those two are separate elements that stay in sync because they share the same group.

Choose your scripting language

// C++
Entity player = world.CreateEntity();
player.AddComponent<Transform>();
const MAX_PLAYERS = 8

fn spawn_player(world: World, name: String) {
    let player = world.create_entity()
    player.add_component(Transform)
    self.count = self.count + 1
    return player
}

Platform notes stay in sync

These two blocks are independent <doc-tabs> elements with group="platform" — switching one switches the other.

Download the .exe installer from the Downloads page.

Download the .dmg from the Downloads page and drag Nexvane into Applications.

Download the .AppImage, or build from source — see Downloads.

Config lives in %APPDATA%\Nexvane\.

Config lives in ~/Library/Application Support/Nexvane/.

Config lives in ~/.config/nexvane/.

Real type-checking, right in the docs

This block has a twoslash class alongside language-ts — the snippet runs through the actual TypeScript compiler, so player.id below is colored from its real inferred type, and hovering it shows that type exactly like it would in an editor.

interface Entity {
  id: number
}
interface World {
  createEntity(): Entity
}
declare const world: World

const player = world.createEntity()
player.id
//     ^?

Need help?

Search the sidebar, or reach out through the community links in the footer.

See also