[−][src]Crate quicksilver
quicksilver
[](https://travis-ci.org/ryanisaacg///! //! //! quicksilver) [](https://deps.rs/repo///! github/ryanisaacg/quicksilver) [](https://gitter.im/quicksilver-rs/Lobby?//! utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
A 2D game framework written in pure Rust, for both the Web and Desktop
A quick example
Create a rust project and add this line to your Cargo.toml
file under [dependencies]
:
quicksilver = "*"
Then replace src/main.rs
with the following (the contents of quicksilver's examples/draw-geometry.rs):
// Draw some multi-colored geometry to the screen extern crate quicksilver; use quicksilver::{ Result, geom::{Circle, Line, Rectangle, Transform, Triangle, Vector}, graphics::{Background::Col, Color}, lifecycle::{Settings, State, Window, run}, }; struct DrawGeometry; impl State for DrawGeometry { fn new() -> Result<DrawGeometry> { Ok(DrawGeometry) } fn draw(&mut self, window: &mut Window) -> Result<()> { window.clear(Color::WHITE)?; window.draw(&Rectangle::new((100, 100), (32, 32)), Col(Color::BLUE)); window.draw_ex(&Rectangle::new((400, 300), (32, 32)), Col(Color::BLUE), Transform::rotate(45), 10); window.draw(&Circle::new((400, 300), 100), Col(Color::GREEN)); window.draw_ex( &Line::new((50, 80),(600, 450)).with_thickness(2.0), Col(Color::RED), Transform::IDENTITY, 5 ); window.draw_ex( &Triangle::new((500, 50), (450, 100), (650, 150)), Col(Color::RED), Transform::rotate(45) * Transform::scale((0.5, 0.5)), 0 ); Ok(()) } } fn main() { run::<DrawGeometry>("Draw Geometry", Vector::new(800, 600), Settings::default()); }
Run this with cargo run
or, if you have the wasm32 toolchain installed, you can build for the web //! //! //! (instructions below).
Learning Quicksilver
A good way to get started with Quicksilver is to [read and run the examples](https://github.com/ryanisaacg///! quicksilver/tree/master/examples) and go through the tutorial modules on docs.rs. If you have any question, feel free to hop onto Gitter or open an issue.
Building and Deploying a Quicksilver application
Quicksilver should always compile and run on the latest stable version of Rust, for both web and desktop.
Make sure to put all your assets in a top-level folder of your crate called static/
. All Quicksilver file //! loading-APIs will expect paths that originate in the static folder, so static/image.png
should be //! //! referenced as image.png
.
Linux dependencies
On Windows and Mac, all you'll need to build Quicksilver is a recent stable version of rustc
and cargo
. A //! few of Quicksilver's dependencies require Linux packages to build, namely libudev
, zlib
, and alsa
. To //! install these on Ubuntu or Debian, run the command sudo apt install libudev-dev zlib1g-dev alsa //! //! //! libasound2-dev
.
Deploying for desktop
If you're deploying for desktop platforms, build in release mode (cargo build --release
)
and copy the executable file produced (found at "target/release/") and any assets you used (image files
etc) and create an archive (on Windows a zip file, on Unix a tar file). You should be able to distribute
this archive with no problems; if there are any, please open an issue.
Deploying for the web
If you're deploying for the web, first make sure you've [installed the cargo web tool](https://github.com///! //! koute/cargo-web). Then use the cargo web deploy
to build your application for distribution (located //! at target/deploy
).
If you want to test your application locally, use cargo web start
and open your favorite browser to the //! //! port it provides.
Optional Features
Quicksilver by default tries to provide all features a 2D application may need, but not all applications need //! these features. The optional features available are collision support (via ncollide2d), font support (via rusttype), gamepad support (via gilrs), saving (via serde_json), complex shape / svg rendering (via lyon), immediate-mode GUIs (via immi), and sounds (via rodio).
Each are enabled by default, but you can [specify which features](https://doc.rust-lang.org/cargo/reference///! specifying-dependencies.html#choosing-features) you actually want to use.
Supported Platforms
The engine is supported on Windows, macOS, Linux, and the web via WebAssembly.
The web is only supported via the wasm32-unknown-unknown
Rust target, not through emscripten.
It might work with emscripten but this is not an ongoing guarantee.
Mobile support would be a future possibility, but likely only through external contributions.
Re-exports
pub use lyon; |
Modules
combinators | Futures |
geom | A 2D geometry module |
graphics | A module to draw 2D graphics in a window It also includes image loading |
input | A collection of polling input structures |
lifecycle | The module that manages control flow of Quicksilver applications |
prelude | A collection of common imports for convenience |
saving | A module for saving / loading application data |
sound | A sound API that allows playing clips at given volumes |
tutorials | The quicksilver tutorials, generated through Rustdoc |
Enums
Error | An error generated by some Quicksilver subsystem |
Traits
Future | Trait for types which are a placeholder of a value that may become available at some later point in time. |
Functions
load_file | Create a Future that loads a file into an owned Vec of bytes |
Type Definitions
Result | A Result that returns either success or a Quicksilver Error |