ashtonmeuser / godot-wasm

Interact with WebAssembly modules from Godot
https://github.com/ashtonmeuser/godot-wasm/wiki
MIT License
197 stars 12 forks source link

Wasm extends Ref<Script> Proposal #45

Closed fire closed 2 months ago

fire commented 1 year ago

V-Sekai aims to provide a high-performance platform for virtual worlds and avatar-based social games. The current implementation relies on GDScript or C++ native modules, which may not offer the desired performance, user agency, complex calculations, graphics rendering, and algorithm execution.

The proposed solution uses WebAssembly (Wasm) to enhance performance and functionality in V-Sekai through User-Generated Content (UGC) Wasm modules. These modules are attached to an existing base node as a script, enabling them to provide property data and behavior for nodes in the virtual world or game.

https://v-sekai.github.io/manuals/decisions/20230611-wasm-in-v-sekai.html

fire commented 1 year ago

Logs from @lyuma

With this design, wasm modules would expose methods which would implement godot methods, and we would come up with some design for exposing properties (perhaps _get, _set and _get_property_list methods) in short, instead of an object that a user would have to manually instantiate and reference from GDScript, a Wasm module would be a first-class Godot script

the main challenge we're going to have to solve is interfacing with Godot's Variant type, possibly as a buffer representing a serialized variant (array of bytes), or converting ints, floats and so on into their respective types

we did have a CustomCallable implementation in our previous wasgo implementation for binding signals which is basically a wrapper around a function from a wasm module

fire commented 1 year ago

@ashtonmeuser What the last piece external memory support?

fire commented 2 months ago

Closing due to work done elsewhere. Thanks!