“群集”引擎:数据驱动的游戏引擎和应用框架

“群集”引擎:数据驱动的游戏引擎和应用框架

“集群”引擎:数据驱动的游戏引擎和应用框架

独立游戏开发商Carter Anderson发布集群引擎(Bevy Engine)。 该引擎可用于开发游戏和应用程序,并且它是一个免费的开源项目。 其架构充分利用了Rust语言的模块化、速度快和开发周期短的特点。 可以跨平台、三维渲染。 与竞品相比,其编译时间更短,功能更丰富。

这篇关于发布引擎的文章给出了一个简单的性能测试报告。 在迭代速度方面,Cluster Engine比其他项目快一到两倍; 在全球准备度方面,Cluster Engine 超过了竞争产品的平均水平。 这要归功于集群引擎的设计——它将相同类型内存的组件压缩在一起,提高了程序的空间局部性,从而使处理器缓存更加高效。 它还采用无锁并发开发模型来提高并行计算的速度。

文章还提供了大量示例代码来演示集群引擎的基本使用。 针对传统的“实体组件系统”(ECS)思想,集群引擎扩展了线程本地系统、多队列、过滤器等开发模型,并提供了更适合Rust语言的编写方式。 集群引擎的开发采用了特殊的“函数系统”编写方式,可以在用户给定的任意函数指针上扩展函数,从而方便地将任意函数封装成引擎所需的编程对象。 这是通过扩展函数以返回盒装结构来实现的。

文章还给出了图形界面的简单应用。 在图形图形方面,常见的图形设计元素如绝对和相对位置、父子关系、流体排版、文本图形和交互事件都与该引擎兼容。 该引擎为游戏开发中常见的“Sprite Sheet”概念提供了良好的支持。 它还支持三维图形的复杂模块、平滑锯齿等高级功能。 一个非常好的功能是这个引擎可以动态重新加载场景,这特别适合快速开发和需要更改纹理包的情况。

集群引擎还包括游戏音效等诸多功能模块。 此外,它还针对快速编译进行了特殊修复。 未来还将支持Android、iOS、Web等平台。 “Cluster”这个名字来源于开发者对引擎发展的期望游戏引擎架构,希望它能够在未来吸引更多的开发者并扩大他们的社区。 这个引擎已经有了详细的文档,作者Carter Anderson希望更多的游戏开发者加入集群引擎生态系统。

初创公司Meili投资150万欧元探索用Rust语言编写的开源搜索引擎

Meili SAS是一家成立于2018年11月的初创公司,希望开发一套搜索引擎接口来取代目前托管的云搜索引擎竞争对手。 此次他们从 LocalGlobe、Seedcamp、Kima & Tiny.vc 等多家投资机构筹集了 150 万欧元,希望建立一个开源搜索引擎 Meil​​iSearch 的社区,吸引更多的用户和贡献者。 MeiliSearch是一个高效的开源全文搜索引擎。 值得一提的是,它还使用了社区的汉字分词库“口吃”,并对汉字词的搜索支持进行了特殊设计。

与 Algolia 等竞争产品不同,MeiliSearch 是一个开源项目。 举个例子游戏素材下载 免费,这个引擎在其官网上提供了一个快速的crates.io搜索引擎。 它的搜索和渲染过程只需要几毫秒,几乎只要输入字母就可以完成搜索。 该项目最初诞生于路易威登在巴黎赞助的一场黑客马拉松。 是的游戏引擎架构,这就是销售时尚手袋的路易威登公司——活动结束后,该项目的三位作者各获得了一个路易威登包作为奖品。

MeiliSearch社区已经公开了后续发展的路线图。 他们希望扩展更多的功能,并在任何地方快速搭建开发环境。 该社区也欢迎开发者贡献,重视开源社区的价值。

Rust 和单页 Web 应用程序

WebAssembly 是一种常见的 Web 编程方法,超过十分之九的浏览器都支持它。 在本文中,作者尝试构建一个仅用一个网页和一两行 JavaScript 代码的 Web 应用程序。 这样的应用程序应该只加载一个页面中的内容,能够在不刷新页面的情况下访问多个模块,能够复用多个网页的用户交互模块游戏开发素材,并且能够同时更新不同级别的用户页面。 作者给出了在此前提下的设计方法,并提供了一个设计的网上购物网站作为例子。

要完成整个开发过程,需要安装Rust及其与网页组装相关的工具链。 文章选择Rust语言的yew项目作为开发框架,将网购商品、购物车、交互信息等抽象为Rust语言的结构体和枚举类型,最终完成开发目的。 每个用户交互都会通过特殊的“生命周期”方法传递到状态机。 最终,状态机会重绘用户界面,以达到更新用户界面的目的——比如按下添加到购物车按钮,侧边栏的总价信息就会相应改变。

在本文的开发方法中,初始化部分的信息也是由接口提供的。 后端服务会访问后续结构,获取所有信息,并通过应用接口和消息结构返回。 如果发生错误,也会给出错误类型。 不同的页面通过层次结构相互关联,但不同层次的结构共同维护一个全局的状态存储空间,提供数据同步的解决方案。 在文章示例中,所有页面共享相同的购物车内容,这是通过全局状态实现的。 地位也可以提升到不同的级别。 例如,通过提升侧边栏页面的状态,我们可以在所有页面上同时显示相同且统一的侧边栏。

文章大量使用了 yew 社区提供的便捷抽象设计,这与 Rust 语言灵活的宏系统密不可分。 虽然文中给出的设计方法仍有改进的空间,但作者也在探索问题的解决方案。 他希望未来能够替代Vue、React等流行的网页设计框架。

《异步生存》:Rust语言异步开发与调试技巧

Rust 语言的异步(async)特性非常棒。 一旦异步代码出现问题,我们可以使用更好的方法来处理错误,并且也有相应的方法来完成调试和速度测试过程。 文章详细介绍了Rust异步开发中的几种常用工具,包括如何让错误提示更加美观; 异步开发中还存在一些常见的问题,包括同一个任务是否被发送到不同的线程执行。 这些方法对于调试 Rust 异步代码非常有帮助。

文章来源:http://mp.weixin.qq.com/s?src=11×tamp=1694319086&ver=4765&signature=IYSnn1KQ04M*7WM8sVt5w58AFo5gb6AbVMQdY6dvcWuYA-PXvlSZxXR8wZ6SRf8Fs-1iDVhBDXQJFhdTAiqvzArYgMH3jnGfs1K2YvmPs2iChXrXl8TL8tKJNMUWb5OF&new=1