Coder Social home page Coder Social logo

bevy_wasm's Introduction

Brandon Dyer

Hi, I'm Brandon (he/him). I build lots of things here on my GitHub. I'm a professional software engineer with a passion for systems, frontend, and graphics programming.

I work at Disney as a Software Engineer working on their streaming platform in Rust.

I'm a huge fan of Rust and am working towards making it my primary language, both on the frontend and backend. I love SCRUM and Agile development, I speak Epseranto, and I use the Dvorak keyboard layout.

Longmont Colorado πŸ‡ΊπŸ‡Έ US

GitHub Streak

bevy_wasm's People

Contributors

brandondyer64 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bevy_wasm's Issues

Bevy features instead of individual crates

Right now, all of the necessary bevy crates are imported individually.

bevy_app = "0.9"
bevy_ecs = "0.9"
bevy_log = "0.9"

Instead, this should be done through Bevy's features.

features = ["app", "ecs", "log"]

Optional JIT

Just-in-time (JIT) compiling is not available or not allowed on some platforms. This can be a major blocker for many games.
JIT, through cranelift, should either be optional or disabled entirely.

Dependency graph

Allow mods to request the existence of other mods.

This may be out of the scope of bevy_wasm as different games will have different needs

Time should be global

Currently, ffi::get_time_since_startup() returns the time since the MOD loaded, not the time since the GAME started.

This makes it virtually impossible to coordinate mods.

Wasm files should be assets

Currently, loading .wasm files is left to the user. All of the example files show using include_bytes!().

Ideally, these files should be treated the same as any other Bevy asset.

Dual licensing

The bevy_wasm code should be dual licensed as either MIT and Apache-2.0 (at your option). This is to be consistent with the licensing of Bevy.

Browser support

It should be possible to use bevy_wasm in a game running in a browser.

Given that bevy_wasm_sys defines its own ffi, wasm-bindgen might not be necessary.

`println!` and `panic!` support

Currently, mods made using target wasm32-unknown-unknown cannot call println!. We could use wasm32-wasi instead, but this drastically increases binary size.

Perhaps some kind of #![no_std] support could be added, or a trick for making wasi binaries smaller.

Switch to Wasmer?

Do some more research on the differences between Wasmer and Wasmtime. They both have pros and cons.

With the intention of bevy_wasm being used on low-end hardware, determine whether or not it should use Wasmer instead of Wasmtime.

Alternatively, give the developer the choice through feature flags.

Custom connection struct in favor of event writers

Currently, communication is handled through Bevy's EventReader and EventWriter. What I'd like is some kind of ModConnection struct instead that maps directly to the ffi calls rather than overly abstracting them.

Current:

fn system(in: EventReader<In>, out: EventWriter<Out>)

Proposed:

fn system(conn: ModConnection<In, Out>)

Perhaps a standardized Protocol type could be established that would hold these more obtuse types.
i.e.

fn system(conn: ModConnection<MyProtocol>)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.