2个版本
0.3.1 | 2023年5月31日 |
---|---|
0.3.0 | 2023年5月22日 |
0.2.9 |
|
0.2.8 |
|
0.1.6 |
|
#1073 in 游戏开发
87 每月下载量
46KB
974 行
Ellipsoid
Ellipsoid是一个专为以简单高效的方式创建2D游戏而设计的Rust图形库。它提供了一系列功能,包括窗口管理、渲染、输入处理、形状操作和变换。
与其他Rust框架(如ggez
或macroquad
)相比,ellipsoid
在形状创建和操作方面表现出色。此外,通过enums
内置了纹理支持,这比使用例如HashMap
要安全得多。
如果您计划在这个框架中构建游戏,您应该预计会遇到障碍,并且在某些时候您可能需要分叉或为项目做出贡献,因为一些相关功能仍然缺失。
入门
要开始使用Ellipsoid库,将其作为依赖项添加到您的Cargo.toml
中,同时添加您喜欢的异步运行时和strum。
然后只需从ellipsoid::prelude
模块导入所有重要内容。
[dependencies]
ellipsoid = "0.3"
async-std = "1.12.0"
strum = { version = "0.24.1", features = ["derive"] }
use ellipsoid::prelude::*;
主要组件
App特质
App
特质由主应用程序结构体实现。此特质提供了创建应用程序新实例、处理输入事件、更新应用程序状态和绘制几何图形的方法。
图形
Graphics
结构体负责处理渲染和窗口。它允许用户添加自定义几何图形并将其绘制到屏幕上。
形状
Shape
是一个表示各种几何形状的结构体。它提供了创建圆形、正方形、三角形、线和多边形的方法,以及应用变换和设置属性(如纹理、颜色和z索引)的功能。
GTransform
GTransform
是一个用于对形状应用变换的结构体。它支持平移、旋转和缩放操作,并且可以链接以应用多个变换。
颜色
Color
结构体表示颜色,可以应用于各种形状。
示例:创建一个简单的应用程序
这是一个创建带有自定义形状的简单窗口的最小示例
-
lib.rs
#![feature(async_fn_in_trait)] use ellipsoid::prelude::*; use strum::{Display, EnumIter}; struct MyApp { graphics: Graphics<MyTextures>, rotation: f32, } #[derive(Debug, Clone, Copy, EnumIter, Display, Default)] #[strum(serialize_all = "snake_case")] enum MyTextures { #[default] White, } impl Into<u32> for MyTextures { fn into(self) -> u32 { self as u32 } } impl Textures for MyTextures {} impl App<MyTextures> for MyApp { async fn new(window: winit::window::Window) -> Self { let graphics = Graphics::<MyTextures>::new(window).await; MyApp { graphics, rotation: 0., } } fn update(&mut self, dt: f32) { self.rotation += dt; } fn draw(&mut self) { let triangle = Shape::from_triangle() .set_color(Color::GREEN) .apply(GTransform::default().rotate(self.rotation)); self.graphics.add_geometry(triangle.into()); } fn input(&mut self, _event: &WindowEvent) -> bool { false } fn graphics_mut(&mut self) -> &mut Graphics<MyTextures> { &mut self.graphics } fn graphics(&self) -> &Graphics<MyTextures> { &self.graphics } } #[cfg_attr(target_arch = "wasm32", wasm_bindgen(start))] pub async fn start() { ellipsoid::run::<MyTextures, MyApp>().await; }
-
main.rs
use simple_app_readme::start; fn main() { async_std::task::block_on(start()); }
-
将所选默认纹理添加到
assets/textures
目录(在项目根目录中创建),对我来说通常是白色像素有效 -
享受旋转的绿色三角形吧:
请参考提供的乒乓球游戏示例,以更全面地了解Ellipsoid的功能和特性。
许可证
本项目受MIT许可证的许可。
依赖项
约29-66MB
~1M SLoC