28个版本 (14个重大更改)
0.15.3 | 2020年8月23日 |
---|---|
0.15.0 | 2020年3月23日 |
0.13.2 | 2019年10月4日 |
0.12.0 | 2019年7月30日 |
0.3.0 | 2016年3月31日 |
#1999 在 游戏开发
每月下载量 3,782
用于 小于17个 <17 包
2.5MB
29K SLoC
什么是Amethyst?
Amethyst是一个数据驱动型游戏引擎,旨在尽可能快和可配置。
原则
这些原则使Amethyst在游戏引擎领域中独特且具有竞争力
为什么选择Amethyst?
极强多线程
Amethyst基于非常强大的并行ECS模型,称为Specs。这使得使用Amethyst构建的游戏能够最大限度地利用可用处理能力,以尽可能平滑和快速地运行,而无需处理多线程编程的难题。
简洁
设计上,Amethyst引擎鼓励用户为行为和数据结构编写简洁且可重用的代码。这使得引擎用户可以轻松共享有用的组件,从而减少开发时间和成本。
使用ECS架构,游戏代码可以干净地分为数据和行为,即使在运行在拥有大量64核心处理器的游戏中,也易于理解。
社区
虽然我们可能还没有充满功能(但还在继续!),但我们所有人都坚信,随着我们不断前进,Amethyst的社区导向方面将蓬勃发展!
功能
请访问功能页面,了解Amethyst提供的功能列表。
导航
使用方法
虽然该引擎有时难以使用,但我们制作了大量文档,将教授您使用Amethyst所需的所有知识。
如果您不理解文档的某个部分,请告诉我们。加入我们的 Discord 或创建一个问题;我们总是乐于提供帮助!
入门指南
在开始之前
此存储库使用 Git LFS 处理一些示例中使用的文件。如果您打算运行示例,请在克隆之前确保您的系统中已安装 LFS。您可以在 Git LFS 主页 下载它并阅读安装说明。
示例
要编译任何示例,请运行
$ cargo run --example name_of_example
所有可用的示例都列在 examples 目录下。
要查看完整的“Hello World”教程,请查看书籍中的 入门指南 章节。
展示游戏
我们的官方展示游戏展示了使用 Amethyst 制作的大型、持续发展的游戏项目。
- Evoli - 3D,生态系统模拟器
- Space Menace - 2D,动作平台游戏
要查看更多示例,请参阅社区论坛上的 使用 Amethyst 制作的游戏 主题,那里有许多灵感来源。
依赖关系
如果您在 Linux 上编译,请确保安装以下依赖项。
Arch Linux
# pacman -Syu grep gcc pkgconf openssl alsa-lib cmake make python3 freetype2 awk libxcb
Debian/Ubuntu
# apt install gcc pkg-config openssl libasound2-dev cmake build-essential python3 libfreetype6-dev libexpat1-dev libxcb-composite0-dev libssl-dev libx11-dev
Fedora
# dnf install pkgconfig gcc openssl-devel alsa-lib-devel cmake make gcc-c++ freetype-devel expat-devel libxcb-devel libX11-devel
openSUSE
# zypper install gcc pkg-config libopenssl-devel alsa-devel cmake gcc-c++ python3 freetype2-devel libexpat-devel libxcb-devel
Nix/NixOS
在您的项目根目录中,创建一个包含以下内容的文件 shell.nix
let
mozilla = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
nixpkgs = import <nixpkgs> { overlays = [ mozilla ]; };
in
with nixpkgs;
mkShell {
buildInputs = [
alsaLib
cmake
freetype
latest.rustChannels.stable.rust
expat
openssl
pkgconfig
python3
vulkan-validation-layers
xlibs.libX11
];
APPEND_LIBRARY_PATH = stdenv.lib.makeLibraryPath [
vulkan-loader
xlibs.libXcursor
xlibs.libXi
xlibs.libXrandr
];
shellHook = ''
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPEND_LIBRARY_PATH"
'';
}
其他
请参阅您特定发行版的安装过程以获取等效依赖项。
请注意,您需要安装一个功能正常的图形驱动程序。如果您在尝试运行示例时遇到渲染器无法创建上下文的恐慌,则可能是驱动程序安装错误。
构建文档
您可以使用以下命令在本地构建书籍:
$ cargo install mdbook
$ mdbook build book
如果您正在积极编辑书籍,则最简单的方法是运行
$ mdbook serve book
并导航到 https://127.0.0.1:3000
。文本本身位于 book/html/index.html
中。有关更多信息,请参阅 mdBook 项目。
要本地生成 API 文档,请执行以下操作:
$ cargo doc
API 参考位于 target/doc/amethyst/index.html
。
问题/帮助
Amethyst 仅支持 Rust 的最新稳定版本。使用此项目时使用夜间和 beta 通道的风险自负。
如果您有问题,请在提问之前查看 常见问题解答。很可能会在那里找到您问题的解决方案。如果您仍然需要帮助,请随时在我们的 Discord 服务器 上提问。
您可能还想查看的地方包括 r/rust_gamedev 和 #rust-gamedev IRC。
贡献
注意:与 Amethyst 项目的任何互动都受我们 行为准则 的约束。
Amethyst 是一个基于社区的项目,欢迎任何人的贡献。如果您有兴趣帮忙,请在开始之前阅读 贡献指南。
我们有一个 优秀的入门问题 类别,它将所有可以无需深入了解 Rust 或 Amethyst 的问题或功能请求分组在一起。处理这些问题是学习的好方法,如果不是最好的方法。
如果您认为您还没有准备好编码,您仍然可以通过审查社区其他成员编写的代码来做出贡献。代码审查确保合并到Amethyst的代码尽可能高质量。可以在此处找到可供审查的拉取请求:这里。
如果由于某些原因我们没有需要审查的任何开放PR或良好的首次问题(那将是好事),请随时咨询我们的问题跟踪器。
赞助者
感谢所有我们的赞助者!🙏 成为赞助者
赞助商
Amethyst由以下赞助商支持
许可
Amethyst是免费和开源软件,根据MIT许可证和Apache许可证2.0条款分发。MIT许可证 和 Apache许可证2.0。
除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献都应双重许可,如上所述,不附加任何额外的条款或条件。
依赖关系
~36–58MB
~884K SLoC