This project houses Kontor, Rome and Wepwawet.
The project should build out of the box. To run properly in IntelliJ, edit the run configuration of the respective main and replace the Kotlin build with a call to the gradle task build. This is neccessary since this project utilizes the serialization compiler plugin.
A network server, client, and cluster node library supporting arbitrary message types and generalized inbound/outbound channels. This project demonstrates some experimental Kotlin features, namely Coroutines and the Serialization Prototype.
Rome provides a simple to implement do and undo timeline. dos may return a carry-over state that can be used by undo to revert the action. The repository supports dropping unneeded actions and setting a soft upper boundary to view previous states and prevent execution of actions in the "future".
Wepwawet uses change tracking to generalize undo operations. They are defined using an embedded DSL. The ultimate goal is to make an out-of-the-box synchronization solution for complex multiplayer games.