With The Machinery we want to create a new kind of game engine. The game engine we ourselves would want to use. We know that the story isn’t over once you have picked an engine for your game. To really make your game shine, you need to extend, modify and customize that engine. The Machinery is here for that. Explore the details in our development blog or checkout upcoming features in our Roadmap.
A toolbox of building blocks
The Machinery is completely plugin-based. You can pick and choose the parts you need to customize it to your specific needs. You can extend the engine, and the editor, by writing your own plugins. You can even build completely new applications on top of our API, or embed our code into your existing applications or workflows.
Powerful editing model
The Machinery uses a powerful data model to represent edited assets. This model has built-in support for serialization, streaming, copy/paste, drag-and-drop as well as unlimited undo/redo. It supports an advanced hierarchical prefab model for making derivative object instances and propagating changes. It even has full support for real-time collaboration. Multiple people can work together in the same game project, Google Docs-style. Since all of these features are built into the data model itself, your custom, game-specific data will get them automatically, without you having to write a line of code.
Easy to build tools
The Machinery uses an in-house, lightweight IMGUI framework that sits directly on top of our rendering system. The same UI system is used both by the editor and the runtime, making it possible to run the full editor UI inside a game or in VR. With The Machinery you no longer need watertight boundaries between the editor and the runtime, editing can be done inside the game itself, if you so like.
Using our drawing primitives, it is easy to create custom UI controls. And everything has been heavily optimized to feel snappy and responsive. In fact, the entire editor UI is rendered with just a single draw call.
Modern rendering architecture
The renderer has been designed to take full advantage of modern explicit graphic APIs like Vulkan, DX12 and Metal 2. You can reason explicitly about advanced setups such as multiple GPUs and GPU execution queues. Similar to the rest of the engine, the built-in rendering pipeline is easy to tweak and extend.
All the code in the engine is built based on data-oriented design principles. We focus on data flows and cache friendly memory layouts. All performance critical code is written to run as jobs running on our fiber-based job system, taking full advantage of the parallel processing power of modern CPUs.
The Machinery explicitly aims to be simple, minimalistic and easy to understand. In short, we want to be “hackable”. All our code is written in plain C, a significantly simpler language than modern C++. The entire code base compiles in less than 30 seconds and we support hot-reloading of DLLs, allowing for fast iteration cycles.
Our APIs are exposed as C interfaces, which means they can easily be used from C, C++, D or any other language that has a FFI for calling into C code.
Not just for games
The Machinery is at its heart a game engine, but the flexibility makes it usable far beyond games. Use it to pre-viz movies, products or architecture. Add it as a component of your data pipeline. Embed it to render the viewport of your map application.
The possibilities are endless.