#游戏引擎 #SDK #引擎 #游戏

amethyst

基于Rust编写的面向数据的数据驱动型游戏引擎

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游戏开发

Download history 990/week @ 2024-03-13 1312/week @ 2024-03-20 1331/week @ 2024-03-27 1066/week @ 2024-04-03 1003/week @ 2024-04-10 1235/week @ 2024-04-17 1341/week @ 2024-04-24 1059/week @ 2024-05-01 1090/week @ 2024-05-08 1054/week @ 2024-05-15 1129/week @ 2024-05-22 1228/week @ 2024-05-29 977/week @ 2024-06-05 790/week @ 2024-06-12 1012/week @ 2024-06-19 794/week @ 2024-06-26

每月下载量 3,782
用于 小于17个 <17 包

MIT/Apache

2.5MB
29K SLoC

Amethyst Game Engine

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

什么是Amethyst?

Amethyst是一个数据驱动型游戏引擎,旨在尽可能快和可配置。

原则

这些原则使Amethyst在游戏引擎领域中独特且具有竞争力

  • 大规模并行架构。
  • 由正确的实体-组件-系统模型提供动力。
  • 使用RON文件进行预制件和抽象脚本API进行快速原型设计。
  • 强烈关注鼓励重用和清洁接口。

为什么选择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 制作的大型、持续发展的游戏项目。

要查看更多示例,请参阅社区论坛上的 使用 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