Skip to content

Commit

Permalink
impr: improve crates descriptions and README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
lgrossi committed Apr 25, 2024
1 parent ca445d3 commit 971b7a2
Show file tree
Hide file tree
Showing 25 changed files with 119 additions and 60 deletions.
73 changes: 39 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,44 @@
# Ryot
# Ryot Framework

<div style="text-align: center;">
<img src="https://raw.githubusercontent.com/opentibiabr/Ryot/ae87fdf207d540c901c9c03bb6bbdd0abb8027e4/ryot_compass/assets/ryot_mascot.png" width="256" height="256" alt="Ryot! An open tibia based MMORPG library in Rust."/>
</div>

MMORPG library based on the concepts of open tibia.

Ryot is an event-driven library that provides simple utilities for building OT based games.
It is designed to be used with the [Bevy](https://bevyengine.org/) game engine.
It is currently in early development and is not yet ready for use.

Ryot is design to integrate with OpenTibia concepts, facilitating the creation
of games that intend to use Tibia-like contents/assets formats, as well as some
game mechanics.

It also provides some utilities:

- [Bevy Helpers](https://github.com/opentibiabr/Ryot/tree/main/ryot/src/bevy_ryot) - A collection of helpers that can be
used to send async events,
load configurations, sprites and contents as BevyAssets.
- [Compression](https://github.com/opentibiabr/Ryot/blob/main/ryot/src/compression.rs) - A compression utility that can
be used to compress
and decompress sprite sheets.
- [ContentBuilder](https://github.com/opentibiabr/Ryot/blob/main/ryot/src/build/content.rs) - A builder that can be used
to build
content assets from the Tibia client content folder, decompressing sprite sheets and
copying the necessary files to the assets folder.
- [Sprite Utilities](https://github.com/opentibiabr/Ryot/tree/main/ryot/src/sprites) - Functions that can be used to
decompress, manipulate
and load sprite sheets as game assets, taking into considerations Tibia-like sprite sheets
structures.
- [Content Utilities](https://github.com/opentibiabr/Ryot/blob/main/ryot/src/content.rs) - A collection of structs that
can be used to manipulate
contents, including configuring and loading them.

# Compass

Map editor built on top of Ryot aiming develop tile based map for open tibia based MMORPGs.
Welcome to the Ryot Framework, a robust and versatile suite of Rust crates and applications designed specifically for
developing tiled 2D games.
Inspired by the mechanics and perspectives of games like Open Tibia and Tibia, Ryot offers specialized tools for
creating top-down 45-degree perspective games.

## Crates

- **ryot**: Serves as the main entry point, simplifying access to all functionalities of the framework.
- **ryot_app**: Contains essential plugins and bundles for building game applications.
- **ryot_assets**: Manages asset loading and processing.
- **ryot_core**: Provides foundational components and systems crucial for all other functionalities.
- **ryot_internal**: Includes utilities for internal use within the framework.
- **ryot_pathfinder**: Offers pathfinding functionalities tailored for Bevy 2D.
- **ryot_ray_casting**: Implements ray casting capabilities within Bevy 2D environments.
- **ryot_sprites**: Manages sprites and animations, enhancing the visual content of games.
- **ryot_tibia**: Specializes in handling Tibia-specific legacy assets.
- **ryot_tiled**: Supports tile-based game development with advanced map editing tools.
- **ryot_utils**: Provides general utilities and helpers used across the framework.

## Applications

- **ryot_assets_cli**: A CLI tool for asset management, supporting tasks like asset conversion and optimization.
- **ryot_compass**: A comprehensive map editor designed to streamline the creation and editing of tiled maps,
integrating seamlessly with `ryot_tiled`.

## Getting Started

To begin using the Ryot framework and its applications, clone this repository and explore the documentation of each
component. Each module is designed for independent use yet integrates fully with others, allowing for flexible adoption
based on project needs.

## Contribution

Contributions are welcome! If you're interested in enhancing the Ryot framework or have suggestions for new features,
please refer to our contribution guidelines for more information.

Thank you for choosing the Ryot Framework for your 2D game development journey!

4 changes: 2 additions & 2 deletions apps/ryot_assets_cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "CLI for managing assets from the Tibia client for Ryot."
description = "A command-line interface for managing game assets within the Ryot framework, facilitating efficient asset conversions of Tibia assets."
repository = "https://github.com/opentibiabr/Ryot/tree/main/ryot"
homepage = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "assets", "ryot", "otbr", "bevy"]
keywords = ["cli", "asset-management", "game-development", "command-line-tool", "ryot"]
categories = ["game-development"]
readme = "../../README.md"

Expand Down
2 changes: 2 additions & 0 deletions apps/ryot_compass/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
[package]
name = "ryot_compass"
version = "0.1.0"
description = "Ryot Compass, the map editor for the Ryot framework, streamlines the creation and manipulation of tiled maps, enhancing the design process with powerful editing tools."
edition = "2021"
keywords = ["map-editor", "tiled-2d", "level-design", "game-dev-tool", "ryot"]
exclude = ["dist", "build", "assets", "credits"]

[dependencies]
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ version = "0.2.2"
edition = "2021"
authors = ["Lucas Grossi <lucas.ggrosis@gmail.com>"]
license = "MIT OR Apache-2.0"
description = "MMORPG library based on the concepts of open tibia written in rust and bevy."
description = "Entry point for the Ryot framework, providing a unified API to aggregate all functionalities for simplified integration."
repository = "https://github.com/opentibiabr/Ryot/tree/main/ryot"
homepage = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "assets", "ryot", "otbr", "bevy"]
keywords = ["game-development", "bevy", "framework", "tiled-2-games", "ryot"]
categories = ["game-development"]
readme = "../../README.md"

Expand Down
5 changes: 5 additions & 0 deletions crates/ryot/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
//! `ryot`
//!
//! The `ryot` crate serves as the main entry point for the Ryot framework, providing
//! a unified API that aggregates all sub-crates. It simplifies the integration and
//! usage of the framework's extensive functionalities.
pub mod prelude {
pub use ryot_internal::prelude::*;
}
4 changes: 2 additions & 2 deletions crates/ryot_app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "This crates provides the bevy most common blocks for building Ryot games, such as plugins and bundles."
description = "Contains essential plugins and bundles for building Bevy-based applications within the Ryot framework."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "app", "building-blocks", "bevy"]
keywords = ["bevy-plugins", "game-engine", "games-2d", "game-development", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
5 changes: 5 additions & 0 deletions crates/ryot_app/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
//! `ryot_app`
//!
//! This crate contains essential plugins and bundles for building applications using
//! the Ryot framework. It facilitates the integration and management of Bevy engine
//! functionalities, streamlining game development.
pub mod content;
pub mod game;
#[cfg(feature = "lmdb")]
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_assets/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A game engine core for Ryot, a MMORPG game, with generic features and systems."
description = "Manages asset loading and processing, offering robust tools for efficient game resource management."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "core", "bevy"]
keywords = ["asset-management", "resource-loading", "game-assets", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
5 changes: 5 additions & 0 deletions crates/ryot_assets/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
//! `ryot_assets`
//!
//! Manages the loading and processing of game assets. The `ryot_assets` crate provides
//! powerful tools for efficient handling and manipulation of resources in a game development
//! environment.
#![feature(trait_alias)]

use bevy_asset_loader::asset_collection::AssetCollection;
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A game engine core for Ryot, a MMORPG game, with generic features and systems."
description = "Core functionality crate for the Ryot framework, housing essential components and systems foundational to game development."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "core", "bevy"]
keywords = ["game-development", "core", "foundation", "base-components", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
5 changes: 5 additions & 0 deletions crates/ryot_core/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
//! `ryot_core`
//!
//! Acts as the backbone of the Ryot framework, housing essential components, systems,
//! and utilities. This core crate supports foundational game development tasks, ensuring
//! stability and efficiency across the framework.
#![feature(trait_alias)]
pub mod content_type;
pub mod frame_group;
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_internal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "An internal Ryot crate used to facilitate optional dynamic linking via the 'dynamic_linking' feature"
description = "Internal utilities and foundational elements for use within the Ryot framework, supporting cross-crate functionality."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "assets", "ryot", "otbr", "bevy"]
keywords = ["internal-utilities", "framework-support", "development-tools", "ryot"]
categories = ["game-development", "game-engines"]

[package.metadata.docs.rs]
Expand Down
9 changes: 8 additions & 1 deletion crates/ryot_internal/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
/// `use ryot::prelude::*;` to import common elements.
//! `ryot_internal`
//!
//! Designed for internal use within the Ryot framework, this crate includes utilities and
//! foundational elements that facilitate the implementation and integration of shared
//! functionalities across various crates.
//!
//! DO NOT USE DIRECTLY. This crate is intended for internal use only.
//! `use ryot::prelude::*;` to import common elements.
pub mod prelude;

#[cfg(feature = "ryot_app")]
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_pathfinder/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "An implementation of the pathfinding crate targeting 2d tile-based games using bevy ecs and ryot ecossystem."
description = "Provides specialized pathfinding functionalities for Bevy 2D, essential for dynamic navigation and movement within games."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "pathfinding", "tiled-2d", "tiled"]
keywords = ["pathfinding", "navigation", "tiled-2d-games", "bevy", "ryot"]
categories = ["game-development", "games"]

[package.metadata.docs.rs]
Expand Down
4 changes: 4 additions & 0 deletions crates/ryot_pathfinder/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
//! `ryot_pathfinder`
//!
//! Specializes in providing pathfinding functionalities for Bevy 2D, enabling complex
//! navigation and movement logic essential for dynamic game environments.
use crate::systems::*;
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_ray_casting/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "An implementation of ray casting targeting 2d tile-based games using bevy ecs and ryot ecossystem."
description = "Implements ray casting capabilities for Bevy 2D, crucial for interactive game mechanics and line-of-sight features."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "ray-cast", "tiled-2d", "tiled"]
keywords = ["ray-casting", "bevy", "tiled-2d-games", "game-mechanics", "ryot"]
categories = ["game-development", "games"]

[package.metadata.docs.rs]
Expand Down
7 changes: 6 additions & 1 deletion crates/ryot_ray_casting/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
//! This crate provides functionality for managing and processing perspectives and visibility
//! `ryot_ray_casting`
//!
//! Provides ray casting capabilities specifically for Bevy 2D, essential for implementing
//! line-of-sight features and other interactive game mechanics.
//!
//! It includes functionalities for managing and processing perspectives and visibility
//! of entities in a game environment. Perspectives are defined by sets of view points that
//! determine what an entity can see, based on tile positions and other spatial considerations.
pub mod trajectory;
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_sprites/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A crate to handle sprites for the Ryot game engine."
description = "Focuses on sprite management, handling animations and graphical representations for dynamic visual content in games."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "sprites", "bevy"]
keywords = ["sprites", "animations", "graphics-2d", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
4 changes: 4 additions & 0 deletions crates/ryot_sprites/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
//! `ryot_sprites`
//!
//! Focuses on sprite management, dealing with animations and visual representations of
//! game objects, supporting rich graphical content within games.
use bevy_ecs::prelude::SystemSet;

pub mod animations;
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_tibia/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A compatibility layer between Ryot and Tibia's assets."
description = "Specializes in managing and integrating Tibia-specific legacy assets, tailored for games inspired by the classic Tibia."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "tibia"]
keywords = ["tibia", "legacy-games", "game-assets", "asset-integration", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
3 changes: 3 additions & 0 deletions crates/ryot_tibia/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
//! # Tibia Appearance Protocol Definitions
//!
//! A specialized crate for managing Tibia-specific legacy assets, ensuring compatibility
//! and enhancing functionalities tailored to games inspired by Tibia.
//!
//! This crate encapsulates the protocol definitions for Tibia's appearance data, providing
//! a structured interface to Tibia appearance assets. It primarily consists of automatically
//! generated Rust code from protocol buffer definitions, ensuring type safety and easy integration
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_tiled/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A 2d tile grid system for the Ryot engine."
description = "Supports tile-based game development, providing tools for drawing and managing tilesets and tiled maps."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "grid", "tiled-2d", "tiled"]
keywords = ["tiled-maps", "tiled-2d-games", "level-design", "game-development", "ryot"]
categories = ["game-development", "games"]

