13个版本 (4个破坏性版本)
0.20.5 | 2024年6月18日 |
---|---|
0.20.4 | 2024年6月13日 |
0.20.2 | 2024年5月25日 |
0.19.1 | 2024年3月6日 |
0.16.0 | 2023年10月3日 |
#959 in 过程宏
每月104次下载
在agb_tracker中使用
27KB
506 行
AGB
为Game Boy Advance的Rust
这是一个用于在Game Boy Advance上使用Rust编程语言制作游戏的库。该库的主要重点是提供一个抽象,允许您开发能够利用GBA功能的游戏,而无需深入了解其底层实现。
agb提供以下功能
- 简单的构建过程,依赖性最小
- 内置导入精灵、背景、音乐和音效
- 高性能音频混合器和可选的跟踪器,可以播放
.xm
文件 - 易于使用的精灵和瓦片背景使用
- 全局分配器,允许使用
core
和alloc
最新版本的文档可以在docs.rs上找到。
入门
开始使用agb的最佳方式是使用模板,无论是此存储库中的template
目录内的模板,还是克隆模板存储库。
完成此操作后,您将在模板的README中找到进一步的说明。
有一个(正在进行中)的教程,您可以在项目网站上找到。
帮助/支持
如果您需要任何帮助,请访问讨论页面,那里是创作者和贡献者提供帮助的好地方。
请随意在“问答”类别中创建新的讨论,我们将尽力帮助您!
为agb本身做出贡献
为了为agb本身做出贡献,您将需要一些额外的工具,这些工具是您使用此库仅编写Game Boy Advance游戏所需工具之外的
- 请参阅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之前,请先提交一个问题,以便我们可以讨论您想要更改的内容。
仓库结构
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
- 基本示例,通常针对1个功能,您可以使用just run-example <example-name>
来运行这些示例
book
- 教程和网站的源代码
book/games
- 作为教程的一部分制作的游戏
emulator
- Rust绑定mgba模拟器以及您可以用来运行单元测试的测试运行器
examples
- 在游戏节拍期间制作的大游戏示例
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 的出色工作,使这一切成为可能
- asefile crate,用于加载 aseprite 文件
- 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 许可下
依赖项
~4MB
~84K SLoC