Compare commits
1 commit
win-instal
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa70abac23 |
4 changed files with 19 additions and 58 deletions
27
README.md
27
README.md
|
|
@ -3,21 +3,19 @@
|
||||||

|

|
||||||
|
|
||||||
bevy_scriptum is a a plugin for [Bevy](https://bevyengine.org/) that allows you to write some of your game or application logic in a scripting language.
|
bevy_scriptum is a a plugin for [Bevy](https://bevyengine.org/) that allows you to write some of your game or application logic in a scripting language.
|
||||||
|
|
||||||
### Supported scripting languages/runtimes
|
### Supported scripting languages/runtimes
|
||||||
|
|
||||||
| language/runtime | cargo feature | documentation chapter |
|
| language/runtime | cargo feature | documentation chapter |
|
||||||
| ---------------- | ------------- | --------------------------------------------------------------- |
|
| ------------------------------------------ | ------------- | --------------------------------------------------------------- |
|
||||||
| 🌙 LuaJIT | `lua` | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html) |
|
| 🌙 LuaJIT | `lua` | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html) |
|
||||||
| 🌾 Rhai | `rhai` | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
|
| 🌾 Rhai | `rhai` | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
|
||||||
| 💎 Ruby | `ruby` | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
|
| 💎 Ruby(currently only supported on Linux) | `ruby` | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
|
||||||
|
|
||||||
Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
|
Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
|
||||||
|
|
||||||
Full API docs are available at [docs.rs](https://docs.rs/bevy_scriptum/latest/bevy_scriptum/) 🧑💻
|
Full API docs are available at [docs.rs](https://docs.rs/bevy_scriptum/latest/bevy_scriptum/) 🧑💻
|
||||||
|
|
||||||
bevy_scriptum's main advantages include:
|
bevy_scriptum's main advantages include:
|
||||||
|
|
||||||
- low-boilerplate
|
- low-boilerplate
|
||||||
- easy to use
|
- easy to use
|
||||||
- asynchronicity with a promise-based API
|
- asynchronicity with a promise-based API
|
||||||
|
|
@ -27,7 +25,6 @@ bevy_scriptum's main advantages include:
|
||||||
Scripts are separate files that can be hot-reloaded at runtime. This allows you to quickly iterate on your game or application logic without having to recompile it.
|
Scripts are separate files that can be hot-reloaded at runtime. This allows you to quickly iterate on your game or application logic without having to recompile it.
|
||||||
|
|
||||||
All you need to do is register callbacks on your Bevy app like this:
|
All you need to do is register callbacks on your Bevy app like this:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use bevy_scriptum::prelude::*;
|
use bevy_scriptum::prelude::*;
|
||||||
|
|
@ -42,9 +39,7 @@ App::new()
|
||||||
})
|
})
|
||||||
.run();
|
.run();
|
||||||
```
|
```
|
||||||
|
|
||||||
And you can call them in your scripts like this:
|
And you can call them in your scripts like this:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
hello_bevy()
|
hello_bevy()
|
||||||
```
|
```
|
||||||
|
|
@ -75,7 +70,6 @@ App::new()
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also pass arguments to your callback functions, just like you would in a regular Bevy system - using `In` structs with tuples:
|
You can also pass arguments to your callback functions, just like you would in a regular Bevy system - using `In` structs with tuples:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use bevy_scriptum::prelude::*;
|
use bevy_scriptum::prelude::*;
|
||||||
|
|
@ -93,9 +87,7 @@ App::new()
|
||||||
})
|
})
|
||||||
.run();
|
.run();
|
||||||
```
|
```
|
||||||
|
|
||||||
which you can then call in your script like this:
|
which you can then call in your script like this:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
fun_with_string_param("Hello world!")
|
fun_with_string_param("Hello world!")
|
||||||
```
|
```
|
||||||
|
|
@ -164,18 +156,17 @@ You should then see `my_print: 'Hello world!'` printed in your console.
|
||||||
|
|
||||||
### Provided examples
|
### Provided examples
|
||||||
|
|
||||||
You can also try running provided examples by cloning this repository and running `cargo run --example <example_name>_<language_name>`. For example:
|
You can also try running provided examples by cloning this repository and running `cargo run --example <example_name>_<language_name>`. For example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo run --example hello_world_lua
|
cargo run --example hello_world_lua
|
||||||
```
|
```
|
||||||
|
|
||||||
The examples live in `examples` directory and their corresponding scripts live in `assets/examples` directory within the repository.
|
The examples live in `examples` directory and their corresponding scripts live in `assets/examples` directory within the repository.
|
||||||
|
|
||||||
### Bevy compatibility
|
### Bevy compatibility
|
||||||
|
|
||||||
| bevy version | bevy_scriptum version |
|
| bevy version | bevy_scriptum version |
|
||||||
| ------------ | --------------------- |
|
|--------------|-----------------------|
|
||||||
| 0.16 | 0.8-0.9 |
|
| 0.16 | 0.8-0.9 |
|
||||||
| 0.15 | 0.7 |
|
| 0.15 | 0.7 |
|
||||||
| 0.14 | 0.6 |
|
| 0.14 | 0.6 |
|
||||||
|
|
@ -193,7 +184,6 @@ get_player_name():and_then(function(name)
|
||||||
print(name)
|
print(name)
|
||||||
end)
|
end)
|
||||||
```
|
```
|
||||||
|
|
||||||
which will print out `John` when used with following exposed function:
|
which will print out `John` when used with following exposed function:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
|
|
@ -206,7 +196,7 @@ App::new()
|
||||||
.add_scripting::<LuaRuntime>(|runtime| {
|
.add_scripting::<LuaRuntime>(|runtime| {
|
||||||
runtime.add_function(String::from("get_player_name"), || String::from("John"));
|
runtime.add_function(String::from("get_player_name"), || String::from("John"));
|
||||||
});
|
});
|
||||||
```
|
````
|
||||||
|
|
||||||
## Access entity from script
|
## Access entity from script
|
||||||
|
|
||||||
|
|
@ -214,7 +204,6 @@ A variable called `entity` is automatically available to all scripts - it repres
|
||||||
It exposes `index` property that returns bevy entity index.
|
It exposes `index` property that returns bevy entity index.
|
||||||
It is useful for accessing entity's components from scripts.
|
It is useful for accessing entity's components from scripts.
|
||||||
It can be used in the following way:
|
It can be used in the following way:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
print("Current entity index: " .. entity.index)
|
print("Current entity index: " .. entity.index)
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,12 @@
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
Ruby is currently only supported on Linux.
|
||||||
|
|
||||||
## Ruby
|
## Ruby
|
||||||
|
|
||||||
To build `bevy_scriptum` with Ruby support a Ruby installation is needed to be
|
To build `bevy_scriptum` with Ruby support a Ruby installation is needed to be
|
||||||
present on your development machine.
|
present on your development machine.
|
||||||
|
|
||||||
### Linux
|
|
||||||
|
|
||||||
#### Requirements
|
|
||||||
|
|
||||||
- clang
|
|
||||||
- Ruby installation compiled with clang
|
|
||||||
|
|
||||||
#### Clang installation
|
|
||||||
|
|
||||||
For `clang` installation instruction consult your
|
|
||||||
OS vendor provided documentation or [clang official webiste](https://clang.llvm.org).
|
|
||||||
|
|
||||||
#### Ruby installation
|
|
||||||
|
|
||||||
The easiest way to produce a compatible Ruby installation is to use [rbenv](https://rbenv.org/).
|
The easiest way to produce a compatible Ruby installation is to use [rbenv](https://rbenv.org/).
|
||||||
|
|
||||||
After installing `rbenv` along with its `ruby-build` plugin you can build and
|
After installing `rbenv` along with its `ruby-build` plugin you can build and
|
||||||
|
|
@ -29,6 +17,8 @@ CC=clang rbenv install 3.4.4
|
||||||
```
|
```
|
||||||
|
|
||||||
Above assumes that you also have `clang` installed on your system.
|
Above assumes that you also have `clang` installed on your system.
|
||||||
|
For `clang` installation instruction consult your
|
||||||
|
OS vendor provided documentation or [clang official webiste](https://clang.llvm.org).
|
||||||
|
|
||||||
If you rather not use `rbenv` you are free to supply your own installation of
|
If you rather not use `rbenv` you are free to supply your own installation of
|
||||||
Ruby provided the following is true about it:
|
Ruby provided the following is true about it:
|
||||||
|
|
@ -38,26 +28,7 @@ Ruby provided the following is true about it:
|
||||||
- it is accessible as `ruby` within `PATH` or `RUBY` environment variable is set
|
- it is accessible as `ruby` within `PATH` or `RUBY` environment variable is set
|
||||||
to path of desired `ruby` binary.
|
to path of desired `ruby` binary.
|
||||||
|
|
||||||
### Windows
|
## Main Library
|
||||||
|
|
||||||
#### Requirements
|
|
||||||
|
|
||||||
- clang
|
|
||||||
- Ruby
|
|
||||||
|
|
||||||
#### Clang installation
|
|
||||||
|
|
||||||
Clang can be installed on Windows using `Visual Studio Installer`(select `Desktop
|
|
||||||
Development With C++ ->> C++ Clang tool for Windows` package).
|
|
||||||
|
|
||||||
`LIBCLANG_PATH` environment variable also has to be set to clang installation `bin`
|
|
||||||
directory when compiling. This typically is `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\lib`.
|
|
||||||
|
|
||||||
#### Ruby installation
|
|
||||||
|
|
||||||
On Windows Ruby can be installed using [RubyInstaller](https://rubyinstaller.org/) among others.
|
|
||||||
|
|
||||||
## bevy_scriptum
|
|
||||||
|
|
||||||
Add the following to your `Cargo.toml`:
|
Add the following to your `Cargo.toml`:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
# Ruby
|
# Ruby
|
||||||
|
|
||||||
This chapter demonstrates how to work with bevy_scriptum when using Ruby language runtime.
|
This chapter demonstrates how to work with bevy_scriptum when using Ruby language runtime.
|
||||||
|
Ruby is currently only supported on Linux.
|
||||||
|
|
|
||||||
10
src/lib.rs
10
src/lib.rs
|
|
@ -4,11 +4,11 @@
|
||||||
|
|
||||||
//! ## Supported scripting languages/runtimes
|
//! ## Supported scripting languages/runtimes
|
||||||
//!
|
//!
|
||||||
//! | language/runtime | cargo feature | documentation chapter |
|
//! | language/runtime | cargo feature | documentation chapter |
|
||||||
//! | ----------------- | ------------- | --------------------------------------------------------------- |
|
//! | ------------------------------------------ | ------------- | --------------------------------------------------------------- |
|
||||||
//! | 🌙 LuaJIT | `lua` | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html) |
|
//! | 🌙 LuaJIT | `lua` | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html) |
|
||||||
//! | 🌾 Rhai | `rhai` | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
|
//! | 🌾 Rhai | `rhai` | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
|
||||||
//! | 💎 Ruby | `ruby` | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
|
//! | 💎 Ruby(currently only supported on Linux) | `ruby` | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
|
||||||
//!
|
//!
|
||||||
//! Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
|
//! Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
|
||||||
//!
|
//!
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue