Skip to content

matthewjberger/nightshade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,170 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

nightshade

github crates.io docs.rs book

Nightshade is a data-oriented game engine written in rust πŸ¦€

demo Screenshot 2025-12-28 121420

Documentation

πŸ“– Read the Book - Comprehensive guide covering all engine systems.

Gallery

View the gallery here πŸ”Ž

image

Getting Started

The fastest way to get started is with the nightshade-template.

Features

Nightshade uses a modular feature system for fine-grained dependency control.

Feature Hierarchy

nightshade features:
β”œβ”€β”€ core ─────────────── Minimal: windowing, math, ECS, time
β”œβ”€β”€ text ─────────────── 3D text rendering (cosmic-text + swash)
β”œβ”€β”€ behaviors ────────── Built-in entity behaviors (stateless, WASM-compatible)
β”œβ”€β”€ assets ───────────── Asset loading (gltf, image, bincode, lz4)
β”œβ”€β”€ runtime ──────────── core + text + behaviors
β”œβ”€β”€ engine (default) ─── runtime + assets + scene_graph + terrain + picking + file_dialog + more
β”œβ”€β”€ full ─────────────── engine + audio + physics + gamepad + navmesh
β”‚
β”‚ Add-on features:
β”œβ”€β”€ wgpu ─────────────── GPU rendering (dx12, metal, vulkan, webgpu)
β”œβ”€β”€ audio ────────────── Audio playback (kira)
β”œβ”€β”€ physics ──────────── 3D physics (rapier3d)
β”œβ”€β”€ gamepad ──────────── Controller input (gilrs)
β”œβ”€β”€ navmesh ──────────── Navigation mesh (rerecast)
β”œβ”€β”€ grass ────────────── GPU grass rendering
β”œβ”€β”€ terrain ──────────── Procedural terrain generation
└── steam ────────────── Steam integration

Quickstart

# native
just run

# wasm (webgpu)
just run-wasm

# serve site
cd site && just serve

All chromium-based browsers like Brave, Vivaldi, Chrome, etc support WebGPU. Firefox also supports WebGPU now starting with version 141. Run just with no arguments to list all commands

Prerequisites

  • just
  • trunk (for web builds)
  • git-cliff (for changelog generation)
  • gh (GitHub CLI, for creating releases)

Platform Guides

Native (Windows/macOS/Linux)

Build and run natively using cargo:

just run [project]  # defaults to nightshade-editor
just build          # release build

WebAssembly (WASM)

Build for web browsers with WebGPU support:

just run-wasm [project]   # defaults to editor
just build-wasm [project]

Steam Deck

See STEAM_DECK.md for deployment instructions.

Steam Integration

See STEAM.md for Steam integration (achievements, stats, friends).

Profiling & Logging

See PROFILING.md for detailed profiling and logging documentation.

Contributing

Nightshade is currently in its early stages of development. The project is not accepting external contributions at this time as the architecture and core systems are still being established. Once the engine reaches a more mature and stable state, I will open up contributions and provide contributor guidelines.

License

Nightshade is free, open source and permissively licensed! All code in this repository is dual-licensed under either:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in nightshade by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A data-oriented game engine written in Rust with a custom ECS πŸ¦€ Works on Windows/Linux/MacOS/Web/OpenXR/Android

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Contributors