34个版本 (21个稳定版)

6.0.0 2023年12月3日
5.2.1 2022年11月15日
5.2.0 2022年9月13日
5.1.0 2022年6月18日
0.4.0 2020年3月27日

#54 in 游戏开发

Download history 118/week @ 2024-04-22 82/week @ 2024-04-29 77/week @ 2024-05-06 91/week @ 2024-05-13 121/week @ 2024-05-20 141/week @ 2024-05-27 90/week @ 2024-06-03 55/week @ 2024-06-10 106/week @ 2024-06-17 72/week @ 2024-06-24 143/week @ 2024-07-01 33/week @ 2024-07-08 72/week @ 2024-07-15 85/week @ 2024-07-22 426/week @ 2024-07-29 70/week @ 2024-08-05

664次每月下载

MIT/Apache

95KB
1.5K SLoC

生锈引擎

生锈引擎是一个简单的2D游戏引擎,适合正在学习Rust的人。使用简单的Rust代码创建简单的游戏原型,无需学习复杂游戏引擎概念!它支持macOS、Linux和Windows。Rusty Engine是在Bevy之上简化包装的,我鼓励您直接使用Bevy以满足更严肃的游戏引擎需求。

问题错误报告和贡献非常受欢迎!

https://user-images.githubusercontent.com/5838512/122880590-651bae00-d2f7-11eb-8e5c-4810b3777828.mp4

文档

功能

  • 包含资产包(精灵、音乐、音效和字体)
  • 精灵(2D图像)
    • 使用包含的资产包中的精灵,或使用自己的
    • 带有自定义碰撞器的碰撞检测
  • 音频(音乐和音效)
    • 循环音乐
    • 多声道音效
  • 文本
    • 包含2种字体,或使用自己的
  • 输入处理(键盘、鼠标)
  • 计时器
  • 自定义游戏状态
  • 窗口定制

课程

如果您喜欢生锈引擎,请在我GitHubPatreon上赞助我,或者选择以下课程之一!

以下课程在其课程中使用生锈引擎

Linux依赖项(包括WSL 2)

如果您使用Linux或Windows Subsystem for Linux 2,请访问Bevy的安装Linux依赖项页面,并按照说明安装所需的依赖项。

快速入门

您必须单独下载资源!!!

这里有三种不同的方式来下载资源(选择任何一种——最终结果应该相同)

  • 克隆 rusty_engine 仓库,并将 assets/ 目录复制/移动到您的项目中
  • 下载 zip 文件tarball,解压它,并将 assets/ 目录复制/移动到您的项目中。
  • (我最喜欢的!) 在兼容 POSIX 的 shell 中,在您的项目目录下运行此命令
curl -L https://github.com/CleanCut/rusty_engine/archive/refs/heads/main.tar.gz | tar -zxv --strip-components=1 rusty_engine-main/assets

rusty_engine 添加为依赖项

# In your [dependencies] section of Cargo.toml
rusty_engine = "6.0.0"

编写您的游戏!

// in src/main.rs
 use rusty_engine::prelude::*;

 // Define a struct to hold custom data for your game (it can be a lot more complicated than this one!)
 #[derive(Resource)]
 struct GameState {
     health: i32,
 }

 fn main() {
     // Create a game
     let mut game = Game::new();
     // Set up your game. `Game` exposes all of the methods and fields of `Engine`.
     let sprite = game.add_sprite("player", SpritePreset::RacingCarBlue);
     sprite.scale = 2.0;
     game.audio_manager.play_music(MusicPreset::Classy8Bit, 0.1);
     // Add one or more functions with logic for your game. When the game is run, the logic
     // functions will run in the order they were added.
     game.add_logic(game_logic);
     // Run the game, with an initial state
     let initial_game_state = GameState { health: 100 };
     game.run(initial_game_state);
 }

 // Your game logic functions can be named anything, but the first parameter is always a
 // `&mut Engine`, and the second parameter is a mutable reference to your custom game
 // state struct (`&mut GameState` in this case).
 //
 // This function will be run once each frame.
 fn game_logic(engine: &mut Engine, game_state: &mut GameState) {
     // The `Engine` contains all sorts of built-in goodies.
     // Get access to the player sprite...
     let player = engine.sprites.get_mut("player").unwrap();
     // Rotate the player...
     player.rotation += std::f32::consts::PI * engine.delta_f32;
     // Damage the player if it is out of bounds...
     if player.translation.x > 100.0 {
         game_state.health -= 1;
     }
 }

使用 cargo run --release 运行您的游戏!

example screenshot

请参阅教程游戏场景代码示例以及API 文档

学生展示

展示您使用 Rusty Engine 制做的项目!学习 Rust 可以很有趣。😄 只需发送给我一个链接,我就会将其添加到列表中!

贡献

所有软件贡献均假定在 MIT/Apache-2 下双许可。所有资产贡献必须在与软件许可兼容的许可下进行,并在同一目录中的 README.md 文件中说明其许可。

资产许可

此游戏引擎中包含的所有资产都在同一目录中的 README.md 文件中描述并链接了适当的许可。在大多数情况下,许可为 CC0 1.0 Universal—这意味着您可以对该资产做任何您想做的事情。

一个值得注意的例外是一些音乐文件,它们处于不同的许可之下,并且在分发时必须满足特定的归因要求才能合法使用。有关更多信息,请参阅README.md 文件

软件许可

在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

请参阅license/APACHElicense/MIT

依赖项

~50–87MB
~1.5M SLoC