Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amethyst Scripting Support #10

Closed
zicklag opened this issue Jun 15, 2019 · 4 comments
Closed

Amethyst Scripting Support #10

zicklag opened this issue Jun 15, 2019 · 4 comments
Labels
enhancement New feature or request

Comments

@zicklag
Copy link
Member

zicklag commented Jun 15, 2019

Get basic scripting support in Amethyst.

@zicklag zicklag added the enhancement New feature or request label Jun 15, 2019
@zicklag zicklag added this to the 0.3 milestone Jun 15, 2019
@zicklag zicklag changed the title Amethyst Scripting Support ( Rust ) Amethyst Scripting Support Jul 10, 2019
@zicklag
Copy link
Member Author

zicklag commented Jul 10, 2019

We are currently investigating possibilities for scripting in Amethyst. Right it looks like integrating WASM would be ideal for its performance and sandboxing. That is very experimental.

If WASM was integrated we could use WASM Python to support Python scripting and maybe support Dyon as well.

We want to support Python because of its overwhelming presence inside of the Blender community, and I am interested in Dyon because of its lack of a garbage collector and how integrated it is with Rust. If we do some benchmarks and Dyon is faster than Python, then we might use Dyon as the compilation target for our Logic Nodes.

The goal for Logic Nodes will be to have them compile to the fastest language that isn't complicated to write. This will keep it so that less advanced programmers can still create their own Logic nodes without much trouble, but still provide the best performance out of our available scripting languages.

@zicklag
Copy link
Member Author

zicklag commented Jul 14, 2019

I'm going to try wrapping the Arsenal runtime with a C API for scripting instead of using WASM. WASM will be great for modding because of its sandboxing, but we don't want to use it for the core game because it will have a performance hit.

If I get a working C API, then we will look into how we want to integrate a C scripting API into the Amethyst codebase. Once we have a C API we should be able to script Arsenal with Rust. After that we can attempt Python bindings with Rust through the C API.

References:

@zicklag zicklag added this to To Do in Arsenal Workboard via automation Jul 14, 2019
@zicklag zicklag moved this from To Do to In Progress in Arsenal Workboard Jul 14, 2019
@zicklag zicklag moved this from In Progress to To Do in Arsenal Workboard Aug 8, 2019
@zicklag
Copy link
Member Author

zicklag commented Aug 8, 2019

For scripting support we are switching gears a bit because of the potential for Legion to be a candidate to replace Specs as Amethyst's ECS. There has already been some work done on a scripting API to Legion in this fork.

We decided that it makes more sense to work on proving out whether or not Legion will work for Amethyst than to invest work in a scripting API for Specs. The discussion is here. We are currently working on benchmarks to validate that Legion will provide the performance benefits that we feel that it might.

@zicklag
Copy link
Member Author

zicklag commented Oct 20, 2020

Closing as we prune issues, but the start to this effort has been made for bevy here: bevyengine/bevy#623.

@zicklag zicklag closed this as completed Oct 20, 2020
Arsenal Workboard automation moved this from To Do to Done Oct 20, 2020
@zicklag zicklag removed this from the 0.2 milestone Oct 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

1 participant