Installation

Cargo

First you need to install the crate by adding this entry to your Cargo.toml dependencies list:

bevy_mod_scripting = { version = "0.9.0", features = ["lua54"]}

Choose the language features you wish enabled and add them to the features block.

Bevy Plugin

The next step is to add the BMS plugin to your application.

app.add_plugins(BMSPlugin);

You can modify each of the plugins contained within the plugin group using set(MySubPlugin).

Language Features

Each language supported by BMS can be switched-on via feature flag as below:

LanguageFeature Flag
Lua51lua51
Lua52lua54
Lua53lua53
Lua54lua54
Luajitluajit
Luajit52luajit52
Luauluau
Rhairhai
Runerune

Extra Features

In order to fit as many use cases as possible, BMS allows you to disable a lot of its functionality.

By default all of the useful features are enabled, but you may disable them if you wish if you are only needing BMS for script lifecycle management, and want to populate the bindings yourself.

FeatureDescription
core_functionsIf enabled, will enable all core functions, i.e. bevy integrations which let you interact with Bevy via reflection
bevy_core_bindingsEnables bindings for the bevy_core module
bevy_ecs_bindingsEnables bindings for the bevy_ecs module
bevy_hierarchy_bindingsEnables bindings for the bevy_hierarchy module
bevy_input_bindingsEnables bindings for the bevy_input module
bevy_math_bindingsEnables bindings for the bevy_math module
bevy_reflect_bindingsEnables bindings for the bevy_reflect module
bevy_time_bindingsEnables bindings for the bevy_time module
bevy_transform_bindingsEnables bindings for the bevy_transform module
mlua_asyncEnables mlua/async
mlua_serializeEnables mlua/serialize
mlua_macrosEnables mlua/macros
unsafe_lua_modulesAllows loading unsafe modules via require in lua