@kawa just remembered a time in a web dev class that we were rushed for time, so my team used a little project I'd made a couple years ago for myself for a text based game interface (corruption of champions style, but safe for work).
I had the hardest time trying to explain to my teammates how my engine thing worked - it was basically a state machine. It had no concept of a "room" even. Each "room" was just a function that printed a blurb and had buttons linking to other functions. It worked amazingly but I ended up having to do a lot of the programming of content into the game myself because it took a lot of time to get their heads wrapped around it.
An upshot of my approach was that you could save or restore the game state at literally any time to a serialized JSON file, and you'd get that functionality for free - you could add your own variables and stuff later and they'd be automagically accounted for if you followed the structures I was using when defining new "objects" (collections of variables and functions). But it was just very different than my teammates probably would have thought of doing it. It had no dependencies btw