[package.metadata.docs.rs]
Expand Down
4 changes: 4 additions & 0 deletions crates/ryot_tiled/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
//! `ryot_tiled`
//!
//! Manages integration with tiled maps, offering tools for drawing and managing tilesets
//! and supporting tile-based game development.
#![feature(fn_traits)]
#![feature(unboxed_closures)]
use glam::{UVec2, Vec2};
Expand Down
4 changes: 2 additions & 2 deletions crates/ryot_utils/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ authors = [
"Luan Santos <cargo@luan.sh>",
]
license = "MIT OR Apache-2.0"
description = "A game engine core for Ryot, a MMORPG game, with generic features and systems."
description = "General utilities and helpers for the Ryot framework, supporting a wide range of common game development tasks."
homepage = "https://github.com/opentibiabr/Ryot"
repository = "https://github.com/opentibiabr/Ryot"
documentation = "https://docs.rs/ryot/"
keywords = ["gamedev", "ryot", "core", "bevy"]
keywords = ["utilities", "game-development", "helper-functions", "ryot"]
categories = ["game-development", "game-engines", "games"]

[package.metadata.docs.rs]
Expand Down
5 changes: 5 additions & 0 deletions crates/ryot_utils/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
//! `ryot_utils`
//!
//! Provides general utilities and helpers that are fundamental across the Ryot framework.
//! This crate includes functions and structs that assist in various aspects of game development,
//! ensuring that core utilities are reusable and accessible.
#[cfg(feature = "bevy")]
pub mod async_events;
pub mod async_task;
Expand Down

0 comments on commit 971b7a2

Please sign in to comment.