|Reactive Graph Flow||Application|
- Inexor will be a new first-person shooter game which is based on a new octree-based game engine.
- Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series.
- Inexor will be written from ground up new in C++17 and Rust.
- You can contribute anything you want: code, content, ideas..
- Inexor and all its content is 100% open source!
The (RGF) manages reactive flows based on a graph database. The main interface is GraphQL.
- Semantic: Graph database with entities and relationships as first class citizens
- Reactive: entities and relationships are/can be reactive: If the input has been altered the entity processes its new state
- Interoperable: Use GraphQL for queries and mutations
- Extendable: Built in type system: components, entity types and relation types
- Memory efficient: Rust
- Fast: Rust
- Secure: Rust
About this application
This repository provides the application which results in a binary.
Checkout, compile und run the application
rustup update nightly git clone https://github.com/aschaeffer/inexor-rgf-application.git cd inexor-rgf-application cargo build cargo run
Compile and configure plugins
Checkout and build the plugin
cd .. git clone https://github.com/aschaeffer/inexor-rgf-plugin-mqtt.git cd inexor-rgf-plugin-mqtt cargo build
config/plugins.tomland add a section for the plugin. The name must match the crate name of the plugin. Specify the path to the dynamically linked library. The path can be either absolute or relative to the working directory of the application.
[[plugin]] name = "inexor-rgf-plugin-mqtt" active = true path = "../inexor-rgf-plugin-mqtt/target/debug/libinexor_rgf_plugin_mqtt.so"
- In the section
loggersadd or modify the logger for a specific module
[loggers."inexor_rgf_plugin_mqtt::behaviour::relation::mqtt_subscribes"] level = "debug" appenders = [ "file-plugin-mqtt" ] additive = false
Configure HTTP/GraphQL server
Configure the hostname and port
hostname = "localhost" port = 31415
The most important interface for interaction with the Reactive Graph Flow is GraphQL. The GraphQL interface is useful for
Interaction with other instances (C2S, S2C, S2S, P2P)
- Because of the use of uuids synchronization is possible
- Server admin UI
- Flow-Editor (Create / modify / test flows without being in-game)
- Websites (community, clan, content-repositories, ...)
- Tools (procedural-texture-editor)
- Third-party (export/import from/to third party software)
As a flow designer I can define components which can be used as building block for entities using a GraphQL interface
As a flow designer I can create entities with properties using a GraphQL interface
As a flow designer I can create relations with properties using a GraphQL interface
As a flow designer I can connect and disconnect two properties which data flows from one to the other using a GraphQL interface
As a flow designer I can create flows using a GraphQL interface
The libraries are carefully chosen:
- Dependency Injection: waiter_di
- FRP / Reactive Streams: bidule
- Logging: log4rs
- HTTP Server: actix-web
- GraphQL Server: async-graphql
- Serialization/Deserialization: serde_json
|JetBrains||Special thanks to JetBrains for providing us with CLion licenses!|
|IndraDB||The heart of the graph is the embedded graph database IndraDB: