All Projects → ryanisaacg → Quicksilver

ryanisaacg / Quicksilver

Licence: other
A simple framework for 2D games on desktop and web

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Quicksilver

Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (-60.85%)
Mutual labels:  game-engine, gamedev, wasm
Raylib
A simple and easy-to-use library to enjoy videogames programming
Stars: ✭ 8,169 (+1050.56%)
Mutual labels:  wasm, gamedev, game-engine
Vortice.windows
.NET standard bindings for DirectX, WIC, Direct2D1, XInput, XAudio and X3DAudio
Stars: ✭ 427 (-39.86%)
Mutual labels:  game-engine, gamedev
Macroquad
The cross-platform game engine in Rust.
Stars: ✭ 452 (-36.34%)
Mutual labels:  game-engine, wasm
Anything about game
A wonderful list of Game Development resources.
Stars: ✭ 541 (-23.8%)
Mutual labels:  game-engine, gamedev
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (-43.66%)
Mutual labels:  game-engine, gamedev
Ruby2d
🎮 The Ruby 2D gem
Stars: ✭ 427 (-39.86%)
Mutual labels:  game-engine, gamedev
Tetra
🎮 A simple 2D game framework written in Rust
Stars: ✭ 492 (-30.7%)
Mutual labels:  game-engine, gamedev
Ncine
A cross-platform 2D game engine
Stars: ✭ 372 (-47.61%)
Mutual labels:  game-engine, gamedev
Gamedev libraries
A collection of open source c/c++ libraries for gamedev
Stars: ✭ 679 (-4.37%)
Mutual labels:  game-engine, gamedev
Luxe Alpha
luxe alpha - deprecated, unrelated to the new engine! see the readme or website for details - https://luxeengine.com/
Stars: ✭ 559 (-21.27%)
Mutual labels:  game-engine, gamedev
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (-7.75%)
Mutual labels:  game-engine, gamedev
Game
⚔️ An online JavaScript 2D Medieval RPG.
Stars: ✭ 388 (-45.35%)
Mutual labels:  game-engine, gamedev
Ezengine
An open source game engine in active development
Stars: ✭ 370 (-47.89%)
Mutual labels:  game-engine, gamedev
Rizz
Small C game development framework
Stars: ✭ 428 (-39.72%)
Mutual labels:  game-engine, gamedev
Unity2d Components
A constantly evolving array of Unity C# components for 2D games, including classes for pixel art cameras, events & messaging, saving & loading game data, collision handlers, object pools, and more.
Stars: ✭ 375 (-47.18%)
Mutual labels:  game-engine, gamedev
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-32.68%)
Mutual labels:  game-engine, wasm
Entt
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
Stars: ✭ 6,017 (+747.46%)
Mutual labels:  game-engine, gamedev
Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (-52.82%)
Mutual labels:  game-engine, gamedev
Glide
Game engine for making 2d games on iOS, macOS and tvOS, with practical examples and tutorials
Stars: ✭ 353 (-50.28%)
Mutual labels:  game-engine, gamedev

quicksilver

Quicksilver Logo

Crates.io Docs Status dependency status

A simple 2D game framework written in pure Rust, for both the Web and Desktop

Maintenance Status

I've posted an update on my website about Quicksilver. To keep a long story short: Quicksilver is no longer actively developed. For now I will continue to triage bugs and pull requests and (maybe) fix small bugs.

Alpha Notice

This version of Quicksilver is currently working its way through alpha! There is still work to do on the API and on bugfixes, as well as waiting on an upstream library for audio support. Please feel free to use this version and provide feedback! If you run into bugs or want to give feedback on API decisions, please open an issue.

A quick example

Create a rust project and add this line to your Cargo.toml file under [dependencies]:

quicksilver = "0.4"

Then replace src/main.rs with the following (the contents of quicksilver's examples/01_square.rs):

// Example 1: The Square
// Open a window, and draw a colored square in it
use quicksilver::{
    geom::{Rectangle, Vector},
    graphics::Color,
    run, Graphics, Input, Result, Settings, Window,
};

fn main() {
    run(
        Settings {
            title: "Square Example",
            ..Settings::default()
        },
        app,
    );
}

async fn app(window: Window, mut gfx: Graphics, mut input: Input) -> Result<()> {
    // Clear the screen to a blank, white color
    gfx.clear(Color::WHITE);
    // Paint a blue square with a red outline in the center of our screen
    // It should have a top-left of (350, 100) and a size of (150, 100)
    let rect = Rectangle::new(Vector::new(350.0, 100.0), Vector::new(100.0, 100.0));
    gfx.fill_rect(&rect, Color::BLUE);
    gfx.stroke_rect(&rect, Color::RED);
    // Send the data to be drawn
    gfx.present(&window)?;
    loop {
        while let Some(_) = input.next_event().await {}
    }
}

Learning Quicksilver

A good way to get started with Quicksilver is to read and run the examples which also serve as tutorials. If you have any questions, feel free to open an issue or ask for help in the Rust Community Discord from other Quicksilver users and developers.

Made with Quicksilver

Version 0.4

Version 0.3

Want to add your project? Feel free to open an issue or PR!

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. Then use 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 --features quicksilver/stdweb and open your favorite browser to the port it provides.

wasm-bindgen support

Quicksilver has recently gained experimental support for wasm-bindgen, under the web-sys feature. The workflow is not currently documented here, but it should be the same as using any other library with wasm-bindgen.

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:

Each are enabled by default, but you can specify which features you actually want to use.

Supported Platforms

The engine is supported on Windows, macOS, Linux, and the web via WebAssembly.

Mobile support would be a future possibility, but likely only through external contributions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].