2个版本

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

#2168 in 游戏开发

Download history 13/week @ 2024-03-11 19/week @ 2024-03-18 35/week @ 2024-03-25 61/week @ 2024-04-01 13/week @ 2024-04-08 8/week @ 2024-04-15 16/week @ 2024-04-22 16/week @ 2024-04-29 17/week @ 2024-05-06 12/week @ 2024-05-13 21/week @ 2024-05-20 3/week @ 2024-05-27 11/week @ 2024-06-03 10/week @ 2024-06-10 15/week @ 2024-06-17 15/week @ 2024-06-24

51 每月下载量
6 个Crate(2个直接) 中使用

自定义许可协议

130KB
3.5K SLoC

Ivy

这是什么

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

此Crate提供了对多个ivy Crate的聚合、重导出以及别名。

指南

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

特性

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

画廊

Cubes and Collision

如何工作

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

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

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

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

层的存在允许从其他Crate导入行为,而不必担心实现细节。

层间通信

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

  • world 包含具有所有实体和组件的ECS世界。
  • resources 是通过句柄访问的泛型存储。这对于存储要在层之间以及层内部共享并在动态借用检查中进行动态借用的纹理、模型或单例很有用。
  • events简化了广播通道,允许发送和监听事件。每一层都可以设置接收器并遍历特定类型的事件。这对于低频数据非常适用,可以避免频繁检查,如用户输入、状态变更等。

请参阅[core::Layer]的文档

依赖项

~21MB
~476K SLoC