Giter Club home page Giter Club logo

sidekick's Introduction

sidekick

2D Vulkan game framework, written entirely in Rust.


Table of Contents


About

sidekick is a free and open-source game framework under the MIT license that allows developers to create stunning 2D video games, prototypes, desktop apps and everything in between. It uses glutin for window context management and rgx as the rendering engine.

sidekick is subject to change as it is actively developed so expect things to break (๐Ÿ˜…).

sidekick is an educational project for learning purposes, feel free to use it in personal and commercial projects, just keep in mind that support is minimal.

Supported platforms:


Features

Current features

  • Window Management
  • Cursor Management
  • Keyboard Input Handling
  • Mouse Input Handling
  • Game Time Management
  • Debugging Tools
  • Basic Shapes Rendering (Line, Triangle, Circle)

Planned features

  • Custom Math & Logic Library
  • Gamepad Input Handling
  • Custom Polygonal Shape Rendering
  • Text Rendering
  • Sprite Rendering
  • Audio Playing
  • Animations
  • 2D Physics
  • 2D Lighting & Shadow
  • Profiling Tools
  • Custom Test Framework
  • And more to be added...

You can always refer to the sidekick project board for more details on features being implement.


Goals and Non-goals

Goals (Order from most important)

  • Intuitive and Accessible.
  • Fast and Easy to get started.
  • Performance.
  • Cross-platform.

Non-goals (some of these might get implemented if heavily requested ๐Ÿค”)

  • 3D Rendering.
  • AAA-level Graphics.
  • GUI Editor.

Contributing

sidekick is completely open to community contribution. Any effort to help expand the scope and capability of the framework is greatly appreciated ๐Ÿค—.

Please make sure that you follow the Rust API Guidelines when making a pull request, just to make the codebase clear and consistent ๐Ÿ˜Š.


Requirements

  • Rust compiler and Cargo package manager, you can download them here.
  • A code editor of your choice.

Getting Started

To create a basic sidekick app:

  1. Create a new project with Cargo using cargo new project-name --bin.

  2. In your Cargo.toml, add:

        [dependencies]
        sidekick = { git = "https://github.com/ThaiDuongVu/sidekick" }
  1. In your main.rs, add:
        use sidekick::app::App;

        fn main() {
            // Create a sidekick app
            let app = App::new();
            
            // Initialize app before first frame update
            // Note: Dynamic environment should be initialized outside of init
            let init = move |app: &mut App| {};
            
            // Update and render game objects every frame
            let update = move |app: &mut App| {};

            // Run app
            app.run(init, update);
        }
  1. Build and run the project with cargo run.

  2. You should see the following window by default:


Tutorials and Documentation

You can refer to the wiki page (whenever it's live ๐Ÿคทโ€โ™‚๏ธ) for an in-depth guide to sidekick.

There are a handful of examples to learn from. To run them simply run the command cargo run --example example-name where example-name is, well, the name of the example to run.


Want a feature that's currently not in sidekick's roadmap?

Well first of all you can implement it yourself (the power of open source ๐Ÿ˜).

You can also go to the issues tab and submit a new issue (remember to add the "feature request" label).

sidekick's People

Contributors

thaiduongvu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

sidekick's Issues

Inconsistent frame rate

A running sidekick app rarely hit the actual target frame rate but rather hover at the 85 to 90 per cent of that target (e.g a game targeting 60fps will usually refresh at 50 to 55fps).

Massive file size

A Sidekick program by default (empty app, no heavy rendering or processing) builds to approximately 3.5GB of storage space (Windows 10).

High CPU usage

A sidekick program by default (empty app, no heavy rendering or processing) uses approximately 25 - 30% of CPU power on idle (Windows 10).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.