All Projects → alec-deason → wasm_plugin

alec-deason / wasm_plugin

Licence: MIT license
A low-ish level tool for easily writing and hosting WASM based plugins.

Programming Languages

rust
11053 projects
typescript
32286 projects

Projects that are alternatives of or similar to wasm plugin

ModTemplateValheim
Valheim template for quickly writing mods using BepInEx
Stars: ✭ 13 (-79.03%)
Mutual labels:  modding
psobbaddonplugin
Phantasy Star Online Blue Burst Addon Plugin
Stars: ✭ 17 (-72.58%)
Mutual labels:  modding
GIMS-Evo
Game Indefinite Modding Suite Evolved
Stars: ✭ 37 (-40.32%)
Mutual labels:  modding
borderlands3-save-editor
got tired trying to beat the katagawa ball^W^Wempowered scholar, and no accessible in-game console, so here we are
Stars: ✭ 36 (-41.94%)
Mutual labels:  modding
The-Witcher-3-Mod-manager
Mod manager for The Witcher 3 🗃
Stars: ✭ 71 (+14.52%)
Mutual labels:  modding
dog-scepter
A work-in-progress modding tool geared toward UNDERTALE/DELTARUNE
Stars: ✭ 32 (-48.39%)
Mutual labels:  modding
ME3ModManager
Legacy mod manager for Mass Effect 3 (superceded by ME3Tweaks Mod Manager)
Stars: ✭ 17 (-72.58%)
Mutual labels:  modding
morrowind-sharp
A Morrowind modding guide. New and experienced players welcomed.
Stars: ✭ 107 (+72.58%)
Mutual labels:  modding
DemonsSoulsDebug
Patches for Demon's Souls to add functionality such as enabling debug menus.
Stars: ✭ 18 (-70.97%)
Mutual labels:  modding
VRCMods
⚙️ New features & quality of life improvements for VRChat
Stars: ✭ 21 (-66.13%)
Mutual labels:  modding
odex-patcher
Run arbitrary code by patching OAT files
Stars: ✭ 44 (-29.03%)
Mutual labels:  modding
PrimeXT
Modern SDK for Xash3D FWGS engine, uses PhysX for physics, has advanced OpenGL renderer with a lot of features. Crossplatform, supported Windows/Linux. Based on XashXT and Spirit Of Half-Life.
Stars: ✭ 65 (+4.84%)
Mutual labels:  modding
paintjob-packer
Lightweight mod making tool for ETS 2 and ATS
Stars: ✭ 28 (-54.84%)
Mutual labels:  modding
JGeckoU
Wii U RAM TCP Debugger Client/Cheat Code Manager
Stars: ✭ 54 (-12.9%)
Mutual labels:  modding
BeatSaberSongBrowser
BeatSaber plugin, adds much needed functionality to the song selection interface.
Stars: ✭ 166 (+167.74%)
Mutual labels:  modding
Fragsurf-2
Fragsurf is an actively developed standalone game based on HL2 surf and bhop movement mechanics.
Stars: ✭ 68 (+9.68%)
Mutual labels:  modding
gdmod
A mod loader and modding API for GDevelop games.
Stars: ✭ 15 (-75.81%)
Mutual labels:  modding
R3ditor
An open-source project created to reverse-engineering some Resident Evil 3 files
Stars: ✭ 19 (-69.35%)
Mutual labels:  modding
RAGE-StringsDatabase
This repository contains known string lines and file names for RAGE based games (GTA IV, GTA V, RDR 2)
Stars: ✭ 26 (-58.06%)
Mutual labels:  modding
HeroesOfTheStorm TryMode2.0
A modified Try Mode Map for Heroes of the Storm to create a better experience with enhanced functionalities.
Stars: ✭ 18 (-70.97%)
Mutual labels:  modding

A low-ish level tool for easily writing and hosting WASM based plugins.

The goal of wasm_plugin is to make communicating across the host-plugin boundary as simple and idiomatic as possible while being unopinionated about how you actually use the plugin.

Loading a plugin is as simple as reading the .wasm file off disk.

let mut plugin = WasmPluginBuilder::from_file("path/to/plugin.wasm")?.finish()?;

Calling functions exported by the plugin takes one of two forms. Either the function takes no arguments and returns a single serde deserializable value:

let response: ResultType = plugin.call_function("function_name")?;

Or it takes a single serializable argument and returns a single result:

let message = Message::default();
let response: ResultType = plugin.call_function_with_argument("function_name", &message)?;

Exporting a function from a plugin is just a matter of wrapping it in a macro:

fn local_hello() -> String {
    "Hello, host!".to_string()
}
wasm_plugin_guest::export_plugin_function_with_no_input(hello, local_hello);

API Stability

I am not currently guaranteeing any stability, expect all releases to include breaking changes.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].