No description
  • Rust 95%
  • Lua 3.3%
  • HTML 1.1%
  • TypeScript 0.3%
  • Makefile 0.2%
Find a file
2026-06-24 18:48:32 +01:00
.cargo chore: improve xtask integration with vscode (#435) 2025-07-06 20:55:14 +00:00
.github chore: fix path filters on GHA 2026-04-02 21:28:02 +01:00
.vscode fix: Fix missing functions in codegen (#210) 2025-01-19 00:37:07 +00:00
assets chore: add test for empty insert + addition of script (#535) 2026-04-18 10:42:31 +00:00
badges chore: Update coverage badge (#375) 2025-08-18 21:18:14 +01:00
benches feat!: extract bevy_mod_scripting_world decoupling world abstractions (#529) 2026-04-03 18:29:50 +00:00
codegen feat!: Rename Val, Ref, Mut (#525) 2026-02-28 13:21:08 +00:00
crates chore: description 2026-06-24 18:48:32 +01:00
docs feat: Add ArgMeta and FromScript derive macros, enable queueing callback immediately after attaching script (#538) 2026-04-25 16:03:13 +00:00
examples feat: Add ArgMeta and FromScript derive macros, enable queueing callback immediately after attaching script (#538) 2026-04-25 16:03:13 +00:00
release-notes feat!: Create 0.13.0.md and bump versions 2025-07-05 13:06:18 +01:00
scenario_file_language_server chore: add test for empty insert + addition of script (#535) 2026-04-18 10:42:31 +00:00
src feat: Add ArgMeta and FromScript derive macros, enable queueing callback immediately after attaching script (#538) 2026-04-25 16:03:13 +00:00
tests feat!: Rename Val, Ref, Mut (#525) 2026-02-28 13:21:08 +00:00
xtask feat!: extract bevy_mod_scripting_world decoupling world abstractions (#529) 2026-04-03 18:29:50 +00:00
.dockerignore chore: fix xtask removing CARGO_HOME (#465) 2025-08-23 21:55:03 +01:00
.gitattributes feat: improve codegen crate calculation, separate bindings into crates (#467) 2025-08-25 20:23:45 +01:00
.gitignore feat!: ironing out script pipeline edge cases and observer overhaul (#523) 2026-02-22 21:13:18 +00:00
.luarc.json feat: Lua definition file generation, ladfile re-work (#497) 2025-11-06 09:29:45 +00:00
.rustfmt.toml feat: complete plugin re-write 2025-01-05 22:05:23 +00:00
Cargo.toml chore: release v0.20.0 (#508) 2026-06-24 14:48:07 +01:00
CHANGELOG.md chore: release v0.20.0 (#508) 2026-06-24 14:48:07 +01:00
check.ps1 chore: improve xtask integration with vscode (#435) 2025-07-06 20:55:14 +00:00
check.sh feat: improve codegen crate calculation, separate bindings into crates (#467) 2025-08-25 20:23:45 +01:00
clippy.toml feat: Don't panic! (#216) 2025-01-19 21:18:55 +00:00
CODE_OF_CONDUCT.md feat: complete plugin re-write 2025-01-05 22:05:23 +00:00
codegen_bevy_features.txt chore: fix release with missing bevy features 2026-01-28 19:49:58 +00:00
CONTRIBUTING.MD feat: Improvements to BMS in multi-language context (#194) 2025-01-13 15:52:31 +00:00
Cross.toml Include non-simd platform in CI (#78) 2023-10-10 20:21:31 +01:00
Dockerfile chore: add ci builder action (#464) 2025-08-23 20:57:19 +01:00
LICENSE-APACHE re-license project 2022-12-31 12:21:20 +00:00
LICENSE-MIT re-license project 2022-12-31 12:21:20 +00:00
logo_bevy_scripting.svg added svg logo 2022-05-12 05:42:19 +01:00
makefile feat!: Bevy 0.17 (#498) 2026-01-06 20:16:27 +00:00
readme.md chore: Update readme.md 2026-01-28 19:54:26 +00:00
release-plz.toml chore: bump versions, unify all releases in the monorepo 2025-11-07 19:10:56 +00:00
rust-toolchain.toml fix: Use bevy_platform::time::Instant in the script pipeline (#543) 2026-05-27 22:34:53 +00:00
wsl.nu feat: re-implement rhai again (#222) 2025-01-24 15:56:17 +00:00
wsl.sh Migrate to bevy 0.14 (#127) 2024-09-07 21:23:04 +01:00

1 2

Bevy Scripting

Although Bevy doesn't directly support scripting, efforts are underway to incorporate it. This crate represents an initial attempt to enable scripting within Bevy's existing framework. It's important to note that this is a work in progress and not yet optimized or complete. As Bevy evolves, significant changes to this API are anticipated.

Why Use Scripts?

  • Update your game mechanics without the need for re-compiling
  • Encapsulating game logic in scripts paves way for modders to create custom content easilly
  • Scripting game logic/UI in a simpler language broadens development accessibility to non-programmers on your team

Features

  • Script management via commands
  • Hot loading
  • Support for multiple scripting languages
  • Extremely flexible bindings
    • Attach bindings to ANY reflect implementing types including foreign types.
    • Globals and bindings are set in one place and translated to all supported languages
    • Broad set of core Bevy bindings generated for you
  • Dynamic systems & components registerable from scripts
    • Scripts can run in parallel to existing rust systems or other scripts
  • Customizable event driven communication between bevy and scripts (on_update, on_init etc..)
  • Documentation generation

Benchmarks

BMS applies continuous benchmarking and the latest benchmark results can be found over at bencher.dev.

The tested scripts themselves are placed in the assets/benchmarks directory.

Support

The languages currently supported are as follows:

Language
Lua
Lua51
Lua52
Lua53
Lua54
Luajit
Luajit52
Luau
Rhai
Rune temporarilly on hold3

Documentation

For examples, installation and usage instructions see our shiny new book

Bevy Compatibility

BMS generates code based on each bevy release, which is why we pin the patch version of bevy too.

bevy_mod_scripting bevy
0.19.0+ 0.18.0
0.18.0+ 0.17.0
0.14.0+ 0.16.0
0.11.1+ 0.15.3
0.9.5+ 0.15.2
0.9.1+ 0.15.1
0.9 0.15.0
0.8 0.15.0
0.7 0.14
0.6 0.13.1

Supported Platforms

platform is supported?
Windows yes
Linux yes
MacOS yes
WASM no, see this issue

  1. the coverage does not include generated bindings. ↩︎

  2. The crate strictly enforces no unwrap, expect, panic or todo's via clippy lints. ↩︎

  3. Due to the recent re-write of the crate, documentation generation as well as rune support are temporarilly on hold. They will likely be re-implemented in the future. ↩︎