2个版本

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

#2018 in 游戏开发

自定义许可

605KB
16K SLoC

Ivy

是什么

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

该crate提供多个ivy crates的合并、重新导出以及别名。

指南

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

特性

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

画廊

Cubes and Collision

工作原理

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

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

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

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

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

层间通信

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

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

请参阅[core::Layer]

依赖项

~27MB
~578K SLoC