The deep engine aim at being an ECS engine. The engine will be written in Rust.
Find a file
2018-06-01 07:51:32 +02:00
src Clean up repo. 2018-05-04 17:37:13 +02:00
.gitignore Clean up repo. 2018-05-04 17:37:13 +02:00
.gitlab-ci.yml try something, pages not working 2018-05-04 21:26:46 +02:00
Cargo.toml update author email 2018-06-01 07:51:32 +02:00
LICENSE Add license 2017-11-03 10:21:27 +01:00
README.md correct some uncorrectness in the speech 2018-05-08 19:15:09 +02:00

deep-engine

pipeline status

Goal

This engine is as much as a way of learning as a project aiming production. The engine target anyone, whatever their ressources. Therefore, we should support most of the standard open source software (i.e. Blender).

Also, the documentation is a great deal in this project.

We can resume goals as:

  • Documentation: why, how we do things and how to use it
  • Learning: Vulkan, ECS, Rust, etc...
  • Aiming production by small step: we should target usability early to propose the engine and gather feedbacks, even if the engine is crap
  • Allow any person to use it, whatever their ressources (#blender)

In the scope of this engine:

  • Manage scene
  • Render scene
  • Propose an interface to make easy system
  • Popose an interface to make prefab
  • Propose an interface to create component.

Design

The start of all reflexion could relie on the graphic in "Game engine architecture" presented below. Game engine component

The chosen design is ECS.

  • Entity: unique IDs
  • Components: data describing entitu
  • System: where logic lies.

Technologies

Language

I have chose Rust as programming language. Here some arguments:

  • It's low level.
  • Testing is integrated into the compilator.
  • It has a modern syntax.
  • I really love it.
  • The documentation AND the community are great, therefor, help is easy to find.

ECS engine

As create an ECS engine could be really tricky and out of scope, at least for now, we should use SPECS. It provide a solid way of making ECS while being well documented.

Graphic engine

Vulkan seems to be a good choice.

  • Vulkan is explicit, where openGL is implicit.
  • Many game engine already support it: UE4, CryEngine, IDTech 5, etc.
  • Many game support it: Doom, Serious Sam, F1 2017 (god damn, look at this one, it's beautiful).
  • The specifications are open source.
  • It's freaking 2017, use the today tech! All new and shiny (arguable).
  • As mention by more experience developpers on #rust-gamedev, it may be rough on the edges and may be hard to use

As it's Rust implementation, we shall use Vulkano.

Resources Loader

Mathematics

Games and game engines relies heavily on linear algebra. Therefore, we should use or create a library to easily manipulate that. Here are some of the existing library in Rust:

Physics

UI

Scripting

Litterature

Rust

ECS

Graphic

Contributors

  • Mathieu Nivoliez