6个版本
| 0.20.5 | 2024年6月18日 |
|---|---|
| 0.20.4 | 2024年6月13日 |
| 0.20.2 | 2024年5月25日 |
在 值格式化 中排名第 171
每月下载量 48
16KB
383 行
AGB
适用于Game Boy Advance的Rust

这是一个使用Rust编程语言在Game Boy Advance上制作游戏的库。该库的主要重点是提供一个抽象层,允许您开发利用GBA功能的游戏,而无需深入了解其底层实现。
agb提供以下功能
- 简单的构建过程,依赖项最少
- 内置导入精灵、背景、音乐和音效
- 高性能音频混音器和可选的跟踪器,可以播放
.xm文件 - 易于使用的精灵和瓦片背景使用
- 全局分配器,允许使用
core和alloc
最新版本的文档可以在docs.rs上找到。
入门
入门agb的最佳方式是使用模板,无论是在此存储库中的template目录中,还是在模板存储库中进行克隆。
完成此操作后,您将在模板中的README中找到进一步说明。
项目网站上有一个(进行中的)教程,您可以在这里找到项目网站。
帮助/支持
如果您需要任何帮助,请访问讨论页面,这是从创作者和贡献者那里获得帮助的好地方。
您可以在问答分类中创建新的讨论,我们将尽力帮助您!
为agb本身做出贡献
为了为agb本身做出贡献,你需要在仅使用此库编写Game Boy Advance游戏所需工具的基础上,额外安装一些工具
- 最近的rustup,请查看Rust网站获取您操作系统的说明。
- 您可以使用以下命令更新rustup:
rustup self update,或者如果您以这种方式获取了rustup,也可以使用您的包管理器。
- 您可以使用以下命令更新rustup:
- libelf和cmake
- Debian及其衍生版本:
sudo apt install libelf-dev cmake - Arch Linux及其衍生版本:
pacman -S libelf cmake
- Debian及其衍生版本:
- mgba-test-runner
- 在此目录内运行以下命令:
cargo install --path emulator/test-runner
- 在此目录内运行以下命令:
- 'just'构建工具
- 使用以下命令安装:
cargo install just
- 使用以下命令安装:
- mdbook
- 使用以下命令安装:
cargo install mdbook
- 使用以下命令安装:
- miri
- 部分不安全代码使用miri进行测试,安装方法为:
rustup component add miri
- 部分不安全代码使用miri进行测试,安装方法为:
安装完所有这些后,您应该可以通过运行以下命令来运行agb的完整构建:
just ci
请注意,在您创建PR之前,请先提交一个issue,这样我们可以讨论您想要更改的内容。
仓库结构
agb-debug - 一个可以用来解码agb堆栈跟踪的工具
agb-fixnum - 一个简单的定点数存储,因为GBA没有浮点单元,因此需要高性能的十进制数
agb-gbafix - 一个gbafix工具的纯种重实现,它接受elf文件而不是二进制文件
agb-hashmap - 一个为在Game Boy Advance上使用而优化的no_std hashmap实现
agb-image-converter - 一个crate,可以将普通格式的图像转换为Game Boy Advance支持的格式
agb-macros - 一些必须放在不同crate中的杂项proc-macros
agb-sound-converter - 一个crate,可以将wav文件转换为Game Boy Advance支持的格式
agb - 主库代码
agb/examples - 针对单个功能的简单示例,您可以使用just run-example <example-name>运行这些示例
book - 指导和网站源代码
book/games - 作为教程的一部分制作的游戏
emulator - Rust对mgba模拟器的绑定,以及您可以使用来运行单元测试的测试运行器
examples - 游戏节期间制作的大型的完整游戏示例
template - template仓库的源代码
tools - 用于开发agb本身的杂项工具
tracker - 组成agb-tracker库的crate,允许播放tracker文件
website - 网站的源码
稳定性
当 agb 处于 1.0 版本之前时,我们遵循半语义版本控制方案以确保小版本间的兼容性。具体来说,任何 0.x.y 版本都保证与另一个 0.x.z 版本兼容,前提是 y > z,但小版本间可能会有破坏性更改(即第二位数字的更改,例如从 0.1 到 0.2)。
一旦 agb 达到 1.0 版本,我们将过渡到更强的语义版本控制,这意味着任何破坏性更改都将通过主版本的递增来表示(即第一位数字,例如从 1.0 到 2.0)。
致谢
agb 的实现离不开以下(非详尽)项目组的帮助
- rust-console 的杰出工作,使得这一切成为可能
- 用于加载 aseprite 文件的 asefile 库
- 提供高性能替代方法的 agbabi
- 为模拟器内置的所有有用的调试/开发工具提供支持的 mgba
许可证
agb 及其所有子库均在 MPL 2.0 版本下发布。请参阅 LICENSE 文件中的完整许可证文本。
agb 包含来自 agbabi 的代码子集,该代码在 zlib 风格的许可证下发布,具体细节可以在 agb/src/agbabi 下找到。
模板在 CC0 许可下发布,允许您进行任何更改。
agb 标志在 Creative Commons Attribution-ShareAlike 4.0 许可下发布
示例中使用的音乐由 Josh Woodward 提供,并在 Creative Commons Attribution 4.0 许可下发布
依赖
~5–15MB
~162K SLoC