2019 年 11 月 7 日
欢迎来到 Rust GameDev 工作组月刊,第三期。
Rust是一种追求三重性的系统语言:安全性、并发性和速度。这些目标与游戏开发非常一致。
我们希望为想在开发过程中,使用 Rust 的人建立一个吸引人的生态系统!想参与吗?加入 Rust GameDev working group!
Sulis是一款角色扮演游戏(RPG),具有回合制、战略战斗、深度角色定制和引人入胜的故事情节。游戏从一开始,就以改造和定制的内容角度,进行考虑。当前支持 Windows 和 Linux 平台。
该游戏目前是完全可玩的,包括 the first act of Twin Expanse,一个经典游戏类似的老式 RPG 战役,如*巴尔杜尔之门*,但混合了现代元素,如*神界原罪*和*永恒之柱*。
核心游戏引擎以及战役仍在大力开发中。鼓励用户给出 bugs issues,功能请求或任何其他反馈。
特征:
GPLv3 许可证的源代码在 GitHub。Sulis 是用 Rust 编写的,脚本使用 Lua,大多数数据文件使用 YAML 格式。
_讨论:/r/rust_gamedev_
Veloren是一个开放的世界,开源的多人体素 RPG。游戏处于开发的早期阶段,但可以玩。
本月发布了 v0.4 版本以及玩家调查问卷发布.
10 月份的一些改进:
新视频:“Cities, dungeons and other structures” [/r/veloren].
完整的每周节目“本周在 Veloren…”:#36, #37, #38, #39.
还有,查看/r/veloren subreddit,相当活跃。
PF Sandbox by @rukai是一个平台 fighter 沙盒功能:游戏斗士和舞台编辑器,重播,和教学工具。
这个月,exporting and hot-reloading assets from blender, freelook camera, textures,和animations已添加到项目中。
Antorum是一种多人角色扮演游戏,玩家可以在游戏中,塑造自己的角色,并对抗岛上日益增长的威胁。游戏服务器是可信的,用 Rust 编写,而客户端是用 Unity/C#编写的。
这个月,@dooskington发表了一系列文章:
如7th devlog所诉,是“grubbnet箱子已发布。
它是用于编写联网应用程序和游戏的,轻量级 TCP 客户端/服务器。它提取套接字代码,跟踪连接,并通过一系列不错的事件将所有内容返回给开发人员。除了处理网络事件(例如,客户端连接和断开连接)外,处理传入数据包,也很容易在传入数据包队列上,获取迭代器。
这是 Antorum 游戏服务器在后台使用的同一网络箱子。
Ferris Fencing是一场现场锦标赛,其中由玩家编程的机器人,在RISC-V虚拟机相互打斗。这是一个CKB-VM展示会,这是用 Rust 编程语言编写的 RISC-V 指令集的简单实现。
Ferris Fencing 锦标赛尚未举行,但是 fencers 可能会开始建造他们的机器人,并在本地进行测试。说明在GitHub repo。
@oliviff已发布v0.0.3和v0.0.4 为Tennis Academy 更新:
piano-rs是使用 UDP 套接字的多人钢琴,可以在终端中,使用计算机键盘进行演奏。
_讨论:/r/rust_
“Will it dissolve?”是一款为“Open Jam 2019”准备的小型益智游戏,在那里您必须准备好关卡,以便将来自动转换和分解它。
Garden是一款以生长逼真的植物为中心的,即将推出的游戏。
自上次开发日志以来,进行了以下更改:
另外,创建了一个新的设计计划:
要了解较小的更新,屏幕截图和新的开发日志,请关注@logicsoup在 Twitter 上。
@aidanhs 分享一个小的EVE Aether Wars 后端优化成功案例:
为了使滴答频率翻倍至 30Hz,自上次我们底部的 @rustlang 层需要…两行错误修正和一些指标支持。Rust 中可靠软件的不错凭证!
Alex Butler继续完善他们的“Robo Instructus“ 游戏;1.12, 1.13, and 1.14 versions were released:非 ASCII 代码输入,新图标,错误修正和更好的翻译。
@ardawanizadi分享了短的文本报告和一个video demo,给出他们在本月的 OpenWorld 游戏项目中取得的进展:角色物理,武器系统,相机,动画系统,动态伤害系统。
“Pong Clone in Godot Using ‘gdnative’ Rust Bindings” – @you-win找不到使用godot-rust的完整游戏示例,所以他们做了自己的[source code]。
Ludum Dare是一项常规的游戏 jam 事件,在此期间,开发人员将根据社区提出的主题,在周末从头开始创建游戏。
LD45 的主题是“从无开始”。以下是一些用 Rust 制作的游戏:
体验正在进行的工作。
游戏在 2D 平台游戏的开发过程,并观察您的环境,随着进度的变化而变化……获得的越多,添加的功能就越多,包括险恶的敌人,破坏性的尖峰和自适应音乐。
一个简短而轻松的故事,讲述了人类被困思维的曲折通道。从遗忘的中间开始,如阴影一般,然后漫步于这个地方的每个房间,以寻找所有失去个性的碎片。 你能找到出路吗?
一无所有,甚至没有记忆,您会发现自己在奇怪的洞穴中操纵某种手工艺品。
查看 devlog 帖子:“Tools and tech for my game written in Rust”。
请参阅上面的“Working Title” LD45 游戏。
自上而下的 2D 射击游戏 “Grumpy Visitors” by @mvlabat成为官方的展示游戏。
阅读公告文章:“Showcase game #4: Grumpy Visitors”。
当前游戏功能:
这是一个迷你角色扮演/冒险游戏。目标?漫步在 Arrakis 的街道上,找到传说中的 Arrakis 巫师,它可以教你梦寐以求的奥术力量!
编译时间(完全和增量)是 Rust 的痛点之一。Azriel发布了有关优化Will的构建时间的 devlog。摘要:
在 45k LOC / 102 箱子的工作区中,将测试从成员箱子移到单个 workspace_tests 中,实现了以下改进:
- 在发布模式下的构建和测试时间,从 23 分钟减少到 13 分钟。
- 调试工件磁盘的使用从 20 G 减少到 7 G( 重新构建缩减 65%),或从 230 G 减少到 50 G(正在进行开发缩减 78%)。
_讨论:/r/rust_
来自一个有趣的推特 from VladZhukov0和一个/r/rust 跟帖 “rust 编译器真的很慢吗?”:
RUSTFLAGS="-C link-arg=-fuse-ld=lld" cargo run
,另一种方式您可以设置 rustflags
in your .cargo/config
根据您的项目结构,操作系统和工具链,这可能会几次加速增量编译。
# in your Cargo.toml
[profile.dev] debug = 0
现在,链接只需要大约一秒钟,而之前是 10 秒。
将我的平均编译时间从 10-20s(对于 gamedev 迭代有点疯狂)减少到 5-7s。想知道为什么我以前没有尝试过吗?🤔
另外,请参阅此 GameDev WG 跟踪器/投诉问题:#50 “Linking Time”。
^ 一个渲染红色圆圈的简单碎片 shader(临时语法)
这个月,@MaikKlein_DEV在The Khronos Group发表演讲,展会在慕尼黑举行,关于将 Rust 引入 GPU :这里是幻灯片。
RLSL(Rust Like Shading Language)是一种*实验性的*允许将 Rust 编译为SPIR-V的项目。
当前功能:
另外,请查看较早的帖子:
_讨论:/r/rust,hacker news_
^ Yatekii/sailor的屏幕截图 —— 基于 wgpu 的航行导航应用程序
gfx-rs v0.4 was released:主要变化,the last blog post有所描述,有关更改的详细列表,请参见CHANGELOG。
A twitter thread by @Tomaka关于为什么Vulkano的 command buffers(包裹Vulkan graphics API的 Rust 库)是如此复杂。
splines,一个箱子 by @phaazon 处理 spline 插值,刚发布于 3.0.0。
该版本增加了对笔触 Bézier 插值的支持,Bézier 插值是一种 Bézier 插值,但是允许您断开手柄 (instead of the regular 180° angle formed by the handle with the Interpolation::Bezier
mode).
spline-editor有一个补丁程序可以让您尝试 Bézier。
Mun是用于 Gamedev 的脚本语言,该脚本语言专注于 Rust 编写的快速迭代时间。
Mun 小组从 10 月开始启动mun-lang.org网站,Discord server和OpenCollective和处理更多受众的反馈。现在,团队正在朝 v0.1 版本迈进。
另外,请查看 /r/rust“The Mun programming language is going live!” post。
ultraviolet by @fu5ha一个箱子,通过充分利用SIMD,可以快速,基本地完成与计算机图形相关的线性代数。
<…> 为此,它使用“ SoA”(Structure of Arrays)架构,这样每个 Wec(wide-vec)实际上都包含 4 个 Vecs 的数据,并且将同时对所有 4 个 vector “通道”执行任何操作。这样做可能比“ AoS”(Array of Structs)布局快,就像当前所有 Rust 线性代数库一样,具体取决于您的工作量。但是,必须精心设计算法以充分利用此优势,并且说起来容易做起来难,尤其是在算法涉及大量分支的情况下。
_讨论:/r/rust_
主要更新:
Salva 是一个致力于流体模拟的新项目。salva 的目标是提供基于 CPU,基于粒子,2D 和 3D 的流体仿真库,这些库可用于动画等交互式和脱机应用程序。只要粒子数量保持较小,它就可以在某种程度上用于视频游戏(尤其是 2D 版本)。
看一个“流体模拟 salva 0.1 and nphysics 0.13”视频或在线玩玩2D要么3DWASM 演示。
nphysics 0.13 带来:对易碎的关节约束的一些支持,以及与 ECS 集成的更多改进。
@sebcrozet(当前所有 rustsim 项目的主要开发者)已被添加到 GitHub 赞助者 beta。
_讨论:/r/rust_
^“粒子”模拟的一些演示
cyclone-physics-rs by @heyrutvik一个新的 WIP 游戏物理引擎,基于“Game Physics Engine Development” book。
@cynic64 分享了demo 视频和一份关于他们 WIP 渲染引擎的报告。
它基于 Vulkano,由三个存储库组成:
The Roguelike Tutorial by @blackfuture现在包括将近 40 章,并将继续增长。
十月的一些更新:
所有章节都有指向 WASM 演示的链接。
另外,0.5 版rltk-rs 带来了后端之间的抽象,更好的编译时间,Web 版本的改进以及更多示例。
Nannou是一个创新的编码框架,旨在使艺术家可以轻松地用简单,快速,可靠的代码表达自己。
Nannou 获予了 10K USD in funding作为MOSS Mission Partners 的一部分。拟定的工作目标,旨在在未来三到四个月内改善 Rust 音频生态系统中,一些基础箱子的状态。
我们工作的关键领域将包括:
_讨论:/r/rust_
specs及其相关的资料库awesome-specs,hibitset和shred 被搬到 Amethyst organization [URLO]。
amethyst_physics v0.1.1 was released:现在可以获取 rigid body 接触事件。
@_AndreaCatania 发表了两个视频教程:
查看所有的会面 issues包括书面记录或加入下一 meeting。
只是过去有趣的 Rust 游戏开发链接。:)
Gravisim by @bcamp1是万有引力的模拟。它用牛顿定理之万有引力运行一个 n-body 物理模拟。
今天就是所有新闻,感谢您的阅读!
想要下一期新闻中提到的内容吗?Send us a pull request。随意发送有关您自己的项目的 PR!
另外,订阅@rust_gamedev on Twitter要么/r/rust_gamedev subreddit如果您想接收新消息!
[](https://rust-gamedev.github.io/posts/newsletter-003/)
紧跟 Rust 游戏开发工作组的最新进展。