Dotrix
Náš vlastní open-source 3D engine napsaný v jazyce Rust — modulární, výkonný a vytvořený pro grafiku v reálném čase.
Dotrix je vlastní 3D engine společnosti Löwenware napsaný v jazyce Rust. Jeho název vychází ze slov dot a matrix — základních stavebních kamenů vykreslování. Vyvinuli jsme ho pro naše vlastní herní projekty a zveřejnili jeho zdrojový kód, protože řešení, která vytváříme, mohou být užitečná i dalším.
Proč jsme ho vytvořili
Komerční herní enginy jsou výkonné, ale přinášejí licenční omezení a abstrakční vrstvy, které ne vždy odpovídají našim potřebám. Dotrix nám poskytuje přímou kontrolu nad vykreslovací pipeline, architekturou ECS a podporou platforem.
Pro vývojáře
Dotrix je modulární a navržený pro vývojáře v jazyce Rust, kteří chtějí moderní 3D engine, aniž by opustili ekosystém jazyka Rust. Dokumentaci, příklady a repozitář se zdrojovým kódem najdete na dotrix.rs.
Hlavní přednosti
ECS
Programovací vzor ECS (Entity Component System) umožňuje rychlý a jednoduchý přístup k objektům ve hře. Komponenty mohou obsahovat data popisující entitu i data potřebná k jejímu vykreslování nebo řízení.
Fyzikálně založené vykreslování
Vykreslování řízené GPU
Aby se omezily zbytečné přenosy mezi CPU a GPU, Dotrix používá nepřímá vykreslovací volání. GPU tak má dostatek dat k vykreslení nejen jedné entity, ale celého světa nebo jeho podstatných částí pomocí jediného vykreslovacího volání.
Částice a výpočetní shadery
Multitasking
Veškerá logika v Dotrix je soustředěna do úloh, které může engine paralelně zpracovávat na pozadí. Není třeba ručně řešit jejich uspořádání, plánování ani synchronizaci.
Skybox
Podpora více platforem
Díky tomu, že je Dotrix napsaný v jazyce Rust, je snadno přenositelný a lze ho bez potíží používat v systémech Linux, macOS i Windows.
Terén
Časté dotazy
Proč Rust?
Myšlenka vyzkoušet Rust pro vývoj her se objevila, jakmile jsme tento programovací jazyk začali používat ve vestavěných systémech. Díky modularitě, moderní syntaxi a vestavěným bezpečnostním mechanismům je obecně skvělou volbou pro tak rozsáhlé projekty, jako jsou hry. Díky způsobu, jakým pracuje s datovými typy a generiky, se navíc velmi dobře hodí pro nejrůznější programovací vzory ECS (Entity Component System), které jsme chtěli využít.