A safe, fast and cross-platform 2D component-based game framework written in rust

Overview

shura

shura is a safe, fast and cross-platform 2D component-based game framework written in rust. shura helps you to manage big games with a component system, scene managing and its group system. See the features section for all of shura's features.

shura is currently in an early beta version and many features most likely have some issues, so feedback is very welcome.

Getting started

Get started by copying the template. The template includes the library and has some additional config to make sure your game runs on all supported platforms.

If you don't care for other platforms than PC, you can just add the following to your Cargo.toml:

[dependencies]
shura = "*"

A good way to learn shura is through the provided examples or through reading the code documentation.

Features

  • Managing multiple independent scenes.

  • Easy to use component system with a group system to ensure fast manageable 2D games in massive levels

  • Group system that acts like a chunk system to organize components and manage big worlds

  • Built in support for postprocessing of your renders

  • Physics simulations directly implemented into the component system through rapier (feature flag 'physics')

  • Window Management with winit

  • Cross-platform extendable rendering with wgpu

  • Input handling for touch, mouse and keyboard and controller with gilrs (feature flag 'gamepad')

  • Text rendering with wgpu_glyph (feature flag 'text')

  • Audio playback with rodio (feature flag 'audio')

  • Easily create GUI's with egui (feature flag 'gui')

Future features (TODO):

  • Tutorials and in depth documentation

  • Lighting (with rapier2d)

  • Debug grid and complete debug information

  • Create models from rapier2d colliders / bodies

  • Serialization

  • ComponentGroup always active (before you would just add a huge dimension to it)

  • Examples:

    • Computed Sprite

    • Groups

    • Postprocess (Improve)

    • Screenshots and videos

Safety:

The entire engine including the component system is completely without any unsafeties except some data conversion mandatory to pass data to the GPU.

Cross-platform

shura is currently only tested on Windows 10 / 11, Linux, Android and on the web with WASM. macOS and iOS are currently untested, but are likely to work.

All examples are running on said platforms, but not every example has support for mobile.

The template uses run-wasm to run on the web and cargo-apk to run on android.

Android

When compiling for android make sure the following is added in the Cargo.toml:

[lib]
crate-type = ["cdylib"]
path = "src/main.rs"

Run Examples

Checkout some cross-platform examples in the examples directory.

Run a postprocessing example (Located in /examples/postprocessing):

Native:

cargo run --release

Android (See Android) :

cargo apk run --release

Browser (Make sure that hardware acceleration is enabled)

http://3.71.15.62

Or build it yourself:

cargo run-wasm --release --package bunnymark
You might also like...
A generated entity component system 🦎

gecs 🦎 A generated entity component system. The gecs crate provides a compile-time generated, zero-overhead ECS for simulations on a budget. Unlike o

A rollback library that buffers component state. Useful for netcode.

bevy_timewarp Buffer and rollback to states up to a few frames ago, for rollback networking. Doesn't do any networking, just concerned with buffering

A nine slice/patch plugin for bevy ui nodes as single component using a fragment shader.
A nine slice/patch plugin for bevy ui nodes as single component using a fragment shader.

Bevy nine slice/patch Material Plugin Quick and easy auto-scaling nine slice/patch material for bevy ui nodes implemented as Fragment Shader. Features

A small, portable and extensible game framework written in Rust.
A small, portable and extensible game framework written in Rust.

What is This? Crayon is a small, portable and extensible game framework, which loosely inspired by some amazing blogs on bitsquid, molecular and flooo

Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

webview A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Ni

Cross-platform GPU-accelerated viewer for the Mandelbrot set and similar (escape-time) fractals

fractal_viewer A cross-platform, GPU-accelerated viewer for the Mandelbrot Set and related fractals. Try it online! Usage Scroll wheel to zoom, click

Cross-platform (including wasm) persistent key value store plugin for rust games/apps

bevy_pkv bevy_pkv is a cross-platform persistent key value store for rust apps. Use it for storing things like settings, save games etc. Currently, it

Cross platform rendering in Rust
Cross platform rendering in Rust

Miniquad Miniquad is a manifestation of a dream in a world where we do not need a deep dependencies tree and thousands lines of code to draw things wi

A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Owner
Andri
Andri
Creative Coding Framework based on Entity Component System (ECS) written in Rust

creativity creativity is Creative Coding Framework based on Entity Component System (ECS) written in Rust. Key Features TBA Quick Start TBA How To Con

Chris Ohk 9 Nov 6, 2021
A cross platform classic RPG game creator written in Rust.

Eldiron - Classic RPG Creation Create RPGs for every platform with Eldiron. Eldiron v1 will be able to create games similar to the classic Ultima seri

Markus Moenig 164 Jan 2, 2023
This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updates

CSHP This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updat

raizo 6 Jan 28, 2022
Cross-platform game engine in Rust.

Cross-platform game engine in Rust.

Fedor Logachev 1.9k Jan 3, 2023
Neutral cross-platform Rust game template

Rust Game Template Neutral cross-platform Rust game template. Build tool This project uses cargo-make task runner. It's required to build the project.

null 0 Feb 5, 2022
A performant, small and versatile entity component system written in Rust

A performant, zero-dependency ECS library with a nice API written in Rust. Usage # Cargo.toml [dependecies] kiwi-ecs = "1.3" // lib.rs use kiwi_ecs::

Jonas Everaert 9 Nov 18, 2022
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

Victor Winbringer 27 Jan 7, 2023
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
Entity Component System focused on usability and speed.

Shipyard ⚓ Shipyard is an Entity Component System focused on usability and speed. If you have any question or want to follow the development more clos

Dylan Ancel 524 Jan 1, 2023
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021