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

Battle Plan - Roadmap - 2025 #150

Open
4 of 7 tasks
makspll opened this issue Nov 12, 2024 · 0 comments
Open
4 of 7 tasks

Battle Plan - Roadmap - 2025 #150

makspll opened this issue Nov 12, 2024 · 0 comments

Comments

@makspll
Copy link
Owner

makspll commented Nov 12, 2024

Hi all, just though I'd check-in, since this crate is now used regularly by quite a few people!
First of all thanks for all the support and especially to the sponsors! (massive shutout to @shanecelis and @DrLuke)

Refactoring ✅

The crate is massive and really hard to grok, which is one of the reasons it's been fairly hard to maintain, I myself find myself forgetting many implementation details every time I come back to work on BMS!

The latest big thing I've been working is a massive refactor: #112. It's been a while since I've started work on that branch but it's finally nearing the point where things are starting to look really good!

I've ported the work over to: #149 while also "rebasing" (in quotation marks because it was nowhere near as pretty as a rebase) the latest few bevy updates and PR's to the crate (minus dynamic queries which I am yet to re-integrate here)

This will be the biggest breaking change to the crate so far and will bring many benefits:

  • Much fewer crates
  • Simplified plugin structure & less bloat
  • Actual unit testing
  • No more reliance on magic macros, but rather traits doing the heavy lifting (very excited about this one)
  • Improved script lifecycle (no more event priority stuff, it's too confusing), and API's are available at all hooks for a script (setup, post setup, during event handling etc.)
  • Support for langs which are close enough to existing ones (like fennel) via asset pre-processors
  • Saner cleaner errors

I am hoping to merge this work right after the bevy 0.15 release (which I am already supporting with 8.0 pre-releases from the staging branch)

Removing dependency on Tealr ✅

I still want to be able to generate docs for lua (and other languages), but Tealr forces us to do this at compile time, and also is quite behind on recent teal developments. As part of supporting generating docs for other langs I'd like to develop a custom documentation format which we can generate (ideally) at compile time, and then produce beautiful docs tailored to our use case.

This will be the next step after the big refactor.

Moving to native reflection ✅

Bevy has come a long way since I've begun working on this crate! To put it into perspective, when the first version of BMS released Enum's were still not supported, and function reflection was unheard of!

As of now many features still rely on bits and bobs of compile time knowledge (including doc gen) which will be hard to get rid of, but I'd finally be able to get rid of the concept of per-type-script-proxies. Ideally we'd have a single LuaProxy type which via dynamic reflection handles ALL methods and fields of a type without relying on compile time knowledge (right now we generate wrappers per native bevy type!)

Documentation Generation

Generating various documentation and langauge server formats based on an agnostic meta data export
See: #245

Script Systems & Components

Supporting OOP style scripting is much harder in a system oriented engine, but once I am happy with it, we could also support the much easier system style scripting, where scripts define dependencies on components and resources at "compile time" (think type or parameter names) allowing us to pre-compute a lot of our runtime safety information!

@makspll makspll added this to the 2024 Goals milestone Nov 12, 2024
@makspll makspll modified the milestones: 2024 Goals, 2025 Goals Feb 1, 2025
@makspll makspll pinned this issue Feb 2, 2025
@makspll makspll changed the title Battle Plan - Roadmap Battle Plan - Roadmap - 2025 Feb 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant