A game engine written in Rust.
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.
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.
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.
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)
- 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
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.
- MSVC 2015 with C++ components (Community Edition should work)
- Rapid Environment Editor
- Git
- IntelliJ IDEA
- Jetbrains CLion only if you want to do C++ development
- MSYS2 for *nix command line tools
- CMake
- rustup to actually install Rust
- Sublime Text
- Cmder (Mini version)
- Install all the above dependencies, and use Rapid Environment Editor to make sure all the requires programs are in your
PATH
. - Clone Combustion repository somewhere using
git clone --recursive [email protected]:combustion/combustion.git
- Good idea to enable NTFS compression wherever you clone it.
- Open a console window (assuming you've added
rustup
to yourPATH
) and run these commands:rustup toolchain install nightly-x86_64-pc-windows-msvc
rustup component add rust-src
rustup default nightly-x86_64-pc-windows-msvc
- 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 forPATH
changes to take effect.
- 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
- Set
- Start up IntelliJ IDEA
- Go to Settings -> Plugins -> Browse Repositories -> Manage repositories
- Add these repositories:
- Go back to Browse Repositories
- Install
Rust
andTOML
nightly plugins - Import project from sources
- Select Import project from existing sources
- 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.
- 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.
- Building LuaJIT
- TODO: It's a pain.
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