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 游戏开发
664次每月下载
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种字体,或使用自己的
- 输入处理(键盘、鼠标)
- 计时器
- 自定义游戏状态
- 窗口定制
课程
如果您喜欢生锈引擎,请在我GitHub或Patreon上赞助我,或者选择以下课程之一!
以下课程在其课程中使用生锈引擎
- Udemy上的Ultimate Rust 2:中级概念(Ultimate Rust快速入门课程的续集)
- 每季度大约一次,在O'Reilly在线上现场进行的Rust在3周内。
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
运行您的游戏!
学生展示
展示您使用 Rusty Engine 制做的项目!学习 Rust 可以很有趣。😄 只需发送给我一个链接,我就会将其添加到列表中!
贡献
所有软件贡献均假定在 MIT/Apache-2 下双许可。所有资产贡献必须在与软件许可兼容的许可下进行,并在同一目录中的 README.md
文件中说明其许可。
资产许可
此游戏引擎中包含的所有资产都在同一目录中的 README.md
文件中描述并链接了适当的许可。在大多数情况下,许可为 CC0 1.0 Universal—这意味着您可以对该资产做任何您想做的事情。
一个值得注意的例外是一些音乐文件,它们处于不同的许可之下,并且在分发时必须满足特定的归因要求才能合法使用。有关更多信息,请参阅此 README.md
文件。
软件许可
在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
请参阅license/APACHE 和 license/MIT。
依赖项
~50–87MB
~1.5M SLoC