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

Comprehensive Modularization of the Ryot Framework into Independent Crates #110

Merged
merged 21 commits into from
Apr 25, 2024

Conversation

lgrossi
Copy link
Collaborator

@lgrossi lgrossi commented Apr 23, 2024

Summary

This merge request represents the culmination of an extensive refactor of the Ryot framework into a modular and scalable architecture. By breaking down the original Ryot crate into several focused sub-crates, we enhance maintainability, scalability, clarity of the codebase, and facilitate the usage of parts of the framework in various contexts rather than mandating the full framework. This strategic modularization allows for more targeted application in diverse development scenarios.

Crate Overview

ryot

  • Purpose: Serves as an entry point for users of the framework, simplifying imports by aggregating all sub-crates into a unified API. It facilitates the easy integration of the framework’s capabilities as needed, without the overhead of unused functionalities.

ryot_app

  • Purpose: Contains all plugins and bundles essential for building applications, facilitating the integration and management of Bevy engine functionalities.

ryot_assets

  • Purpose: Manages asset loading and processing, providing robust tools for handling game resources efficiently.

ryot_core

  • Purpose: The backbone of the framework, hosting core functionalities and utilities used across all other crates.

ryot_internal

  • Purpose: Intended for internal use within the framework, this crate simplifies the inclusion and management of shared utilities and base dependencies.

ryot_pathfinder

  • Purpose: Specializes in pathfinding algorithms and utilities for Bevy 2D, supporting complex navigation and movement logic within games.

ryot_ray_casting

  • Purpose: Offers functionality for ray casting in Bevy 2D, crucial for line-of-sight calculations and interactive game mechanics.

ryot_sprites

  • Purpose: Focuses on sprite management, handling animations and graphical representations of objects in the game.

ryot_tibia

  • Purpose: A specialized crate for handling Tibia-specific legacy assets, ensuring compatibility and functionality for games inspired by Tibia.

ryot_tiled

  • Purpose: Manages integration with tiled maps, supporting tile-based game development with tools for drawing and managing tilesets.

ryot_utils

  • Purpose: Provides generic utilities that are applicable in any context, offering foundational tools and helpers used across the entire framework.

Changes

  • Decomposition: Methodically moved specific functionalities from the monolithic Ryot crate into designated sub-crates, ensuring each crate has a clear and focused responsibility.
  • Dependency Optimization: Reviewed and optimized dependencies for each crate to ensure minimal overhead and maximum relevance.
  • Codebase Cleanup: Conducted a thorough cleanup of the codebase, removing redundant code and improving the organization of modules and systems.

Rationale

This refactor is driven by the need to make the Ryot framework more accessible, maintainable, and extensible:

  • Enhanced Modularity: Developers can now pick and choose which components of the framework they need, potentially reducing compilation times and simplifying dependency management.
  • Clear Separation of Concerns: Each crate is designed to be self-contained, with well-defined interfaces and minimal dependencies on other internal crates.
  • Future Growth: This structure lays a solid foundation for future expansions, allowing new features or improvements to be implemented in a targeted and efficient manner.

Impact

The completion of this refactor marks a significant milestone in the evolution of the Ryot framework. It not only simplifies the development and maintenance of the framework itself but also enhances the user experience by providing a more organized and intuitive structure. Developers using Ryot can now enjoy a more modular and flexible system, tailored to the diverse needs of modern game development.

@lgrossi lgrossi force-pushed the lucas/move-more-modules-out-ryot branch from c818957 to d597661 Compare April 24, 2024 14:52
@lgrossi lgrossi force-pushed the lucas/move-more-modules-out-ryot branch from 288e29b to 9286176 Compare April 24, 2024 18:08
@lgrossi lgrossi marked this pull request as ready for review April 25, 2024 18:47
@lgrossi lgrossi force-pushed the lucas/move-more-modules-out-ryot branch from b727d0b to b3c95e7 Compare April 25, 2024 18:52
@lgrossi lgrossi force-pushed the lucas/move-more-modules-out-ryot branch 3 times, most recently from 8642739 to b840fd3 Compare April 25, 2024 19:46
@lgrossi lgrossi force-pushed the lucas/move-more-modules-out-ryot branch from b840fd3 to aaa3b20 Compare April 25, 2024 21:27
@lgrossi lgrossi changed the title Lucas/move more modules out ryot Comprehensive Modularization of the Ryot Framework into Independent Crates Apr 25, 2024
@lgrossi lgrossi merged commit 971b7a2 into main Apr 25, 2024
6 checks passed
@lgrossi lgrossi deleted the lucas/move-more-modules-out-ryot branch April 25, 2024 22:23
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

Successfully merging this pull request may close these issues.

2 participants