This was a super fun project building a text RPG engine. My friend and I wanted to create a multiplayer Slack game for our Slack team - he was the brains behind the story and text, and I was the brains behind the code.
The engine supports multiplayer, battles, inventory management, map navigation, conditional branching in the story, amongst other things. All the core code is agnostic from the story - the engine simply requires configuration files for the zones, monsters, items, etc. The engine is also agnostic of where it runs - there is a super thin “adapter” interface that requires functions for loading/saving data, and sending/receiving messages. Example adapters have been supplied for slack, running locally in the terminal (for development), and loading/saving the game state in different places.
Next steps are to write some kind of tool that automates the creation of the configuration files (they can get rather complex and are prone to bugs themselves), as well as some kind of tool for observing and manipulating game state in real time.