编写文档
与您使用过的其他大型、快速发展的开源库一样,Bevy 的文档总能得到改进。这是一个非常有价值且易于传播的工作,需要一些指导
- 不准确的文档比没有文档更糟糕;优先修复损坏的文档。
- Bevy 非常不稳定;在着手新的主要文档项目之前,请在 Discord 或 GitHub 上与社区联系(创建一个关于特定缺失文档的问题是一个很好的规划方式),了解该功能的稳定性和即将进行的计划,以避免不必要的麻烦。
- 代码文档(文档示例和 examples 文件夹中的内容)更容易维护,因为编译器会在它出现问题时告诉我们。
- 内联文档应该具有技术性和针对性。如果更广泛的上下文有用,请链接相关的示例或其他解释。
- Bevy 手册托管在
bevy-website
仓库中,面向刚开始了解 Bevy(甚至 Rust!)的初学者。 - 已接受的 RFC 并非文档;它们仅用作已接受决定的记录。
文档来源
我们有两个主要位置存放文档:代码库中的内联文档和 Bevy 的网站。
内联文档
每个版本的内联文档都会发布到 docs.rs。
要查看 main
分支上的当前文档,在您贡献之前,您可以访问 dev-docs.bevyengine.org,该网站包含从 main
分支的每次提交构建的最新 API 参考。
要检出您所做的任何本地更改
- 克隆 Bevy Engine GitHub 仓库并进入该目录
git clone https://github.com/bevyengine/bevy.git
cd bevy
- 运行
cargo doc --open
您的网络浏览器应打开,您应该能够从那里访问 docs.rs
页面的本地版本。
文档测试作为正常 cargo test
套件的一部分运行。要仅运行文档测试,可以使用 cargo test --doc
。
网站
我们还认为 bevyengine.org 是我们核心文档的一部分。该网站有 自己的仓库,并且使用 Zola 静态网站引擎构建。根据我们的经验,它速度快、灵活且易于使用。
要检出您所做的任何本地更改
- 下载 Zola v0.19.2.
- 克隆 Bevy 的网站 GitHub 仓库并进入该目录
git clone https://github.com/bevyengine/bevy-website.git
cd bevy-website
- 使用
zola serve
启动 Zola 服务器。
本地服务器应启动,您应该能够从那里访问网站的本地版本。
学习材料结构
正如您可能已经注意到的,我们的入门学习材料分为两个主要部分
- 快速入门指南:“立即开始制作您的第一个游戏!”
- Bevy 手册:“了解 Bevy 的工作原理以及如何使用它”
这旨在迎合两种不同类型的学习者,而不会影响其中任何一方的体验
- 示例优先:这些用户希望直接参与,查看所有内容的实际操作,并尽快获得一个可运行的游戏。这些用户通常心中有一个想法,他们希望尽快开始原型设计。
- 定义优先:这些用户希望仔细建立一个 Bevy 的心理模型,在继续下一步之前彻底理解每个新概念。这些用户往往由好奇心驱动,或者旨在认真培养一项新技能。
重要的是,这些路径与学习者的经验水平无关!Bevy 旨在有意地接纳从未编程过的完全新手,以及来自其他引擎的专业人士。
初学者 | 专业人士 | |
---|---|---|
示例优先 | 热情的,希望创建一个他们喜欢的游戏的全新版本。 | 探索性的,希望深入了解 Bevy 在实践中的表现。 |
定义优先 | 好奇的,希望了解游戏制作的工作原理。 | 批判性的,希望了解 Bevy 独特的架构选择。 |
它们中的每一个都需要自己的互补学习路径,这些路径在它们进入 学习页面 时就会分支,以确保它们对 Bevy 的第一次体验符合他们的需求。
一旦用户完成了他们在所选路径中的入门学习材料,他们就可以开始创建自己的游戏,或者继续学习我们的高级示例,看看所有内容如何以现实的方式组合在一起。
Bevy 快速入门:示例优先路径
遵循示例优先路径的用户往往会采取以下路线
- 由于社交媒体或口碑,遇到 Bevy 主页。
- 导航到学习页面。
- 选择一个最相关的快速入门游戏。
- 完成该教程。
- 深入制作他们心中的游戏,并在遇到障碍时根据需要访问以下资源
- 官方示例。
- Bevy 手册。
- 社区教程和模板游戏。
- 各种社区支持论坛。
- 流媒体、视频和博客。
- 高级示例。
每个快速入门游戏都应该
- 假设没有关于 Bevy 的现有知识。
- 首先进行对我们要构建的内容的高级解释。
- 首先介绍带注释的代码,然后解释每个关键术语的含义,以及它们出现的时间。
- 被分解成可编译的可玩部分;指南的每一页一个。
- 逐步重构代码以添加更多功能。
- 以一系列建议(以及适当的链接)结束,说明您可以如何以有趣的方式扩展游戏。
此路径应优先考虑
- 快速获得乐趣。
- 功能性、足够好的解释,这些解释与他们眼前的代码相关。
- 快速入门游戏与他们想要制作的游戏类型的相关性。
- 高资产质量。
- 轻松地使用他们自己的调整来扩展快速入门游戏。
- 解释如何通过文档、社区帮助和提交问题来摆脱困境。
Bevy 手册:定义优先路径
遵循定义优先路径的用户往往会采取以下路线
- 由于社交媒体或口碑,遇到 Bevy 主页。
- 导航到学习页面。
- 选择Bevy 手册。
- 按顺序阅读整本书。
- 一旦他们认为自己对引擎有了足够的了解,他们就会开始制作自己的游戏,通常是跳到示例优先路径上。
- 在探索时,他们还会浏览
- 源代码。
- docs.rs
- 贡献指南、GitHub 问题和 Pull Requests。
- 发行说明。
- Discord 上的引擎开发频道。
- 高级示例,看看所有内容如何组合在一起。
Bevy 手册的每一章都应该
- 有一个明确的主题,并对它将涵盖的子主题以及它们如何组合在一起进行高级概述。
- 被分解成几个部分/页面,以关注详细的主题。
- 这些应该有简单、最小的示例,解释该功能是如何工作的。
- 链接到快速入门指南的相应部分,这些部分以更连贯的方式演示了正在教授的想法。
此路径应优先考虑
- 清晰、彻底的解释。
- 以有条理的方式一次仔细介绍一个概念。
- 将概念在上下文中相互关联。
- 解释事物工作原理的技术细节,但仅在明确标记的旁注中。
- 传达所有支持 Bevy 生产力的开发实践
- 如何设置您的开发环境。
- 代码组织。
- 设计模式和最佳实践。
- 测试、基准测试和调试。
- 为 Bevy 本身做出贡献。
- 链接到进一步阅读,例如官方示例、
docs.rs
和(非常谨慎地)源代码链接。
贡献者风格指南
在为 Bevy 手册、快速入门指南和其他相关学习材料编写和审查内容时,请尝试遵循以下指南
写作
- 使用清晰、简单的语言。
- 喜欢短句子。删除多余的单词。
- 在定义新词汇时,使用粗体。
- 在它们被引入后尽快定义它们。
- 确保您的语法和拼写正确。
- 避免成语和俚语。
- 以平易近人的语气直接与读者交谈。使用“我们”和“您”代词。
- 创建特定且命名的角色以说明一个观点可能很有用。
- 如果您这样做,请为他们选择一套代词并坚持下去。
- 否则,使用“他们/她们”第三人称代词来指代读者或其他人。
- 保持幽默。
- 避免不雅或冒犯性的幽默。
- 注意不要过度使用内部笑话或文化参考。
- 不要拖延你的笑话:这不是观众来这里阅读的内容。
组织
- 小心地将您的作品组织成单独的页面、标题、段落和代码块。
- 清楚地表明您何时正在技术深度解释一个概念,以便可以跳过它。
- 使用列表、编号列表和子列表以小块方式呈现信息。
- 按编号参考这些项目!
- 提供大量的链接,但请确保通过上下文可以明显地知道您要链接的内容。
- 当您提到它们时,链接到书籍/示例/网页的其他部分。
- 始终链接到您能找到的最具体的位置,无论是页面上的一个部分还是结构上的一个方法。
- 在链接到 Bevy 文档和源代码时使用
latest
标签,这样每次版本更新时它都不会过时。 - 在链接到详细的解释或讨论时,除了提供链接之外,还要总结最重要的要点。
技术
所有示例都必须能够编译和运行。
优先使用与游戏相关的描述性示例和变量名,而不是像
MyEvent
这样的通用名称。始终避免使用foo
这样的无意义名称。将代码分成块并添加注释或解释性文本是一种良好的做法,但您需要在最后链接到一个连贯且可复制的整体。
示例必须通过 Bevy 的标准
clippy
lint 检查。示例的精细程度应与您要传达的观点相符。
- 如果您要演示一个新功能,请尽可能只展示最基本的语法。
- 当尝试解释如何制作游戏时,请组织和完善您的代码以展示最佳实践。
- 缺乏精细程度应该有其目的:没有充分理由不要展示不良或草率的实践。
- 展示如何(以及为什么!)重构代码是一个非常强大的教学工具。
在每个示例中保持一致的风格(例如,for 循环与 map)。
如果您需要提供仅对部分受众有用的建议(例如,如何处理边缘情况或支持特定平台),请在明确标记的旁注(例如,调用框)或列表中进行。
示例不应使用或依赖于第三方插件。这些插件可能适合在示例末尾的“下一步”部分中链接。
- 第三方板条箱应限于最基本的一些,例如
rand
。
- 第三方板条箱应限于最基本的一些,例如
要验证本地代码更改,您可以从任何位置运行
./learning-code-examples/validate_examples.sh
,或者从项目的根目录运行cd learning-code-examples && cargo check --examples && cargo clippy --examples && cargo fmt --check
。要确保您的基于 Web 的文件(html、markdown)格式正确,请运行以下命令
markdownlint -f -c .github/linters/.markdown-lint.yml . djlint typos
在您本地 Bevy 网站存储库的根目录中。
这将格式化 markdown 文件并告诉您 HTML 文件中的问题。为了运行该命令,您应该安装
markdownlint-cli
、djlint
和typos-cli
。有关安装说明,请参阅:https://github.com/igorshubovych/markdownlint-cli、https://www.djlint.com/docs/getting-started/ 和 https://github.com/crate-ci/typos?tab=readme-ov-file#install。要引用 Rust API 文档,您可以使用 markdown 的引用式链接,如下所示:
HashMap
[`HashMap`] [`HashMap`]: https://doc.rust-lang.net.cn/std/collections/struct.HashMap.html