Hey! 😄 I’m using MonoGame in C# to make Upheaval. Everything is kind of roll-your-own. All of the dialogue, descriptions, etc. are written in yaml files, which are parsed into objects, which are processed by a set of functions that look at the current state of the game and pick which lines to show based on that (and often based on some pseudo-random chance). The game logic is in a separate class project: then I have a command line project and a MonoGame project which both reference the class project, so that logic is shared.
I’m happy to answer more questions, I just don’t want to ramble aimlessly for too long! 😅 What other questions do you have? 😊