8个版本
0.20.5 | 2024年6月18日 |
---|---|
0.20.4 | 2024年6月13日 |
0.20.2 | 2024年5月25日 |
0.19.1 | 2024年3月6日 |
1062 在 音频
每月100次下载
用于 agb_tracker
21KB
414 行
AGB
Game Boy Advance的Rust
这是一个使用Rust编程语言在Game Boy Advance上制作游戏的库。库的主要重点是提供一种抽象,使您可以在不需要深入了解其底层实现的情况下开发利用GBA功能的游戏。
agb提供以下功能
- 简单的构建过程,依赖性最少
- 内置导入精灵、背景、音乐和音效
- 高性能音频混音器和可选的tracker,可播放
.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
- 一个将图像转换为Game Boy Advance支持的格式的crate
agb-macros
- 一些必须放在不同crate中的杂项proc宏
agb-sound-converter
- 一个将wav文件转换为Game Boy Advance支持的格式的crate
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 crate
- agbabi 为常见方法提供高性能替代方案
- mgba 为仿真器内置的有用调试/开发者工具
许可证
agb 及其所有子 crate 均根据 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 发布
依赖项
~0.8–1.4MB
~30K SLoC