2 个版本

0.10.3 2022 年 1 月 17 日
0.10.0 2022 年 1 月 8 日

算法 中排名 2588

Download history 32/week @ 2024-03-15 56/week @ 2024-03-22 79/week @ 2024-03-29 33/week @ 2024-04-05 28/week @ 2024-04-12 31/week @ 2024-04-19 38/week @ 2024-04-26 33/week @ 2024-05-03 30/week @ 2024-05-10 38/week @ 2024-05-17 25/week @ 2024-05-24 19/week @ 2024-05-31 15/week @ 2024-06-07 29/week @ 2024-06-14 36/week @ 2024-06-21 13/week @ 2024-06-28

每月下载 95
用于 11 个crate (2 个直接使用)

自定义许可证

5KB
98

Ivy

这是什么

Ivy 是一个用于 Rust 的模块化应用程序和游戏框架。

此 crate 提供了多个 ivy crate 的合并、重导出以及别名。

指南

提供用户指南,以便用户快速熟悉引擎的基本用法。

功能

  • Vulkan 高级渲染
  • PBR 渲染和后期处理
  • 渲染图抽象
  • 碰撞检测和逼真的物理响应
  • ECS 驱动的架构
  • 使用观察者模式进行延迟动态事件
  • 对任意凸形状进行光线投射
  • 基于句柄的动态存储
  • 具有可组合向量生成的输入系统
  • 具有可配置小部件和定位系统的 UI 系统
  • ... 更多

展示厅

Cubes and Collision

如何工作

程序的核心是一个应用程序。 [core::App]。它定义了更新循环和事件处理。

从那里,逻辑被提取到层中,并在每个迭代中运行。在层中,用户可以自由地进行任何操作,从读取套接字、使用 vulkan 渲染,到调度 ECS 工作负载。

由于分层设计,几个高级概念可以协同工作而不会相互干扰,同时可以根据不同的配置进行插入。

可以将层视为高级行为容器中的插件。

层的存在允许从其他 crate 导入行为,而无需关注实现细节。

层间通信

应用程序公开了两种层如何相互影响的方式。

  • world 包含具有所有实体和组件的 ECS 世界。
  • resources 是一种通过句柄访问的泛型存储。这对于存储要在层之间以及层内共享的纹理、模型或单例很有用。
  • events 促进了一个广播频道,其中可以发送和监听事件。每个层都可以设置一个接收器,并迭代特定类型发送的事件。这最好用于低频数据,以避免忙等待,如用户输入、状态更改等。

请参阅有关 [core::Layer] 的文档。

依赖项

约3MB
约94K SLoC