# Dotrix 3D Game Engine written in Rust (development stage) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT) [![LICENSE](https://img.shields.io/badge/license-apache-blue.svg)](LICENSE-APACHE) [![](https://tokei.rs/b1/github/lowenware/dotrix)](https://github.com/lowenware/dotrix) [![Discord](https://img.shields.io/discord/706575068515532851.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/DrzwBysNRd) [![](https://img.shields.io/badge/lowenware%20-%23FF0000.svg?&style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/channel/UCdriNXRizbBFQhqZefaw44A) [![](https://img.shields.io/badge/lowenware%20-%231DA1F2.svg?&style=for-the-badge&logo=Twitter&logoColor=white)](http://www.twitter.com/lowenware) ## Overview Dotrix has a flat linear ECS (Entity Component System) in its core, designed for fast querying of entities and their components. 1. **Entities** in Dotrix are virtual abstractions, identified by `EntityId` component containing numerical ID. Each entitiy agregates constant number of components. 2. **Components** are regular Rust structures. 3. **Systems** are Rust functions, implementing the core logic of a game. 4. **Services** are Rust objects available through systems, providing some key features or access to global resources, like Assets, Input or Render management. ## Editor Editor application is under development in the separate [branch](https://github.com/lowenware/dotrix/tree/feat/editor) ## Getting started The best place to start is to review examples distributed with the engine. All examples are grouped under [examples/](examples/) folder. Later when API becomes more or less stable we will prepare a Book for a quick start. ## Examples [![Demo Example](https://img.youtube.com/vi/KXOr_KxMNWM/0.jpg)](https://www.youtube.com/watch?v=KXOr_KxMNWM) **Features:** input, skeletal animation, light, terrain, player control ``` cargo run --release --example demo ``` **Features:** Light, UI, camera control ``` cargo run --release --example light ``` **Features:** skeletal animation, light, camera control ``` cargo run --release --example animation ``` **Features:** skybox, camera control ``` cargo run --release --example skybox ``` **Features:** window management ``` cargo run --release --example window ``` ### 3rd Party Assets Following 3rd party assets are being used in examples * [Night SkyBox](https://www.vippng.com/preview/wmRTT_city-skyline-silhouette/) * [Car Model](https://free3d.com/3d-model/cartoon-vehicles-low-poly-cars-free-874937.html) * [Fox Model](https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/Fox) * [Day Skybox](https://opengameart.org/content/elyvisions-skyboxes)