GithubHelp home page GithubHelp logo

happy-ferret / combustion Goto Github PK

View Code? Open in Web Editor NEW

This project forked from combustion-engine/combustion

0.0 2.0 0.0 120.81 MB

Combustion Game Engine in Rust

Lua 0.01% GLSL 4.53% Rust 94.94% CMake 0.02% C++ 0.03% Cap'n Proto 0.46% Shell 0.01%

combustion's Introduction

Combustion Game Engine

A game engine written in Rust.

Motivation

Because it's fun.

No, really. Rust is the most enjoyable language I've ever worked with, and even a massive undertaking like a game engine is legitimately fun to work on.

Of course, I do intend to make a game on top of this eventually, and perhaps place this engine on my resume.

Work In Progress Warning

This project is a total mess right now. I've been rewriting and refining everything from the bottom up. This message will be removed whenever things get a bit more stable.

Roadmap/Todo List

Currently the engine is in the stages of going from "I got some things working" to "I got things working in an flexible, organized and extensible way".

That is to say, I've been splitting up functionality into crates to simplify each component and to make compiling the engine more incremental.

Completed or Working:

These are either fully working or in a state in which new features can be easily added. Their API is relatively stable.

This does NOT mean all parts are feature-complete. Off the top of my head, animations need to be incorporated somehow.

  • Common utilities (combustion_common crate)
  • Engine protocols (combustion_protocols crate)
  • Asset importing/exporting (combustion_asset crate)

TODO

  • Design an API for the rendering backend
  • Integrate scene graph, asset system and backend into engine core
  • Create a modular shader generation pipeline
  • Rewrite tooling with updated crates
  • Figure out how to best handle animations

Engine Crates

Most parts of the engine have been separated into multiple crates for both organizational purposes and to improve compile times.

All crates beginning with combustion_ are integral parts of the engine. See each crate's README for specific information.


Developing on Windows (slightly outdated already):

Dependencies:
Recommend tools (not required):

Getting Started

  1. Install all the above dependencies, and use Rapid Environment Editor to make sure all the requires programs are in your PATH.
  2. Clone Combustion repository somewhere using git clone --recursive [email protected]:combustion/combustion.git
    • Good idea to enable NTFS compression wherever you clone it.
  3. Open a console window (assuming you've added rustup to your PATH) and run these commands:
    1. rustup toolchain install nightly-x86_64-pc-windows-msvc
    2. rustup component add rust-src
    3. rustup default nightly-x86_64-pc-windows-msvc
  4. Add these paths to your PATH (probably using Rapid Environment Editor)
    • C:\Users\<USER>\.cargo\bin
    • C:\Program Files\CMake\bin
    • Your MSYS2 usr/bin directory
    • If not already added, the Git bin directory
    • The bin directory from the Combustion engine repo.
    • NOTE: Windows does not update the PATH variable for running processes. Cmd prompts and programs must be restarted for PATH changes to take effect.
  5. Crate a new environmental variable named RUST_SRC_PATH
    • Set RUST_SRC_PATH=C:\Users\<USER>\.multirust\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src
      • Or similar
  6. Start up IntelliJ IDEA
    1. Go to Settings -> Plugins -> Browse Repositories -> Manage repositories
    2. Add these repositories:
    3. Go back to Browse Repositories
    4. Install Rust and TOML nightly plugins
    5. Import project from sources
      1. Select Import project from existing sources
      2. Select ONE of the Combustion subcrates, like combustion_protocols, combustion_common, combustion_backend, combustion_core, etc.
        • The Rust plugin only supports a single crate per project, so engine subcrates need to be opened as separate projects.
      3. Do that for all the subcrates you wish to work on. It will initialize an IDEA project in each so they can be reopened normally.
  7. Building LuaJIT
    1. TODO: It's a pain.

Developing on Linux

Although I am trying to write things in a platform agnostic manner, I haven't yet had a good chance to work on anything on Linux.

  • TODO

combustion's People

Contributors

novacrazy avatar

Watchers

 avatar  avatar

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.