-
Notifications
You must be signed in to change notification settings - Fork 1
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
Rewrite with Bevy #7
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Custom simulation schedule --> Bevy
I am switching to Bevy for the simulation. Bevy is a game engine built upon an ECS framework. It allows for high performance, multi-threaded, dynamic simulations with 3D graphics and rich interactive GUIs.
The first reason is that I want to be able to spend more time on the interactions between the HAB components and less time on the fundamental physics and simulation scheduling loop. Bevy has a very nice schedule system that allows for easy parallelization of systems. It also has a component system that allows me to keep all the logic for the physics systems close to the objects that they act on. For example, all of the solid bodies that will need to have drag applied will have a
Body
component, and the logic to calculate the drag on those bodies will be computed from the their mesh using custom colliders and forces on top of the physics engine, Avian, that takes care of equations of motion, collisions, and constraints.The second reason is that I want to be able to run the simulation in a web browser. Bevy has a web backend that allows for this and very nice tools for visualizing the simulation state. It also has first-class support for Egui which is a library for building interactive GUIs with Bevy Egui, and first-class support for loading assets like configs, 3D models, and textures.
These changes aim to enhance the simulation's performance, maintainability, and user experience by leveraging Bevy's capabilities and improving the organization of physics components.
Other notable changes
docs/devlog.md
)Cargo.toml
.toml
to.ron