15 个版本 (6 个重大更新)
0.20.5 | 2024 年 6 月 18 日 |
---|---|
0.20.2 | 2024 年 5 月 25 日 |
0.19.1 | 2024 年 3 月 6 日 |
0.18.0 | 2023 年 10 月 31 日 |
0.16.0 | 2023 年 7 月 18 日 |
#71 在 模拟器
每月 119 次下载
11KB
225 行
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
- 一个针对游戏男孩增强型 (GBA) 优化的 no_std hashmap 实现
agb-image-converter
- 一个可以将图像从普通格式转换为 GBA 支持格式的 crate
agb-macros
- 必须放在不同 crate 中的各种 proc-macros
agb-sound-converter
- 一个可以将 wav 文件转换为 GBA 支持格式的 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项目的惊人工作,使得这一切成为可能
- 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许可发布
依赖项
~2.5MB
~44K SLoC