Automated Game Mastering for Open World MMORPG
With the code in this repository, you can build the full Narrative Interactive Intelligent Simulator (NI2S) system for Windows (, and Linux, coming soon...); compile NI2S based game services for a variety of target engines, including Unreal Engine, Unity(coming soon...), and Cry Engine(coming soon...); and build tools like NI2S Knowledge and NI2S Frontline. Modify the code in any way you can imagine, and share your changes with others!
We are gathering any available documentation for the entire development process of NI2S. If you're looking for the answer to something, you may want to start in one of these places:
- Read the introductory NI2S Whitepaper.
- Creating Narrative Worlds with NI2S.
- Development Setup.
- Building the GitHub source code.
- NI2S API Reference
If you need more, just ask! Many NI2S developers read the Discussion and Q&A forums on the NI2S Dev Community site.
The NI2S runtime is what implements the distributed simulation model. By design, NI2S requires an implementation of the distributed actor model, so we are using a modified version of dotnet/Orleans specifically designed for narrative simulation.
The main component of the NI2S runtime is the node, which is hosting simulable entities. A group of NI2S nodes should be running as a cluster, for scalability, fault-tolerance, workload distribution and simulation syncronization. The runtime enables entities hosted in the cluster to communicate with each other as if they are within a single, but time-sorted, event queue.
From a more technical point of wiew the changes made to Orleans are related to implement GDESK in the message queue, and composition to distributed actor model.
In addition to the distributed simulation model, the node engine provides a set of entities with predefined framework services, such as narrators, persistence, transactions, streams, and more. See the features section for more detail.
Frontend server clients call entities in the cluster using the client library which automatically manages network communication. Clients can also be co-hosted in the same process with silos for simplicity.
Orleans is compatible with .NET Standard 2.0 and above, running on Windows, Linux, and macOS, in full .NET Framework or .NET Core.
//TODO: Rewrite over time...
bc1qrv2h2kjzp7ycjwrpmlsgnve4xlujw6rc5v96f9 2gbQraAm9ka96CnXpJATF44FHevnWtpWaWyAXQwTzjNU