13 个版本 (破坏性更新)

0.15.3 2020年8月23日
0.10.1 2020年8月17日
0.10.0 2020年3月23日
0.8.1 2019年10月4日
0.1.0 2017年12月30日

#39#gltf

Download history 4/week @ 2023-11-27 3/week @ 2023-12-11 6/week @ 2023-12-18 2/week @ 2023-12-25 4/week @ 2024-01-08 58/week @ 2024-02-19 35/week @ 2024-02-26 29/week @ 2024-03-04 50/week @ 2024-03-11

每月172 次下载
用于 amethyst

MIT/Apache

800KB
18K SLoC

Amethyst Game Engine

Build Status Crates.io docs page MIT/Apache Join us on Discord Community forum Reddit Code coverage Lines of Code

非活跃维护!

Inactively Maintained

Amethyst 游戏引擎已停止开发。请阅读此帖子了解详情: https://amethyst.rs/posts/amethyst--starting-fresh

对于 0.15.3 及更早版本,必须使用以下 Rust 版本才能编译成功。

rustup覆盖设置 1.47

什么是 Amethyst?

Amethyst 是一个数据驱动且面向数据的游戏引擎,旨在快速且尽可能配置灵活。

原则

这些原则使 Amethyst 在游戏引擎的世界中独树一帜,具有竞争力

  • 大规模并行架构。
  • 由正确的 ECS 模型驱动。
  • 使用 RON 文件进行预制件和抽象脚本 API 的快速原型设计。
  • 强烈关注鼓励重用和清晰的接口。

为什么选择 Amethyst?

极端多线程

Amethyst 基于一个非常强大的并行 ECS,称为 Specs。这使得使用 Amethyst 构建的游戏能够最大限度地利用可用处理能力,以尽可能平稳和快速地运行,无需多线程编程的烦恼。

简洁

按照设计,Amethyst 引擎鼓励用户编写简洁且可重用的代码来处理行为和数据结构。这使得引擎用户可以轻松共享有用的组件,从而减少开发时间和成本。

使用 ECS 架构,游戏的代码可以清晰地区分数据和行为,即使游戏在运行于强大的 64 核处理器上,也容易理解其运行原理。

社区

  • Discord - 公告、帮助、有用信息、一般讨论。

特性

请访问特性页面,了解Amethyst提供的特性列表。

导航

使用说明

虽然有时引擎难以使用,但我们制作了大量文档,这些文档会教你如何舒适地使用Amethyst。

如果你不理解文档中的某个部分,请告诉我们。加入我们的Discord或打开一个问题;我们总是乐于提供帮助!

入门指南

开始之前

此存储库使用Git LFS处理示例中的一些文件。如果你打算运行示例,请在克隆之前确保你的系统中已安装LFS。你可以在Git LFS主页下载它并阅读安装说明。

示例

要编译任何示例,请运行

$ cargo run -p name_of_example

所有可用的示例都列在示例目录下。

要查看一个完整的“Hello World”教程,请查看书中入门指南章节。

展示游戏

我们的官方展示游戏展示了使用Amethyst制作的更大、持续开发的游戏项目。

更多示例,请参阅社区论坛上的用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 libfontconfig1-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 = 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

并导航到http://localhost:3000。文本本身可以在book/html/index.html中找到。有关更多信息,请参阅mdBook项目

要本地生成API文档,请执行以下操作

$ cargo doc

API参考可以在target/doc/amethyst/index.html中找到。

问题/帮助

Amethyst仅支持Rust的最新稳定版本。使用此项目时,请自行承担使用nightly和beta通道的风险。

如果你有疑问,请在提问之前查看常见问题解答。很可能会发现,你问题的解决方案已经存在那里。如果你仍然需要帮助,请随时在我们的Discord服务器上提问。

您可能还想查看的其他地方包括 r/rust_gamedev#rust-gamedev IRC

贡献

注意:与 Amethyst 项目的任何互动都受我们 行为准则 的约束。

Amethyst 是一个基于社区的开放项目,欢迎任何人的贡献。如果您有兴趣帮忙,请在开始之前阅读 贡献指南

我们有一个 良好入门问题 类别,其中包含所有无需深入了解 Rust 或 Amethyst 也能提出的 issue 或功能请求。处理这些问题是学习的好方法,如果不是最好的话。

如果您认为自己还没有准备好编写代码,您仍然可以通过审阅其他社区成员编写的代码来做出贡献。代码审查确保合并到 Amethyst 中的代码质量尽可能高。可供审阅的拉取请求可以在 这里 找到。

如果我们没有待审的 PR 或良好的入门 issue(那将是一个好事),您可以随时查阅我们的 问题跟踪器

支持者

感谢所有支持者!🙏 成为支持者

赞助商

Amethyst 由以下组织支持

许可

Amethyst 是免费和开源软件,根据 MIT 许可证和 Apache 许可证 2.0 分发。

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的旨在包含在本作品中的任何贡献,都将按照上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

一个用于将 GLTF 格式场景加载到 Amethyst 中的 crate

依赖项

~43MB
~670K SLoC