-
Notifications
You must be signed in to change notification settings - Fork 1
3D Game Engine
I propose we write a 3D game engine in Rust and verify that the engine is good for writing games by reimplementing an old/existing game in our engine: Quake, Doom, a MOBA, or something else.
Making a game requires a lot of creative decisions: game design, art, etc. I've seen disagreements about the direction of a game cause progress to slow down to a crawl or even a stand-still. The disagreements in a game engine project are less subjective and more technical, making it easier to resolve disagreements, or avoid them in the first place.
Also notice the word art. 3D games require a ton of art and artists to make that art. I'm sure there are a lot more people interested in 3D games in this class than we have good artists (or even access to good artists). By making the proof of concept game be a reimplementation of an existing game we can use those existing assets: levels, 3d models, and textures, and not need any artists.
Why Rust?
Game engines are still one of the places where taking efficiency to the extreme is still important. Rust is low-level, fast, eliminates data races in concurrent programs and prevents a lot of bugs that happen in C and C++ programs. Rust also has ways of improving code reuse over C and C++ through generics and improving on inheritance with traits. It also has a really easy build system and package system. Rust is also supported by Mozilla, who is using it to develop a new rendering engine for Firefox.
The other reason to choose Rust is that there is already a set of libraries for making games written in Rust: Piston. Piston's design is super modular, so we can use it as a starting place and add new features, but also rewrite or replace any pieces we want. It has even been used to write a simple minecraft game client, Hematite.

Another reason to use Rust is that it's first forwards compatible version is coming out this month. Now is the best time to learn Rust: what you learn and code you write will be valid for years in the future. Now is the time for Rust's killer apps to be created, like Ruby on Rails was for Ruby.
The following are possible areas to focus effort on, but none are strictly necessary:
- Rendering and Lighting - Simple shading models all the way up to physically based rendering
- AI - Pathfinding, Hierarchical State Machines, ...
- Entity Component System
- Multithreading and Event Queue
- UI and Menu System
- Level Editor
Trevor Oakes
Peter Anderson
Wyatt Hepler